ETH Price: $3,374.00 (+2.90%)

Token

Spookies (SPOOK)
 

Overview

Max Total Supply

8,888 SPOOK

Holders

2,626

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
17 SPOOK
0xc55ba66cab0298b3a67e1d0bf6a1613907941b09
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Spookies is a collection of 8888 mega cute and creative ghost collectibles invading the Ethereum blockchain.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SPOOK

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.0;


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


// File @openzeppelin/contracts/token/ERC721/[email protected]

pragma solidity ^0.8.0;


interface IERC721 is IERC165 {
    
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

   
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

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

    
    function balanceOf(address owner) external view returns (uint256 balance);

    
    function ownerOf(uint256 tokenId) external view returns (address owner);

    
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    
    function transferFrom(address from, address to, uint256 tokenId) external;

    
    function approve(address to, uint256 tokenId) external;

    
    function getApproved(uint256 tokenId) external view returns (address operator);

    
    function setApprovalForAll(address operator, bool _approved) external;

   
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}


// File @openzeppelin/contracts/token/ERC721/[email protected]

pragma solidity ^0.8.0;


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


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]

pragma solidity ^0.8.0;


interface IERC721Metadata is IERC721 {

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

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

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


// File @openzeppelin/contracts/utils/[email protected]

pragma solidity ^0.8.0;


library Address {
    
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

   
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

   
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

   
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

   
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

   
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File @openzeppelin/contracts/utils/[email protected]

pragma solidity ^0.8.0;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// File @openzeppelin/contracts/utils/[email protected]


pragma solidity ^0.8.0;

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

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

    
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}


// File @openzeppelin/contracts/utils/introspection/[email protected]


pragma solidity ^0.8.0;


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


// File @openzeppelin/contracts/token/ERC721/[email protected]


pragma solidity ^0.8.0;

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping (uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping (address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping (uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping (address => mapping (address => bool)) private _operatorApprovals;

    
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

   
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

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

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0
            ? string(abi.encodePacked(baseURI, tokenId.toString()))
            : '';
    }

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

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

        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "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 operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

   
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    
    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), 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(_msgSender(), 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 _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.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");

        _beforeTokenTransfer(address(0), to, tokenId);

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

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

   
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

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

        _balances[owner] -= 1;
        delete _owners[tokenId];

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

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

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

    
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;


interface IERC721Enumerable is IERC721 {

    
    function totalSupply() external view returns (uint256);

    
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    
    function tokenByIndex(uint256 index) external view returns (uint256);
}


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;


abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

   
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId
            || super.supportsInterface(interfaceId);
    }

    
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


// File @openzeppelin/contracts/access/[email protected]


pragma solidity ^0.8.0;


abstract contract Ownable is Context {
    address private _owner;

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

   
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

   
    function owner() public view virtual returns (address) {
        return _owner;
    }

    
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// File contracts/SRSC.sol

pragma solidity ^0.8.0;
contract SPOOK is ERC721Enumerable, Ownable {
    uint public constant MAX_SPOOK = 8888;
    string _baseTokenURI;
    bool public paused = true;

    constructor(string memory baseURI) ERC721("Spookies", "SPOOK")  {
        setBaseURI(baseURI);
    }

    modifier saleIsOpen{
        require(totalSupply() < MAX_SPOOK, "Sale end");
        _;
    }

    
    function reserveSPOOK() public onlyOwner {
        uint supply = totalSupply();
        uint i;
        for (i = 0; i < 30; i++) {
            _safeMint(msg.sender, supply + i);
        }
    }


    function mintSPOOK(address _to, uint _count) public payable saleIsOpen {
        if(msg.sender != owner()){
            require(!paused, "Paused");
        }
        require(totalSupply() + _count <= MAX_SPOOK, "Max limit");
        require(totalSupply() < MAX_SPOOK, "Sale end");
        require(_count <= 20, "Exceeds 20");
        require(msg.value >= price(_count), "Value below price");

        for(uint i = 0; i < _count; i++){
            _safeMint(_to, totalSupply());
        }
    }

    function price(uint _count) public view returns (uint256) {
        return 30000000000000000 * _count; 
    }

    function contractURI() public view returns (string memory) {
        return "ipfs://QmYgvNPMzgcN7gjxPbavJLbriw4mctqwqCzirsJAwR6jfZ";
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }
    function setBaseURI(string memory baseURI) public onlyOwner {
        _baseTokenURI = baseURI;
    }

    function walletOfOwner(address _owner) external view returns(uint256[] memory) {
        uint tokenCount = balanceOf(_owner);

        uint256[] memory tokensId = new uint256[](tokenCount);
        for(uint i = 0; i < tokenCount; i++){
            tokensId[i] = tokenOfOwnerByIndex(_owner, i);
        }

        return tokensId;
    }

    function pause(bool val) public onlyOwner {
        paused = val;
    }

    function withdrawAll() public payable onlyOwner {
        require(payable(_msgSender()).send(address(this).balance));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SPOOK","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":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mintSPOOK","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveSPOOK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]

60806040526001600c60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162004581380380620045818339818101604052810190620000529190620003ba565b6040518060400160405280600881526020017f53706f6f6b6965730000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53504f4f4b0000000000000000000000000000000000000000000000000000008152508160009080519060200190620000d692919062000298565b508060019080519060200190620000ef92919062000298565b505050600062000104620001bb60201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001b481620001c360201b60201c565b50620005a5565b600033905090565b620001d3620001bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620001f96200026e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000252576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002499062000441565b60405180910390fd5b80600b90805190602001906200026a92919062000298565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002a69062000511565b90600052602060002090601f016020900481019282620002ca576000855562000316565b82601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b5b80821115620003445760008160009055506001016200032a565b5090565b60006200035f620003598462000497565b62000463565b9050828152602081018484840111156200037857600080fd5b62000385848285620004db565b509392505050565b600082601f8301126200039f57600080fd5b8151620003b184826020860162000348565b91505092915050565b600060208284031215620003cd57600080fd5b600082015167ffffffffffffffff811115620003e857600080fd5b620003f6848285016200038d565b91505092915050565b60006200040e602083620004ca565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600060208201905081810360008301526200045c81620003ff565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200048d576200048c62000576565b5b8060405250919050565b600067ffffffffffffffff821115620004b557620004b462000576565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60005b83811015620004fb578082015181840152602081019050620004de565b838111156200050b576000848401525b50505050565b600060028204905060018216806200052a57607f821691505b6020821081141562000541576200054062000547565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fcc80620005b56000396000f3fe6080604052600436106101b75760003560e01c80635c975abb116100ec57806395d89b411161008a578063c87b56dd11610064578063c87b56dd14610602578063e8a3d4851461063f578063e985e9c51461066a578063f2fde38b146106a7576101b7565b806395d89b4114610585578063a22cb465146105b0578063b88d4fde146105d9576101b7565b8063662817ab116100c6578063662817ab146104fc57806370a0823114610513578063853828b6146105505780638da5cb5b1461055a576101b7565b80635c975abb146104695780636352211e14610494578063651a1169146104d1576101b7565b806326a49e3711610159578063438b630011610133578063438b6300146103aa5780634a6119c1146103e75780634f6ccce71461040357806355f804b314610440576101b7565b806326a49e37146103075780632f745c591461034457806342842e0e14610381576101b7565b8063081812fc11610195578063081812fc1461024d578063095ea7b31461028a57806318160ddd146102b357806323b872dd146102de576101b7565b806301ffc9a7146101bc57806302329a29146101f957806306fdde0314610222575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612cea565b6106d0565b6040516101f0919061377c565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612cc1565b61074a565b005b34801561022e57600080fd5b506102376107e3565b6040516102449190613797565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612d7d565b610875565b60405161028191906136f3565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190612c85565b6108fa565b005b3480156102bf57600080fd5b506102c8610a12565b6040516102d59190613a99565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190612b7f565b610a1f565b005b34801561031357600080fd5b5061032e60048036038101906103299190612d7d565b610a7f565b60405161033b9190613a99565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190612c85565b610a9b565b6040516103789190613a99565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612b7f565b610b40565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612b1a565b610b60565b6040516103de919061375a565b60405180910390f35b61040160048036038101906103fc9190612c85565b610c5a565b005b34801561040f57600080fd5b5061042a60048036038101906104259190612d7d565b610e95565b6040516104379190613a99565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190612d3c565b610f2c565b005b34801561047557600080fd5b5061047e610fc2565b60405161048b919061377c565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612d7d565b610fd5565b6040516104c891906136f3565b60405180910390f35b3480156104dd57600080fd5b506104e6611087565b6040516104f39190613a99565b60405180910390f35b34801561050857600080fd5b5061051161108d565b005b34801561051f57600080fd5b5061053a60048036038101906105359190612b1a565b61114d565b6040516105479190613a99565b60405180910390f35b610558611205565b005b34801561056657600080fd5b5061056f6112c8565b60405161057c91906136f3565b60405180910390f35b34801561059157600080fd5b5061059a6112f2565b6040516105a79190613797565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190612c49565b611384565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190612bce565b611505565b005b34801561060e57600080fd5b5061062960048036038101906106249190612d7d565b611567565b6040516106369190613797565b60405180910390f35b34801561064b57600080fd5b5061065461160e565b6040516106619190613797565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190612b43565b61162e565b60405161069e919061377c565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190612b1a565b6116c2565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061074357506107428261186e565b5b9050919050565b610752611950565b73ffffffffffffffffffffffffffffffffffffffff166107706112c8565b73ffffffffffffffffffffffffffffffffffffffff16146107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90613999565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b6060600080546107f290613d8c565b80601f016020809104026020016040519081016040528092919081815260200182805461081e90613d8c565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b600061088082611958565b6108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690613979565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061090582610fd5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d90613a19565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610995611950565b73ffffffffffffffffffffffffffffffffffffffff1614806109c457506109c3816109be611950565b61162e565b5b610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa906138d9565b60405180910390fd5b610a0d83836119c4565b505050565b6000600880549050905090565b610a30610a2a611950565b82611a7d565b610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613a59565b60405180910390fd5b610a7a838383611b5b565b505050565b600081666a94d74f430000610a949190613c48565b9050919050565b6000610aa68361114d565b8210610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade906137d9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610b5b83838360405180602001604052806000815250611505565b505050565b60606000610b6d8361114d565b905060008167ffffffffffffffff811115610bb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610bdf5781602001602082028036833780820191505090505b50905060005b82811015610c4f57610bf78582610a9b565b828281518110610c30577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080610c4790613dbe565b915050610be5565b508092505050919050565b6122b8610c65610a12565b10610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613959565b60405180910390fd5b610cad6112c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3057600c60009054906101000a900460ff1615610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d26906137b9565b60405180910390fd5b5b6122b881610d3c610a12565b610d469190613bc1565b1115610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613899565b60405180910390fd5b6122b8610d92610a12565b10610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990613959565b60405180910390fd5b6014811115610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90613a39565b60405180910390fd5b610e1f81610a7f565b341015610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906139f9565b60405180910390fd5b60005b81811015610e9057610e7d83610e78610a12565b611db7565b8080610e8890613dbe565b915050610e64565b505050565b6000610e9f610a12565b8210610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790613a79565b60405180910390fd5b60088281548110610f1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610f34611950565b73ffffffffffffffffffffffffffffffffffffffff16610f526112c8565b73ffffffffffffffffffffffffffffffffffffffff1614610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613999565b60405180910390fd5b80600b9080519060200190610fbe92919061293e565b5050565b600c60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590613919565b60405180910390fd5b80915050919050565b6122b881565b611095611950565b73ffffffffffffffffffffffffffffffffffffffff166110b36112c8565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613999565b60405180910390fd5b6000611113610a12565b905060005b601e811015611149576111363382846111319190613bc1565b611db7565b808061114190613dbe565b915050611118565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b5906138f9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120d611950565b73ffffffffffffffffffffffffffffffffffffffff1661122b6112c8565b73ffffffffffffffffffffffffffffffffffffffff1614611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890613999565b60405180910390fd5b611289611950565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050506112c657600080fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461130190613d8c565b80601f016020809104026020016040519081016040528092919081815260200182805461132d90613d8c565b801561137a5780601f1061134f5761010080835404028352916020019161137a565b820191906000526020600020905b81548152906001019060200180831161135d57829003601f168201915b5050505050905090565b61138c611950565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613879565b60405180910390fd5b8060056000611407611950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114b4611950565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114f9919061377c565b60405180910390a35050565b611516611510611950565b83611a7d565b611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c90613a59565b60405180910390fd5b61156184848484611dd5565b50505050565b606061157282611958565b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a8906139d9565b60405180910390fd5b60006115bb611e31565b905060008151116115db5760405180602001604052806000815250611606565b806115e584611ec3565b6040516020016115f69291906136cf565b6040516020818303038152906040525b915050919050565b6060604051806060016040528060358152602001613f6260359139905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116ca611950565b73ffffffffffffffffffffffffffffffffffffffff166116e86112c8565b73ffffffffffffffffffffffffffffffffffffffff161461173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173590613999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613819565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061193957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611949575061194882612070565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a3783610fd5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a8882611958565b611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe906138b9565b60405180910390fd5b6000611ad283610fd5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b4157508373ffffffffffffffffffffffffffffffffffffffff16611b2984610875565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b525750611b51818561162e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b7b82610fd5565b73ffffffffffffffffffffffffffffffffffffffff1614611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906139b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613859565b60405180910390fd5b611c4c8383836120da565b611c576000826119c4565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ca79190613ca2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cfe9190613bc1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611dd18282604051806020016040528060008152506121ee565b5050565b611de0848484611b5b565b611dec84848484612249565b611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e22906137f9565b60405180910390fd5b50505050565b6060600b8054611e4090613d8c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6c90613d8c565b8015611eb95780601f10611e8e57610100808354040283529160200191611eb9565b820191906000526020600020905b815481529060010190602001808311611e9c57829003601f168201915b5050505050905090565b60606000821415611f0b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061206b565b600082905060005b60008214611f3d578080611f2690613dbe565b915050600a82611f369190613c17565b9150611f13565b60008167ffffffffffffffff811115611f7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fb15781602001600182028036833780820191505090505b5090505b6000851461206457600182611fca9190613ca2565b9150600a85611fd99190613e07565b6030611fe59190613bc1565b60f81b818381518110612021577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561205d9190613c17565b9450611fb5565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120e58383836123e0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561212857612123816123e5565b612167565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461216657612165838261242e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121aa576121a58161259b565b6121e9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121e8576121e782826126de565b5b5b505050565b6121f8838361275d565b6122056000848484612249565b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b906137f9565b60405180910390fd5b505050565b600061226a8473ffffffffffffffffffffffffffffffffffffffff1661292b565b156123d3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612293611950565b8786866040518563ffffffff1660e01b81526004016122b5949392919061370e565b602060405180830381600087803b1580156122cf57600080fd5b505af192505050801561230057506040513d601f19601f820116820180604052508101906122fd9190612d13565b60015b612383573d8060008114612330576040519150601f19603f3d011682016040523d82523d6000602084013e612335565b606091505b5060008151141561237b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612372906137f9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123d8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161243b8461114d565b6124459190613ca2565b905060006007600084815260200190815260200160002054905081811461252a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506125af9190613ca2565b9050600060096000848152602001908152602001600020549050600060088381548110612605577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050806008838154811061264d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006126e98361114d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c490613939565b60405180910390fd5b6127d681611958565b15612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d90613839565b60405180910390fd5b612822600083836120da565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128729190613bc1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b82805461294a90613d8c565b90600052602060002090601f01602090048101928261296c57600085556129b3565b82601f1061298557805160ff19168380011785556129b3565b828001600101855582156129b3579182015b828111156129b2578251825591602001919060010190612997565b5b5090506129c091906129c4565b5090565b5b808211156129dd5760008160009055506001016129c5565b5090565b60006129f46129ef84613ae5565b613ab4565b905082815260208101848484011115612a0c57600080fd5b612a17848285613d4a565b509392505050565b6000612a32612a2d84613b15565b613ab4565b905082815260208101848484011115612a4a57600080fd5b612a55848285613d4a565b509392505050565b600081359050612a6c81613f05565b92915050565b600081359050612a8181613f1c565b92915050565b600081359050612a9681613f33565b92915050565b600081519050612aab81613f33565b92915050565b600082601f830112612ac257600080fd5b8135612ad28482602086016129e1565b91505092915050565b600082601f830112612aec57600080fd5b8135612afc848260208601612a1f565b91505092915050565b600081359050612b1481613f4a565b92915050565b600060208284031215612b2c57600080fd5b6000612b3a84828501612a5d565b91505092915050565b60008060408385031215612b5657600080fd5b6000612b6485828601612a5d565b9250506020612b7585828601612a5d565b9150509250929050565b600080600060608486031215612b9457600080fd5b6000612ba286828701612a5d565b9350506020612bb386828701612a5d565b9250506040612bc486828701612b05565b9150509250925092565b60008060008060808587031215612be457600080fd5b6000612bf287828801612a5d565b9450506020612c0387828801612a5d565b9350506040612c1487828801612b05565b925050606085013567ffffffffffffffff811115612c3157600080fd5b612c3d87828801612ab1565b91505092959194509250565b60008060408385031215612c5c57600080fd5b6000612c6a85828601612a5d565b9250506020612c7b85828601612a72565b9150509250929050565b60008060408385031215612c9857600080fd5b6000612ca685828601612a5d565b9250506020612cb785828601612b05565b9150509250929050565b600060208284031215612cd357600080fd5b6000612ce184828501612a72565b91505092915050565b600060208284031215612cfc57600080fd5b6000612d0a84828501612a87565b91505092915050565b600060208284031215612d2557600080fd5b6000612d3384828501612a9c565b91505092915050565b600060208284031215612d4e57600080fd5b600082013567ffffffffffffffff811115612d6857600080fd5b612d7484828501612adb565b91505092915050565b600060208284031215612d8f57600080fd5b6000612d9d84828501612b05565b91505092915050565b6000612db283836136b1565b60208301905092915050565b612dc781613cd6565b82525050565b6000612dd882613b55565b612de28185613b83565b9350612ded83613b45565b8060005b83811015612e1e578151612e058882612da6565b9750612e1083613b76565b925050600181019050612df1565b5085935050505092915050565b612e3481613ce8565b82525050565b6000612e4582613b60565b612e4f8185613b94565b9350612e5f818560208601613d59565b612e6881613ef4565b840191505092915050565b6000612e7e82613b6b565b612e888185613ba5565b9350612e98818560208601613d59565b612ea181613ef4565b840191505092915050565b6000612eb782613b6b565b612ec18185613bb6565b9350612ed1818560208601613d59565b80840191505092915050565b6000612eea600683613ba5565b91507f50617573656400000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f2a602b83613ba5565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000612f90603283613ba5565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612ff6602683613ba5565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061305c601c83613ba5565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b600061309c602483613ba5565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613102601983613ba5565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613142600983613ba5565b91507f4d6178206c696d697400000000000000000000000000000000000000000000006000830152602082019050919050565b6000613182602c83613ba5565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006131e8603883613ba5565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b600061324e602a83613ba5565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006132b4602983613ba5565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061331a602083613ba5565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b600061335a600883613ba5565b91507f53616c6520656e640000000000000000000000000000000000000000000000006000830152602082019050919050565b600061339a602c83613ba5565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613400602083613ba5565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613440602983613ba5565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006134a6602f83613ba5565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b600061350c601183613ba5565b91507f56616c75652062656c6f772070726963650000000000000000000000000000006000830152602082019050919050565b600061354c602183613ba5565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135b2600a83613ba5565b91507f45786365656473203230000000000000000000000000000000000000000000006000830152602082019050919050565b60006135f2603183613ba5565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613658602c83613ba5565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6136ba81613d40565b82525050565b6136c981613d40565b82525050565b60006136db8285612eac565b91506136e78284612eac565b91508190509392505050565b60006020820190506137086000830184612dbe565b92915050565b60006080820190506137236000830187612dbe565b6137306020830186612dbe565b61373d60408301856136c0565b818103606083015261374f8184612e3a565b905095945050505050565b600060208201905081810360008301526137748184612dcd565b905092915050565b60006020820190506137916000830184612e2b565b92915050565b600060208201905081810360008301526137b18184612e73565b905092915050565b600060208201905081810360008301526137d281612edd565b9050919050565b600060208201905081810360008301526137f281612f1d565b9050919050565b6000602082019050818103600083015261381281612f83565b9050919050565b6000602082019050818103600083015261383281612fe9565b9050919050565b600060208201905081810360008301526138528161304f565b9050919050565b600060208201905081810360008301526138728161308f565b9050919050565b60006020820190508181036000830152613892816130f5565b9050919050565b600060208201905081810360008301526138b281613135565b9050919050565b600060208201905081810360008301526138d281613175565b9050919050565b600060208201905081810360008301526138f2816131db565b9050919050565b6000602082019050818103600083015261391281613241565b9050919050565b60006020820190508181036000830152613932816132a7565b9050919050565b600060208201905081810360008301526139528161330d565b9050919050565b600060208201905081810360008301526139728161334d565b9050919050565b600060208201905081810360008301526139928161338d565b9050919050565b600060208201905081810360008301526139b2816133f3565b9050919050565b600060208201905081810360008301526139d281613433565b9050919050565b600060208201905081810360008301526139f281613499565b9050919050565b60006020820190508181036000830152613a12816134ff565b9050919050565b60006020820190508181036000830152613a328161353f565b9050919050565b60006020820190508181036000830152613a52816135a5565b9050919050565b60006020820190508181036000830152613a72816135e5565b9050919050565b60006020820190508181036000830152613a928161364b565b9050919050565b6000602082019050613aae60008301846136c0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613adb57613ada613ec5565b5b8060405250919050565b600067ffffffffffffffff821115613b0057613aff613ec5565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613b3057613b2f613ec5565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613bcc82613d40565b9150613bd783613d40565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0c57613c0b613e38565b5b828201905092915050565b6000613c2282613d40565b9150613c2d83613d40565b925082613c3d57613c3c613e67565b5b828204905092915050565b6000613c5382613d40565b9150613c5e83613d40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9757613c96613e38565b5b828202905092915050565b6000613cad82613d40565b9150613cb883613d40565b925082821015613ccb57613cca613e38565b5b828203905092915050565b6000613ce182613d20565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613d77578082015181840152602081019050613d5c565b83811115613d86576000848401525b50505050565b60006002820490506001821680613da457607f821691505b60208210811415613db857613db7613e96565b5b50919050565b6000613dc982613d40565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613dfc57613dfb613e38565b5b600182019050919050565b6000613e1282613d40565b9150613e1d83613d40565b925082613e2d57613e2c613e67565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613f0e81613cd6565b8114613f1957600080fd5b50565b613f2581613ce8565b8114613f3057600080fd5b50565b613f3c81613cf4565b8114613f4757600080fd5b50565b613f5381613d40565b8114613f5e57600080fd5b5056fe697066733a2f2f516d5967764e504d7a67634e37676a78506261764a4c62726977346d6374717771437a6972734a417752366a665aa26469706673582212206b31e66ae659af9d72440470618efef65a17acfebaf69e5b9fd8cb9ec008600b64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101b75760003560e01c80635c975abb116100ec57806395d89b411161008a578063c87b56dd11610064578063c87b56dd14610602578063e8a3d4851461063f578063e985e9c51461066a578063f2fde38b146106a7576101b7565b806395d89b4114610585578063a22cb465146105b0578063b88d4fde146105d9576101b7565b8063662817ab116100c6578063662817ab146104fc57806370a0823114610513578063853828b6146105505780638da5cb5b1461055a576101b7565b80635c975abb146104695780636352211e14610494578063651a1169146104d1576101b7565b806326a49e3711610159578063438b630011610133578063438b6300146103aa5780634a6119c1146103e75780634f6ccce71461040357806355f804b314610440576101b7565b806326a49e37146103075780632f745c591461034457806342842e0e14610381576101b7565b8063081812fc11610195578063081812fc1461024d578063095ea7b31461028a57806318160ddd146102b357806323b872dd146102de576101b7565b806301ffc9a7146101bc57806302329a29146101f957806306fdde0314610222575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612cea565b6106d0565b6040516101f0919061377c565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612cc1565b61074a565b005b34801561022e57600080fd5b506102376107e3565b6040516102449190613797565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612d7d565b610875565b60405161028191906136f3565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190612c85565b6108fa565b005b3480156102bf57600080fd5b506102c8610a12565b6040516102d59190613a99565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190612b7f565b610a1f565b005b34801561031357600080fd5b5061032e60048036038101906103299190612d7d565b610a7f565b60405161033b9190613a99565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190612c85565b610a9b565b6040516103789190613a99565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612b7f565b610b40565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612b1a565b610b60565b6040516103de919061375a565b60405180910390f35b61040160048036038101906103fc9190612c85565b610c5a565b005b34801561040f57600080fd5b5061042a60048036038101906104259190612d7d565b610e95565b6040516104379190613a99565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190612d3c565b610f2c565b005b34801561047557600080fd5b5061047e610fc2565b60405161048b919061377c565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612d7d565b610fd5565b6040516104c891906136f3565b60405180910390f35b3480156104dd57600080fd5b506104e6611087565b6040516104f39190613a99565b60405180910390f35b34801561050857600080fd5b5061051161108d565b005b34801561051f57600080fd5b5061053a60048036038101906105359190612b1a565b61114d565b6040516105479190613a99565b60405180910390f35b610558611205565b005b34801561056657600080fd5b5061056f6112c8565b60405161057c91906136f3565b60405180910390f35b34801561059157600080fd5b5061059a6112f2565b6040516105a79190613797565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190612c49565b611384565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190612bce565b611505565b005b34801561060e57600080fd5b5061062960048036038101906106249190612d7d565b611567565b6040516106369190613797565b60405180910390f35b34801561064b57600080fd5b5061065461160e565b6040516106619190613797565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190612b43565b61162e565b60405161069e919061377c565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190612b1a565b6116c2565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061074357506107428261186e565b5b9050919050565b610752611950565b73ffffffffffffffffffffffffffffffffffffffff166107706112c8565b73ffffffffffffffffffffffffffffffffffffffff16146107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90613999565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b6060600080546107f290613d8c565b80601f016020809104026020016040519081016040528092919081815260200182805461081e90613d8c565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b600061088082611958565b6108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690613979565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061090582610fd5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d90613a19565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610995611950565b73ffffffffffffffffffffffffffffffffffffffff1614806109c457506109c3816109be611950565b61162e565b5b610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa906138d9565b60405180910390fd5b610a0d83836119c4565b505050565b6000600880549050905090565b610a30610a2a611950565b82611a7d565b610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613a59565b60405180910390fd5b610a7a838383611b5b565b505050565b600081666a94d74f430000610a949190613c48565b9050919050565b6000610aa68361114d565b8210610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade906137d9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610b5b83838360405180602001604052806000815250611505565b505050565b60606000610b6d8361114d565b905060008167ffffffffffffffff811115610bb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610bdf5781602001602082028036833780820191505090505b50905060005b82811015610c4f57610bf78582610a9b565b828281518110610c30577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080610c4790613dbe565b915050610be5565b508092505050919050565b6122b8610c65610a12565b10610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613959565b60405180910390fd5b610cad6112c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3057600c60009054906101000a900460ff1615610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d26906137b9565b60405180910390fd5b5b6122b881610d3c610a12565b610d469190613bc1565b1115610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613899565b60405180910390fd5b6122b8610d92610a12565b10610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990613959565b60405180910390fd5b6014811115610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90613a39565b60405180910390fd5b610e1f81610a7f565b341015610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906139f9565b60405180910390fd5b60005b81811015610e9057610e7d83610e78610a12565b611db7565b8080610e8890613dbe565b915050610e64565b505050565b6000610e9f610a12565b8210610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790613a79565b60405180910390fd5b60088281548110610f1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610f34611950565b73ffffffffffffffffffffffffffffffffffffffff16610f526112c8565b73ffffffffffffffffffffffffffffffffffffffff1614610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613999565b60405180910390fd5b80600b9080519060200190610fbe92919061293e565b5050565b600c60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590613919565b60405180910390fd5b80915050919050565b6122b881565b611095611950565b73ffffffffffffffffffffffffffffffffffffffff166110b36112c8565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613999565b60405180910390fd5b6000611113610a12565b905060005b601e811015611149576111363382846111319190613bc1565b611db7565b808061114190613dbe565b915050611118565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b5906138f9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120d611950565b73ffffffffffffffffffffffffffffffffffffffff1661122b6112c8565b73ffffffffffffffffffffffffffffffffffffffff1614611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890613999565b60405180910390fd5b611289611950565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050506112c657600080fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461130190613d8c565b80601f016020809104026020016040519081016040528092919081815260200182805461132d90613d8c565b801561137a5780601f1061134f5761010080835404028352916020019161137a565b820191906000526020600020905b81548152906001019060200180831161135d57829003601f168201915b5050505050905090565b61138c611950565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613879565b60405180910390fd5b8060056000611407611950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114b4611950565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114f9919061377c565b60405180910390a35050565b611516611510611950565b83611a7d565b611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c90613a59565b60405180910390fd5b61156184848484611dd5565b50505050565b606061157282611958565b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a8906139d9565b60405180910390fd5b60006115bb611e31565b905060008151116115db5760405180602001604052806000815250611606565b806115e584611ec3565b6040516020016115f69291906136cf565b6040516020818303038152906040525b915050919050565b6060604051806060016040528060358152602001613f6260359139905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116ca611950565b73ffffffffffffffffffffffffffffffffffffffff166116e86112c8565b73ffffffffffffffffffffffffffffffffffffffff161461173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173590613999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613819565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061193957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611949575061194882612070565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a3783610fd5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a8882611958565b611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe906138b9565b60405180910390fd5b6000611ad283610fd5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b4157508373ffffffffffffffffffffffffffffffffffffffff16611b2984610875565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b525750611b51818561162e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b7b82610fd5565b73ffffffffffffffffffffffffffffffffffffffff1614611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906139b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613859565b60405180910390fd5b611c4c8383836120da565b611c576000826119c4565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ca79190613ca2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cfe9190613bc1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611dd18282604051806020016040528060008152506121ee565b5050565b611de0848484611b5b565b611dec84848484612249565b611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e22906137f9565b60405180910390fd5b50505050565b6060600b8054611e4090613d8c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6c90613d8c565b8015611eb95780601f10611e8e57610100808354040283529160200191611eb9565b820191906000526020600020905b815481529060010190602001808311611e9c57829003601f168201915b5050505050905090565b60606000821415611f0b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061206b565b600082905060005b60008214611f3d578080611f2690613dbe565b915050600a82611f369190613c17565b9150611f13565b60008167ffffffffffffffff811115611f7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fb15781602001600182028036833780820191505090505b5090505b6000851461206457600182611fca9190613ca2565b9150600a85611fd99190613e07565b6030611fe59190613bc1565b60f81b818381518110612021577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561205d9190613c17565b9450611fb5565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120e58383836123e0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561212857612123816123e5565b612167565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461216657612165838261242e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121aa576121a58161259b565b6121e9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121e8576121e782826126de565b5b5b505050565b6121f8838361275d565b6122056000848484612249565b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b906137f9565b60405180910390fd5b505050565b600061226a8473ffffffffffffffffffffffffffffffffffffffff1661292b565b156123d3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612293611950565b8786866040518563ffffffff1660e01b81526004016122b5949392919061370e565b602060405180830381600087803b1580156122cf57600080fd5b505af192505050801561230057506040513d601f19601f820116820180604052508101906122fd9190612d13565b60015b612383573d8060008114612330576040519150601f19603f3d011682016040523d82523d6000602084013e612335565b606091505b5060008151141561237b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612372906137f9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123d8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161243b8461114d565b6124459190613ca2565b905060006007600084815260200190815260200160002054905081811461252a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506125af9190613ca2565b9050600060096000848152602001908152602001600020549050600060088381548110612605577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050806008838154811061264d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806126c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006126e98361114d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c490613939565b60405180910390fd5b6127d681611958565b15612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d90613839565b60405180910390fd5b612822600083836120da565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128729190613bc1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b82805461294a90613d8c565b90600052602060002090601f01602090048101928261296c57600085556129b3565b82601f1061298557805160ff19168380011785556129b3565b828001600101855582156129b3579182015b828111156129b2578251825591602001919060010190612997565b5b5090506129c091906129c4565b5090565b5b808211156129dd5760008160009055506001016129c5565b5090565b60006129f46129ef84613ae5565b613ab4565b905082815260208101848484011115612a0c57600080fd5b612a17848285613d4a565b509392505050565b6000612a32612a2d84613b15565b613ab4565b905082815260208101848484011115612a4a57600080fd5b612a55848285613d4a565b509392505050565b600081359050612a6c81613f05565b92915050565b600081359050612a8181613f1c565b92915050565b600081359050612a9681613f33565b92915050565b600081519050612aab81613f33565b92915050565b600082601f830112612ac257600080fd5b8135612ad28482602086016129e1565b91505092915050565b600082601f830112612aec57600080fd5b8135612afc848260208601612a1f565b91505092915050565b600081359050612b1481613f4a565b92915050565b600060208284031215612b2c57600080fd5b6000612b3a84828501612a5d565b91505092915050565b60008060408385031215612b5657600080fd5b6000612b6485828601612a5d565b9250506020612b7585828601612a5d565b9150509250929050565b600080600060608486031215612b9457600080fd5b6000612ba286828701612a5d565b9350506020612bb386828701612a5d565b9250506040612bc486828701612b05565b9150509250925092565b60008060008060808587031215612be457600080fd5b6000612bf287828801612a5d565b9450506020612c0387828801612a5d565b9350506040612c1487828801612b05565b925050606085013567ffffffffffffffff811115612c3157600080fd5b612c3d87828801612ab1565b91505092959194509250565b60008060408385031215612c5c57600080fd5b6000612c6a85828601612a5d565b9250506020612c7b85828601612a72565b9150509250929050565b60008060408385031215612c9857600080fd5b6000612ca685828601612a5d565b9250506020612cb785828601612b05565b9150509250929050565b600060208284031215612cd357600080fd5b6000612ce184828501612a72565b91505092915050565b600060208284031215612cfc57600080fd5b6000612d0a84828501612a87565b91505092915050565b600060208284031215612d2557600080fd5b6000612d3384828501612a9c565b91505092915050565b600060208284031215612d4e57600080fd5b600082013567ffffffffffffffff811115612d6857600080fd5b612d7484828501612adb565b91505092915050565b600060208284031215612d8f57600080fd5b6000612d9d84828501612b05565b91505092915050565b6000612db283836136b1565b60208301905092915050565b612dc781613cd6565b82525050565b6000612dd882613b55565b612de28185613b83565b9350612ded83613b45565b8060005b83811015612e1e578151612e058882612da6565b9750612e1083613b76565b925050600181019050612df1565b5085935050505092915050565b612e3481613ce8565b82525050565b6000612e4582613b60565b612e4f8185613b94565b9350612e5f818560208601613d59565b612e6881613ef4565b840191505092915050565b6000612e7e82613b6b565b612e888185613ba5565b9350612e98818560208601613d59565b612ea181613ef4565b840191505092915050565b6000612eb782613b6b565b612ec18185613bb6565b9350612ed1818560208601613d59565b80840191505092915050565b6000612eea600683613ba5565b91507f50617573656400000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f2a602b83613ba5565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000612f90603283613ba5565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612ff6602683613ba5565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061305c601c83613ba5565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b600061309c602483613ba5565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613102601983613ba5565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613142600983613ba5565b91507f4d6178206c696d697400000000000000000000000000000000000000000000006000830152602082019050919050565b6000613182602c83613ba5565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006131e8603883613ba5565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b600061324e602a83613ba5565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006132b4602983613ba5565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061331a602083613ba5565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b600061335a600883613ba5565b91507f53616c6520656e640000000000000000000000000000000000000000000000006000830152602082019050919050565b600061339a602c83613ba5565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613400602083613ba5565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613440602983613ba5565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006134a6602f83613ba5565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b600061350c601183613ba5565b91507f56616c75652062656c6f772070726963650000000000000000000000000000006000830152602082019050919050565b600061354c602183613ba5565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135b2600a83613ba5565b91507f45786365656473203230000000000000000000000000000000000000000000006000830152602082019050919050565b60006135f2603183613ba5565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613658602c83613ba5565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6136ba81613d40565b82525050565b6136c981613d40565b82525050565b60006136db8285612eac565b91506136e78284612eac565b91508190509392505050565b60006020820190506137086000830184612dbe565b92915050565b60006080820190506137236000830187612dbe565b6137306020830186612dbe565b61373d60408301856136c0565b818103606083015261374f8184612e3a565b905095945050505050565b600060208201905081810360008301526137748184612dcd565b905092915050565b60006020820190506137916000830184612e2b565b92915050565b600060208201905081810360008301526137b18184612e73565b905092915050565b600060208201905081810360008301526137d281612edd565b9050919050565b600060208201905081810360008301526137f281612f1d565b9050919050565b6000602082019050818103600083015261381281612f83565b9050919050565b6000602082019050818103600083015261383281612fe9565b9050919050565b600060208201905081810360008301526138528161304f565b9050919050565b600060208201905081810360008301526138728161308f565b9050919050565b60006020820190508181036000830152613892816130f5565b9050919050565b600060208201905081810360008301526138b281613135565b9050919050565b600060208201905081810360008301526138d281613175565b9050919050565b600060208201905081810360008301526138f2816131db565b9050919050565b6000602082019050818103600083015261391281613241565b9050919050565b60006020820190508181036000830152613932816132a7565b9050919050565b600060208201905081810360008301526139528161330d565b9050919050565b600060208201905081810360008301526139728161334d565b9050919050565b600060208201905081810360008301526139928161338d565b9050919050565b600060208201905081810360008301526139b2816133f3565b9050919050565b600060208201905081810360008301526139d281613433565b9050919050565b600060208201905081810360008301526139f281613499565b9050919050565b60006020820190508181036000830152613a12816134ff565b9050919050565b60006020820190508181036000830152613a328161353f565b9050919050565b60006020820190508181036000830152613a52816135a5565b9050919050565b60006020820190508181036000830152613a72816135e5565b9050919050565b60006020820190508181036000830152613a928161364b565b9050919050565b6000602082019050613aae60008301846136c0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613adb57613ada613ec5565b5b8060405250919050565b600067ffffffffffffffff821115613b0057613aff613ec5565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613b3057613b2f613ec5565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613bcc82613d40565b9150613bd783613d40565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0c57613c0b613e38565b5b828201905092915050565b6000613c2282613d40565b9150613c2d83613d40565b925082613c3d57613c3c613e67565b5b828204905092915050565b6000613c5382613d40565b9150613c5e83613d40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9757613c96613e38565b5b828202905092915050565b6000613cad82613d40565b9150613cb883613d40565b925082821015613ccb57613cca613e38565b5b828203905092915050565b6000613ce182613d20565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613d77578082015181840152602081019050613d5c565b83811115613d86576000848401525b50505050565b60006002820490506001821680613da457607f821691505b60208210811415613db857613db7613e96565b5b50919050565b6000613dc982613d40565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613dfc57613dfb613e38565b5b600182019050919050565b6000613e1282613d40565b9150613e1d83613d40565b925082613e2d57613e2c613e67565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613f0e81613cd6565b8114613f1957600080fd5b50565b613f2581613ce8565b8114613f3057600080fd5b50565b613f3c81613cf4565b8114613f4757600080fd5b50565b613f5381613d40565b8114613f5e57600080fd5b5056fe697066733a2f2f516d5967764e504d7a67634e37676a78506261764a4c62726977346d6374717771437a6972734a417752366a665aa26469706673582212206b31e66ae659af9d72440470618efef65a17acfebaf69e5b9fd8cb9ec008600b64736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI (string):

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22619:2156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17678:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24566:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10300:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11424:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11013:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18199:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23717:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17929:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12464:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24214:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23204:505;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18326:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24104:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22741:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10047:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22670:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22995:199;;;;;;;;;;;;;:::i;:::-;;9826:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24647:125;;;:::i;:::-;;22076:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10414:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11659:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12629:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10532:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23836:140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11967:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22311:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17678:237;17780:4;17819:35;17804:50;;;:11;:50;;;;:103;;;;17871:36;17895:11;17871:23;:36::i;:::-;17804:103;17797:110;;17678:237;;;:::o;24566:73::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24628:3:::1;24619:6;;:12;;;;;;;;;;;;;;;;;;24566:73:::0;:::o;10300:100::-;10354:13;10387:5;10380:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10300:100;:::o;11424:221::-;11500:7;11528:16;11536:7;11528;:16::i;:::-;11520:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11613:15;:24;11629:7;11613:24;;;;;;;;;;;;;;;;;;;;;11606:31;;11424:221;;;:::o;11013:397::-;11094:13;11110:23;11125:7;11110:14;:23::i;:::-;11094:39;;11158:5;11152:11;;:2;:11;;;;11144:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11238:5;11222:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;11247:37;11264:5;11271:12;:10;:12::i;:::-;11247:16;:37::i;:::-;11222:62;11214:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;11381:21;11390:2;11394:7;11381:8;:21::i;:::-;11013:397;;;:::o;18199:113::-;18260:7;18287:10;:17;;;;18280:24;;18199:113;:::o;12145:305::-;12306:41;12325:12;:10;:12::i;:::-;12339:7;12306:18;:41::i;:::-;12298:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12414:28;12424:4;12430:2;12434:7;12414:9;:28::i;:::-;12145:305;;;:::o;23717:111::-;23766:7;23813:6;23793:17;:26;;;;:::i;:::-;23786:33;;23717:111;;;:::o;17929:256::-;18026:7;18062:23;18079:5;18062:16;:23::i;:::-;18054:5;:31;18046:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18151:12;:19;18164:5;18151:19;;;;;;;;;;;;;;;:26;18171:5;18151:26;;;;;;;;;;;;18144:33;;17929:256;;;;:::o;12464:151::-;12568:39;12585:4;12591:2;12595:7;12568:39;;;;;;;;;;;;:16;:39::i;:::-;12464:151;;;:::o;24214:344::-;24275:16;24304:15;24322:17;24332:6;24322:9;:17::i;:::-;24304:35;;24352:25;24394:10;24380:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24352:53;;24420:6;24416:107;24436:10;24432:1;:14;24416:107;;;24481:30;24501:6;24509:1;24481:19;:30::i;:::-;24467:8;24476:1;24467:11;;;;;;;;;;;;;;;;;;;;;:44;;;;;24448:3;;;;;:::i;:::-;;;;24416:107;;;;24542:8;24535:15;;;;24214:344;;;:::o;23204:505::-;22703:4;22923:13;:11;:13::i;:::-;:25;22915:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23303:7:::1;:5;:7::i;:::-;23289:21;;:10;:21;;;23286:78;;23335:6;;;;;;;;;;;23334:7;23326:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;23286:78;22703:4;23398:6;23382:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:35;;23374:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22703:4;23450:13;:11;:13::i;:::-;:25;23442:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23517:2;23507:6;:12;;23499:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;23566:13;23572:6;23566:5;:13::i;:::-;23553:9;:26;;23545:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23618:6;23614:88;23634:6;23630:1;:10;23614:88;;;23661:29;23671:3;23676:13;:11;:13::i;:::-;23661:9;:29::i;:::-;23642:3;;;;;:::i;:::-;;;;23614:88;;;;23204:505:::0;;:::o;18326:233::-;18401:7;18437:30;:28;:30::i;:::-;18429:5;:38;18421:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18534:10;18545:5;18534:17;;;;;;;;;;;;;;;;;;;;;;;;18527:24;;18326:233;;;:::o;24104:102::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24191:7:::1;24175:13;:23;;;;;;;;;;;;:::i;:::-;;24104:102:::0;:::o;22741:25::-;;;;;;;;;;;;;:::o;10047:239::-;10119:7;10139:13;10155:7;:16;10163:7;10155:16;;;;;;;;;;;;;;;;;;;;;10139:32;;10207:1;10190:19;;:5;:19;;;;10182:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10273:5;10266:12;;;10047:239;;;:::o;22670:37::-;22703:4;22670:37;:::o;22995:199::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23047:11:::1;23061:13;:11;:13::i;:::-;23047:27;;23085:6;23102:85;23118:2;23114:1;:6;23102:85;;;23142:33;23152:10;23173:1;23164:6;:10;;;;:::i;:::-;23142:9;:33::i;:::-;23122:3;;;;;:::i;:::-;;;;23102:85;;;22288:1;;22995:199::o:0;9826:208::-;9898:7;9943:1;9926:19;;:5;:19;;;;9918:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10010:9;:16;10020:5;10010:16;;;;;;;;;;;;;;;;10003:23;;9826:208;;;:::o;24647:125::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24722:12:::1;:10;:12::i;:::-;24714:26;;:49;24741:21;24714:49;;;;;;;;;;;;;;;;;;;;;;;24706:58;;;::::0;::::1;;24647:125::o:0;22076:87::-;22122:7;22149:6;;;;;;;;;;;22142:13;;22076:87;:::o;10414:104::-;10470:13;10503:7;10496:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10414:104;:::o;11659:295::-;11774:12;:10;:12::i;:::-;11762:24;;:8;:24;;;;11754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:8;11829:18;:32;11848:12;:10;:12::i;:::-;11829:32;;;;;;;;;;;;;;;:42;11862:8;11829:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;11927:8;11898:48;;11913:12;:10;:12::i;:::-;11898:48;;;11937:8;11898:48;;;;;;:::i;:::-;;;;;;;;11659:295;;:::o;12629:285::-;12761:41;12780:12;:10;:12::i;:::-;12794:7;12761:18;:41::i;:::-;12753:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12867:39;12881:4;12887:2;12891:7;12900:5;12867:13;:39::i;:::-;12629:285;;;;:::o;10532:360::-;10605:13;10639:16;10647:7;10639;:16::i;:::-;10631:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10720:21;10744:10;:8;:10::i;:::-;10720:34;;10796:1;10778:7;10772:21;:25;:112;;;;;;;;;;;;;;;;;10837:7;10846:18;:7;:16;:18::i;:::-;10820:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10772:112;10765:119;;;10532:360;;;:::o;23836:140::-;23880:13;23906:62;;;;;;;;;;;;;;;;;;;23836:140;:::o;11967:164::-;12064:4;12088:18;:25;12107:5;12088:25;;;;;;;;;;;;;;;:35;12114:8;12088:35;;;;;;;;;;;;;;;;;;;;;;;;;12081:42;;11967:164;;;;:::o;22311:244::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22420:1:::1;22400:22;;:8;:22;;;;22392:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22510:8;22481:38;;22502:6;;;;;;;;;;;22481:38;;;;;;;;;;;;22539:8;22530:6;;:17;;;;;;;;;;;;;;;;;;22311:244:::0;:::o;9520:292::-;9622:4;9661:25;9646:40;;;:11;:40;;;;:105;;;;9718:33;9703:48;;;:11;:48;;;;9646:105;:158;;;;9768:36;9792:11;9768:23;:36::i;:::-;9646:158;9639:165;;9520:292;;;:::o;6356:98::-;6409:7;6436:10;6429:17;;6356:98;:::o;13213:127::-;13278:4;13330:1;13302:30;;:7;:16;13310:7;13302:16;;;;;;;;;;;;;;;;;;;;;:30;;;;13295:37;;13213:127;;;:::o;15430:174::-;15532:2;15505:15;:24;15521:7;15505:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;15588:7;15584:2;15550:46;;15559:23;15574:7;15559:14;:23::i;:::-;15550:46;;;;;;;;;;;;15430:174;;:::o;13354:348::-;13447:4;13472:16;13480:7;13472;:16::i;:::-;13464:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13548:13;13564:23;13579:7;13564:14;:23::i;:::-;13548:39;;13617:5;13606:16;;:7;:16;;;:51;;;;13650:7;13626:31;;:20;13638:7;13626:11;:20::i;:::-;:31;;;13606:51;:87;;;;13661:32;13678:5;13685:7;13661:16;:32::i;:::-;13606:87;13598:96;;;13354:348;;;;:::o;14873:544::-;14998:4;14971:31;;:23;14986:7;14971:14;:23::i;:::-;:31;;;14963:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15081:1;15067:16;;:2;:16;;;;15059:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15137:39;15158:4;15164:2;15168:7;15137:20;:39::i;:::-;15241:29;15258:1;15262:7;15241:8;:29::i;:::-;15302:1;15283:9;:15;15293:4;15283:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;15331:1;15314:9;:13;15324:2;15314:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;15362:2;15343:7;:16;15351:7;15343:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15401:7;15397:2;15382:27;;15391:4;15382:27;;;;;;;;;;;;14873:544;;;:::o;13716:110::-;13792:26;13802:2;13806:7;13792:26;;;;;;;;;;;;:9;:26::i;:::-;13716:110;;:::o;12928:272::-;13042:28;13052:4;13058:2;13062:7;13042:9;:28::i;:::-;13089:48;13112:4;13118:2;13122:7;13131:5;13089:22;:48::i;:::-;13081:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12928:272;;;;:::o;23984:114::-;24044:13;24077;24070:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23984:114;:::o;6925:542::-;6981:13;7030:1;7021:5;:10;7017:53;;;7048:10;;;;;;;;;;;;;;;;;;;;;7017:53;7080:12;7095:5;7080:20;;7111:14;7136:78;7151:1;7143:4;:9;7136:78;;7169:8;;;;;:::i;:::-;;;;7200:2;7192:10;;;;;:::i;:::-;;;7136:78;;;7224:19;7256:6;7246:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7224:39;;7274:154;7290:1;7281:5;:10;7274:154;;7318:1;7308:11;;;;;:::i;:::-;;;7385:2;7377:5;:10;;;;:::i;:::-;7364:2;:24;;;;:::i;:::-;7351:39;;7334:6;7341;7334:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;7414:2;7405:11;;;;;:::i;:::-;;;7274:154;;;7452:6;7438:21;;;;;6925:542;;;;:::o;8446:157::-;8531:4;8570:25;8555:40;;;:11;:40;;;;8548:47;;8446:157;;;:::o;18573:555::-;18683:45;18710:4;18716:2;18720:7;18683:26;:45::i;:::-;18761:1;18745:18;;:4;:18;;;18741:187;;;18780:40;18812:7;18780:31;:40::i;:::-;18741:187;;;18850:2;18842:10;;:4;:10;;;18838:90;;18869:47;18902:4;18908:7;18869:32;:47::i;:::-;18838:90;18741:187;18956:1;18942:16;;:2;:16;;;18938:183;;;18975:45;19012:7;18975:36;:45::i;:::-;18938:183;;;19048:4;19042:10;;:2;:10;;;19038:83;;19069:40;19097:2;19101:7;19069:27;:40::i;:::-;19038:83;18938:183;18573:555;;;:::o;13840:250::-;13936:18;13942:2;13946:7;13936:5;:18::i;:::-;13973:54;14004:1;14008:2;14012:7;14021:5;13973:22;:54::i;:::-;13965:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13840:250;;;:::o;15618:843::-;15739:4;15765:15;:2;:13;;;:15::i;:::-;15761:693;;;15817:2;15801:36;;;15838:12;:10;:12::i;:::-;15852:4;15858:7;15867:5;15801:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15797:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16064:1;16047:6;:13;:18;16043:341;;;16090:60;;;;;;;;;;:::i;:::-;;;;;;;;16043:341;16334:6;16328:13;16319:6;16315:2;16311:15;16304:38;15797:602;15934:45;;;15924:55;;;:6;:55;;;;15917:62;;;;;15761:693;16438:4;16431:11;;15618:843;;;;;;;:::o;16475:93::-;;;;:::o;19377:164::-;19481:10;:17;;;;19454:15;:24;19470:7;19454:24;;;;;;;;;;;:44;;;;19509:10;19525:7;19509:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19377:164;:::o;19555:988::-;19821:22;19871:1;19846:22;19863:4;19846:16;:22::i;:::-;:26;;;;:::i;:::-;19821:51;;19883:18;19904:17;:26;19922:7;19904:26;;;;;;;;;;;;19883:47;;20051:14;20037:10;:28;20033:328;;20082:19;20104:12;:18;20117:4;20104:18;;;;;;;;;;;;;;;:34;20123:14;20104:34;;;;;;;;;;;;20082:56;;20188:11;20155:12;:18;20168:4;20155:18;;;;;;;;;;;;;;;:30;20174:10;20155:30;;;;;;;;;;;:44;;;;20305:10;20272:17;:30;20290:11;20272:30;;;;;;;;;;;:43;;;;20033:328;;20457:17;:26;20475:7;20457:26;;;;;;;;;;;20450:33;;;20501:12;:18;20514:4;20501:18;;;;;;;;;;;;;;;:34;20520:14;20501:34;;;;;;;;;;;20494:41;;;19555:988;;;;:::o;20557:1079::-;20810:22;20855:1;20835:10;:17;;;;:21;;;;:::i;:::-;20810:46;;20867:18;20888:15;:24;20904:7;20888:24;;;;;;;;;;;;20867:45;;21239:19;21261:10;21272:14;21261:26;;;;;;;;;;;;;;;;;;;;;;;;21239:48;;21325:11;21300:10;21311;21300:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;21436:10;21405:15;:28;21421:11;21405:28;;;;;;;;;;;:41;;;;21577:15;:24;21593:7;21577:24;;;;;;;;;;;21570:31;;;21612:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20557:1079;;;;:::o;19142:221::-;19227:14;19244:20;19261:2;19244:16;:20::i;:::-;19227:37;;19302:7;19275:12;:16;19288:2;19275:16;;;;;;;;;;;;;;;:24;19292:6;19275:24;;;;;;;;;;;:34;;;;19349:6;19320:17;:26;19338:7;19320:26;;;;;;;;;;;:35;;;;19142:221;;;:::o;14104:382::-;14198:1;14184:16;;:2;:16;;;;14176:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14257:16;14265:7;14257;:16::i;:::-;14256:17;14248:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14319:45;14348:1;14352:2;14356:7;14319:20;:45::i;:::-;14394:1;14377:9;:13;14387:2;14377:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;14425:2;14406:7;:16;14414:7;14406:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14470:7;14466:2;14445:33;;14462:1;14445:33;;;;;;;;;;;;14104:382;;:::o;2167:422::-;2227:4;2435:12;2546:7;2534:20;2526:28;;2580:1;2573:4;:8;2566:15;;;2167:422;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:344::-;;458:65;473:49;515:6;473:49;:::i;:::-;458:65;:::i;:::-;449:74;;546:6;539:5;532:21;584:4;577:5;573:16;622:3;613:6;608:3;604:16;601:25;598:2;;;639:1;636;629:12;598:2;652:41;686:6;681:3;676;652:41;:::i;:::-;439:260;;;;;;:::o;705:139::-;;789:6;776:20;767:29;;805:33;832:5;805:33;:::i;:::-;757:87;;;;:::o;850:133::-;;931:6;918:20;909:29;;947:30;971:5;947:30;:::i;:::-;899:84;;;;:::o;989:137::-;;1072:6;1059:20;1050:29;;1088:32;1114:5;1088:32;:::i;:::-;1040:86;;;;:::o;1132:141::-;;1219:6;1213:13;1204:22;;1235:32;1261:5;1235:32;:::i;:::-;1194:79;;;;:::o;1292:271::-;;1396:3;1389:4;1381:6;1377:17;1373:27;1363:2;;1414:1;1411;1404:12;1363:2;1454:6;1441:20;1479:78;1553:3;1545:6;1538:4;1530:6;1526:17;1479:78;:::i;:::-;1470:87;;1353:210;;;;;:::o;1583:273::-;;1688:3;1681:4;1673:6;1669:17;1665:27;1655:2;;1706:1;1703;1696:12;1655:2;1746:6;1733:20;1771:79;1846:3;1838:6;1831:4;1823:6;1819:17;1771:79;:::i;:::-;1762:88;;1645:211;;;;;:::o;1862:139::-;;1946:6;1933:20;1924:29;;1962:33;1989:5;1962:33;:::i;:::-;1914:87;;;;:::o;2007:262::-;;2115:2;2103:9;2094:7;2090:23;2086:32;2083:2;;;2131:1;2128;2121:12;2083:2;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2073:196;;;;:::o;2275:407::-;;;2400:2;2388:9;2379:7;2375:23;2371:32;2368:2;;;2416:1;2413;2406:12;2368:2;2459:1;2484:53;2529:7;2520:6;2509:9;2505:22;2484:53;:::i;:::-;2474:63;;2430:117;2586:2;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2557:118;2358:324;;;;;:::o;2688:552::-;;;;2830:2;2818:9;2809:7;2805:23;2801:32;2798:2;;;2846:1;2843;2836:12;2798:2;2889:1;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2860:117;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;3144:2;3170:53;3215:7;3206:6;3195:9;3191:22;3170:53;:::i;:::-;3160:63;;3115:118;2788:452;;;;;:::o;3246:809::-;;;;;3414:3;3402:9;3393:7;3389:23;3385:33;3382:2;;;3431:1;3428;3421:12;3382:2;3474:1;3499:53;3544:7;3535:6;3524:9;3520:22;3499:53;:::i;:::-;3489:63;;3445:117;3601:2;3627:53;3672:7;3663:6;3652:9;3648:22;3627:53;:::i;:::-;3617:63;;3572:118;3729:2;3755:53;3800:7;3791:6;3780:9;3776:22;3755:53;:::i;:::-;3745:63;;3700:118;3885:2;3874:9;3870:18;3857:32;3916:18;3908:6;3905:30;3902:2;;;3948:1;3945;3938:12;3902:2;3976:62;4030:7;4021:6;4010:9;4006:22;3976:62;:::i;:::-;3966:72;;3828:220;3372:683;;;;;;;:::o;4061:401::-;;;4183:2;4171:9;4162:7;4158:23;4154:32;4151:2;;;4199:1;4196;4189:12;4151:2;4242:1;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4213:117;4369:2;4395:50;4437:7;4428:6;4417:9;4413:22;4395:50;:::i;:::-;4385:60;;4340:115;4141:321;;;;;:::o;4468:407::-;;;4593:2;4581:9;4572:7;4568:23;4564:32;4561:2;;;4609:1;4606;4599:12;4561:2;4652:1;4677:53;4722:7;4713:6;4702:9;4698:22;4677:53;:::i;:::-;4667:63;;4623:117;4779:2;4805:53;4850:7;4841:6;4830:9;4826:22;4805:53;:::i;:::-;4795:63;;4750:118;4551:324;;;;;:::o;4881:256::-;;4986:2;4974:9;4965:7;4961:23;4957:32;4954:2;;;5002:1;4999;4992:12;4954:2;5045:1;5070:50;5112:7;5103:6;5092:9;5088:22;5070:50;:::i;:::-;5060:60;;5016:114;4944:193;;;;:::o;5143:260::-;;5250:2;5238:9;5229:7;5225:23;5221:32;5218:2;;;5266:1;5263;5256:12;5218:2;5309:1;5334:52;5378:7;5369:6;5358:9;5354:22;5334:52;:::i;:::-;5324:62;;5280:116;5208:195;;;;:::o;5409:282::-;;5527:2;5515:9;5506:7;5502:23;5498:32;5495:2;;;5543:1;5540;5533:12;5495:2;5586:1;5611:63;5666:7;5657:6;5646:9;5642:22;5611:63;:::i;:::-;5601:73;;5557:127;5485:206;;;;:::o;5697:375::-;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5902:1;5891:9;5887:17;5874:31;5932:18;5924:6;5921:30;5918:2;;;5964:1;5961;5954:12;5918:2;5992:63;6047:7;6038:6;6027:9;6023:22;5992:63;:::i;:::-;5982:73;;5845:220;5773:299;;;;:::o;6078:262::-;;6186:2;6174:9;6165:7;6161:23;6157:32;6154:2;;;6202:1;6199;6192:12;6154:2;6245:1;6270:53;6315:7;6306:6;6295:9;6291:22;6270:53;:::i;:::-;6260:63;;6216:117;6144:196;;;;:::o;6346:179::-;;6436:46;6478:3;6470:6;6436:46;:::i;:::-;6514:4;6509:3;6505:14;6491:28;;6426:99;;;;:::o;6531:118::-;6618:24;6636:5;6618:24;:::i;:::-;6613:3;6606:37;6596:53;;:::o;6685:732::-;;6833:54;6881:5;6833:54;:::i;:::-;6903:86;6982:6;6977:3;6903:86;:::i;:::-;6896:93;;7013:56;7063:5;7013:56;:::i;:::-;7092:7;7123:1;7108:284;7133:6;7130:1;7127:13;7108:284;;;7209:6;7203:13;7236:63;7295:3;7280:13;7236:63;:::i;:::-;7229:70;;7322:60;7375:6;7322:60;:::i;:::-;7312:70;;7168:224;7155:1;7152;7148:9;7143:14;;7108:284;;;7112:14;7408:3;7401:10;;6809:608;;;;;;;:::o;7423:109::-;7504:21;7519:5;7504:21;:::i;:::-;7499:3;7492:34;7482:50;;:::o;7538:360::-;;7652:38;7684:5;7652:38;:::i;:::-;7706:70;7769:6;7764:3;7706:70;:::i;:::-;7699:77;;7785:52;7830:6;7825:3;7818:4;7811:5;7807:16;7785:52;:::i;:::-;7862:29;7884:6;7862:29;:::i;:::-;7857:3;7853:39;7846:46;;7628:270;;;;;:::o;7904:364::-;;8020:39;8053:5;8020:39;:::i;:::-;8075:71;8139:6;8134:3;8075:71;:::i;:::-;8068:78;;8155:52;8200:6;8195:3;8188:4;8181:5;8177:16;8155:52;:::i;:::-;8232:29;8254:6;8232:29;:::i;:::-;8227:3;8223:39;8216:46;;7996:272;;;;;:::o;8274:377::-;;8408:39;8441:5;8408:39;:::i;:::-;8463:89;8545:6;8540:3;8463:89;:::i;:::-;8456:96;;8561:52;8606:6;8601:3;8594:4;8587:5;8583:16;8561:52;:::i;:::-;8638:6;8633:3;8629:16;8622:23;;8384:267;;;;;:::o;8657:303::-;;8820:66;8884:1;8879:3;8820:66;:::i;:::-;8813:73;;8916:8;8912:1;8907:3;8903:11;8896:29;8951:2;8946:3;8942:12;8935:19;;8803:157;;;:::o;8966:375::-;;9129:67;9193:2;9188:3;9129:67;:::i;:::-;9122:74;;9226:34;9222:1;9217:3;9213:11;9206:55;9292:13;9287:2;9282:3;9278:12;9271:35;9332:2;9327:3;9323:12;9316:19;;9112:229;;;:::o;9347:382::-;;9510:67;9574:2;9569:3;9510:67;:::i;:::-;9503:74;;9607:34;9603:1;9598:3;9594:11;9587:55;9673:20;9668:2;9663:3;9659:12;9652:42;9720:2;9715:3;9711:12;9704:19;;9493:236;;;:::o;9735:370::-;;9898:67;9962:2;9957:3;9898:67;:::i;:::-;9891:74;;9995:34;9991:1;9986:3;9982:11;9975:55;10061:8;10056:2;10051:3;10047:12;10040:30;10096:2;10091:3;10087:12;10080:19;;9881:224;;;:::o;10111:326::-;;10274:67;10338:2;10333:3;10274:67;:::i;:::-;10267:74;;10371:30;10367:1;10362:3;10358:11;10351:51;10428:2;10423:3;10419:12;10412:19;;10257:180;;;:::o;10443:368::-;;10606:67;10670:2;10665:3;10606:67;:::i;:::-;10599:74;;10703:34;10699:1;10694:3;10690:11;10683:55;10769:6;10764:2;10759:3;10755:12;10748:28;10802:2;10797:3;10793:12;10786:19;;10589:222;;;:::o;10817:323::-;;10980:67;11044:2;11039:3;10980:67;:::i;:::-;10973:74;;11077:27;11073:1;11068:3;11064:11;11057:48;11131:2;11126:3;11122:12;11115:19;;10963:177;;;:::o;11146:306::-;;11309:66;11373:1;11368:3;11309:66;:::i;:::-;11302:73;;11405:11;11401:1;11396:3;11392:11;11385:32;11443:2;11438:3;11434:12;11427:19;;11292:160;;;:::o;11458:376::-;;11621:67;11685:2;11680:3;11621:67;:::i;:::-;11614:74;;11718:34;11714:1;11709:3;11705:11;11698:55;11784:14;11779:2;11774:3;11770:12;11763:36;11825:2;11820:3;11816:12;11809:19;;11604:230;;;:::o;11840:388::-;;12003:67;12067:2;12062:3;12003:67;:::i;:::-;11996:74;;12100:34;12096:1;12091:3;12087:11;12080:55;12166:26;12161:2;12156:3;12152:12;12145:48;12219:2;12214:3;12210:12;12203:19;;11986:242;;;:::o;12234:374::-;;12397:67;12461:2;12456:3;12397:67;:::i;:::-;12390:74;;12494:34;12490:1;12485:3;12481:11;12474:55;12560:12;12555:2;12550:3;12546:12;12539:34;12599:2;12594:3;12590:12;12583:19;;12380:228;;;:::o;12614:373::-;;12777:67;12841:2;12836:3;12777:67;:::i;:::-;12770:74;;12874:34;12870:1;12865:3;12861:11;12854:55;12940:11;12935:2;12930:3;12926:12;12919:33;12978:2;12973:3;12969:12;12962:19;;12760:227;;;:::o;12993:330::-;;13156:67;13220:2;13215:3;13156:67;:::i;:::-;13149:74;;13253:34;13249:1;13244:3;13240:11;13233:55;13314:2;13309:3;13305:12;13298:19;;13139:184;;;:::o;13329:305::-;;13492:66;13556:1;13551:3;13492:66;:::i;:::-;13485:73;;13588:10;13584:1;13579:3;13575:11;13568:31;13625:2;13620:3;13616:12;13609:19;;13475:159;;;:::o;13640:376::-;;13803:67;13867:2;13862:3;13803:67;:::i;:::-;13796:74;;13900:34;13896:1;13891:3;13887:11;13880:55;13966:14;13961:2;13956:3;13952:12;13945:36;14007:2;14002:3;13998:12;13991:19;;13786:230;;;:::o;14022:330::-;;14185:67;14249:2;14244:3;14185:67;:::i;:::-;14178:74;;14282:34;14278:1;14273:3;14269:11;14262:55;14343:2;14338:3;14334:12;14327:19;;14168:184;;;:::o;14358:373::-;;14521:67;14585:2;14580:3;14521:67;:::i;:::-;14514:74;;14618:34;14614:1;14609:3;14605:11;14598:55;14684:11;14679:2;14674:3;14670:12;14663:33;14722:2;14717:3;14713:12;14706:19;;14504:227;;;:::o;14737:379::-;;14900:67;14964:2;14959:3;14900:67;:::i;:::-;14893:74;;14997:34;14993:1;14988:3;14984:11;14977:55;15063:17;15058:2;15053:3;15049:12;15042:39;15107:2;15102:3;15098:12;15091:19;;14883:233;;;:::o;15122:315::-;;15285:67;15349:2;15344:3;15285:67;:::i;:::-;15278:74;;15382:19;15378:1;15373:3;15369:11;15362:40;15428:2;15423:3;15419:12;15412:19;;15268:169;;;:::o;15443:365::-;;15606:67;15670:2;15665:3;15606:67;:::i;:::-;15599:74;;15703:34;15699:1;15694:3;15690:11;15683:55;15769:3;15764:2;15759:3;15755:12;15748:25;15799:2;15794:3;15790:12;15783:19;;15589:219;;;:::o;15814:308::-;;15977:67;16041:2;16036:3;15977:67;:::i;:::-;15970:74;;16074:12;16070:1;16065:3;16061:11;16054:33;16113:2;16108:3;16104:12;16097:19;;15960:162;;;:::o;16128:381::-;;16291:67;16355:2;16350:3;16291:67;:::i;:::-;16284:74;;16388:34;16384:1;16379:3;16375:11;16368:55;16454:19;16449:2;16444:3;16440:12;16433:41;16500:2;16495:3;16491:12;16484:19;;16274:235;;;:::o;16515:376::-;;16678:67;16742:2;16737:3;16678:67;:::i;:::-;16671:74;;16775:34;16771:1;16766:3;16762:11;16755:55;16841:14;16836:2;16831:3;16827:12;16820:36;16882:2;16877:3;16873:12;16866:19;;16661:230;;;:::o;16897:108::-;16974:24;16992:5;16974:24;:::i;:::-;16969:3;16962:37;16952:53;;:::o;17011:118::-;17098:24;17116:5;17098:24;:::i;:::-;17093:3;17086:37;17076:53;;:::o;17135:435::-;;17337:95;17428:3;17419:6;17337:95;:::i;:::-;17330:102;;17449:95;17540:3;17531:6;17449:95;:::i;:::-;17442:102;;17561:3;17554:10;;17319:251;;;;;:::o;17576:222::-;;17707:2;17696:9;17692:18;17684:26;;17720:71;17788:1;17777:9;17773:17;17764:6;17720:71;:::i;:::-;17674:124;;;;:::o;17804:640::-;;18037:3;18026:9;18022:19;18014:27;;18051:71;18119:1;18108:9;18104:17;18095:6;18051:71;:::i;:::-;18132:72;18200:2;18189:9;18185:18;18176:6;18132:72;:::i;:::-;18214;18282:2;18271:9;18267:18;18258:6;18214:72;:::i;:::-;18333:9;18327:4;18323:20;18318:2;18307:9;18303:18;18296:48;18361:76;18432:4;18423:6;18361:76;:::i;:::-;18353:84;;18004:440;;;;;;;:::o;18450:373::-;;18631:2;18620:9;18616:18;18608:26;;18680:9;18674:4;18670:20;18666:1;18655:9;18651:17;18644:47;18708:108;18811:4;18802:6;18708:108;:::i;:::-;18700:116;;18598:225;;;;:::o;18829:210::-;;18954:2;18943:9;18939:18;18931:26;;18967:65;19029:1;19018:9;19014:17;19005:6;18967:65;:::i;:::-;18921:118;;;;:::o;19045:313::-;;19196:2;19185:9;19181:18;19173:26;;19245:9;19239:4;19235:20;19231:1;19220:9;19216:17;19209:47;19273:78;19346:4;19337:6;19273:78;:::i;:::-;19265:86;;19163:195;;;;:::o;19364:419::-;;19568:2;19557:9;19553:18;19545:26;;19617:9;19611:4;19607:20;19603:1;19592:9;19588:17;19581:47;19645:131;19771:4;19645:131;:::i;:::-;19637:139;;19535:248;;;:::o;19789:419::-;;19993:2;19982:9;19978:18;19970:26;;20042:9;20036:4;20032:20;20028:1;20017:9;20013:17;20006:47;20070:131;20196:4;20070:131;:::i;:::-;20062:139;;19960:248;;;:::o;20214:419::-;;20418:2;20407:9;20403:18;20395:26;;20467:9;20461:4;20457:20;20453:1;20442:9;20438:17;20431:47;20495:131;20621:4;20495:131;:::i;:::-;20487:139;;20385:248;;;:::o;20639:419::-;;20843:2;20832:9;20828:18;20820:26;;20892:9;20886:4;20882:20;20878:1;20867:9;20863:17;20856:47;20920:131;21046:4;20920:131;:::i;:::-;20912:139;;20810:248;;;:::o;21064:419::-;;21268:2;21257:9;21253:18;21245:26;;21317:9;21311:4;21307:20;21303:1;21292:9;21288:17;21281:47;21345:131;21471:4;21345:131;:::i;:::-;21337:139;;21235:248;;;:::o;21489:419::-;;21693:2;21682:9;21678:18;21670:26;;21742:9;21736:4;21732:20;21728:1;21717:9;21713:17;21706:47;21770:131;21896:4;21770:131;:::i;:::-;21762:139;;21660:248;;;:::o;21914:419::-;;22118:2;22107:9;22103:18;22095:26;;22167:9;22161:4;22157:20;22153:1;22142:9;22138:17;22131:47;22195:131;22321:4;22195:131;:::i;:::-;22187:139;;22085:248;;;:::o;22339:419::-;;22543:2;22532:9;22528:18;22520:26;;22592:9;22586:4;22582:20;22578:1;22567:9;22563:17;22556:47;22620:131;22746:4;22620:131;:::i;:::-;22612:139;;22510:248;;;:::o;22764:419::-;;22968:2;22957:9;22953:18;22945:26;;23017:9;23011:4;23007:20;23003:1;22992:9;22988:17;22981:47;23045:131;23171:4;23045:131;:::i;:::-;23037:139;;22935:248;;;:::o;23189:419::-;;23393:2;23382:9;23378:18;23370:26;;23442:9;23436:4;23432:20;23428:1;23417:9;23413:17;23406:47;23470:131;23596:4;23470:131;:::i;:::-;23462:139;;23360:248;;;:::o;23614:419::-;;23818:2;23807:9;23803:18;23795:26;;23867:9;23861:4;23857:20;23853:1;23842:9;23838:17;23831:47;23895:131;24021:4;23895:131;:::i;:::-;23887:139;;23785:248;;;:::o;24039:419::-;;24243:2;24232:9;24228:18;24220:26;;24292:9;24286:4;24282:20;24278:1;24267:9;24263:17;24256:47;24320:131;24446:4;24320:131;:::i;:::-;24312:139;;24210:248;;;:::o;24464:419::-;;24668:2;24657:9;24653:18;24645:26;;24717:9;24711:4;24707:20;24703:1;24692:9;24688:17;24681:47;24745:131;24871:4;24745:131;:::i;:::-;24737:139;;24635:248;;;:::o;24889:419::-;;25093:2;25082:9;25078:18;25070:26;;25142:9;25136:4;25132:20;25128:1;25117:9;25113:17;25106:47;25170:131;25296:4;25170:131;:::i;:::-;25162:139;;25060:248;;;:::o;25314:419::-;;25518:2;25507:9;25503:18;25495:26;;25567:9;25561:4;25557:20;25553:1;25542:9;25538:17;25531:47;25595:131;25721:4;25595:131;:::i;:::-;25587:139;;25485:248;;;:::o;25739:419::-;;25943:2;25932:9;25928:18;25920:26;;25992:9;25986:4;25982:20;25978:1;25967:9;25963:17;25956:47;26020:131;26146:4;26020:131;:::i;:::-;26012:139;;25910:248;;;:::o;26164:419::-;;26368:2;26357:9;26353:18;26345:26;;26417:9;26411:4;26407:20;26403:1;26392:9;26388:17;26381:47;26445:131;26571:4;26445:131;:::i;:::-;26437:139;;26335:248;;;:::o;26589:419::-;;26793:2;26782:9;26778:18;26770:26;;26842:9;26836:4;26832:20;26828:1;26817:9;26813:17;26806:47;26870:131;26996:4;26870:131;:::i;:::-;26862:139;;26760:248;;;:::o;27014:419::-;;27218:2;27207:9;27203:18;27195:26;;27267:9;27261:4;27257:20;27253:1;27242:9;27238:17;27231:47;27295:131;27421:4;27295:131;:::i;:::-;27287:139;;27185:248;;;:::o;27439:419::-;;27643:2;27632:9;27628:18;27620:26;;27692:9;27686:4;27682:20;27678:1;27667:9;27663:17;27656:47;27720:131;27846:4;27720:131;:::i;:::-;27712:139;;27610:248;;;:::o;27864:419::-;;28068:2;28057:9;28053:18;28045:26;;28117:9;28111:4;28107:20;28103:1;28092:9;28088:17;28081:47;28145:131;28271:4;28145:131;:::i;:::-;28137:139;;28035:248;;;:::o;28289:419::-;;28493:2;28482:9;28478:18;28470:26;;28542:9;28536:4;28532:20;28528:1;28517:9;28513:17;28506:47;28570:131;28696:4;28570:131;:::i;:::-;28562:139;;28460:248;;;:::o;28714:419::-;;28918:2;28907:9;28903:18;28895:26;;28967:9;28961:4;28957:20;28953:1;28942:9;28938:17;28931:47;28995:131;29121:4;28995:131;:::i;:::-;28987:139;;28885:248;;;:::o;29139:222::-;;29270:2;29259:9;29255:18;29247:26;;29283:71;29351:1;29340:9;29336:17;29327:6;29283:71;:::i;:::-;29237:124;;;;:::o;29367:283::-;;29433:2;29427:9;29417:19;;29475:4;29467:6;29463:17;29582:6;29570:10;29567:22;29546:18;29534:10;29531:34;29528:62;29525:2;;;29593:18;;:::i;:::-;29525:2;29633:10;29629:2;29622:22;29407:243;;;;:::o;29656:331::-;;29807:18;29799:6;29796:30;29793:2;;;29829:18;;:::i;:::-;29793:2;29914:4;29910:9;29903:4;29895:6;29891:17;29887:33;29879:41;;29975:4;29969;29965:15;29957:23;;29722:265;;;:::o;29993:332::-;;30145:18;30137:6;30134:30;30131:2;;;30167:18;;:::i;:::-;30131:2;30252:4;30248:9;30241:4;30233:6;30229:17;30225:33;30217:41;;30313:4;30307;30303:15;30295:23;;30060:265;;;:::o;30331:132::-;;30421:3;30413:11;;30451:4;30446:3;30442:14;30434:22;;30403:60;;;:::o;30469:114::-;;30570:5;30564:12;30554:22;;30543:40;;;:::o;30589:98::-;;30674:5;30668:12;30658:22;;30647:40;;;:::o;30693:99::-;;30779:5;30773:12;30763:22;;30752:40;;;:::o;30798:113::-;;30900:4;30895:3;30891:14;30883:22;;30873:38;;;:::o;30917:184::-;;31050:6;31045:3;31038:19;31090:4;31085:3;31081:14;31066:29;;31028:73;;;;:::o;31107:168::-;;31224:6;31219:3;31212:19;31264:4;31259:3;31255:14;31240:29;;31202:73;;;;:::o;31281:169::-;;31399:6;31394:3;31387:19;31439:4;31434:3;31430:14;31415:29;;31377:73;;;;:::o;31456:148::-;;31595:3;31580:18;;31570:34;;;;:::o;31610:305::-;;31669:20;31687:1;31669:20;:::i;:::-;31664:25;;31703:20;31721:1;31703:20;:::i;:::-;31698:25;;31857:1;31789:66;31785:74;31782:1;31779:81;31776:2;;;31863:18;;:::i;:::-;31776:2;31907:1;31904;31900:9;31893:16;;31654:261;;;;:::o;31921:185::-;;31978:20;31996:1;31978:20;:::i;:::-;31973:25;;32012:20;32030:1;32012:20;:::i;:::-;32007:25;;32051:1;32041:2;;32056:18;;:::i;:::-;32041:2;32098:1;32095;32091:9;32086:14;;31963:143;;;;:::o;32112:348::-;;32175:20;32193:1;32175:20;:::i;:::-;32170:25;;32209:20;32227:1;32209:20;:::i;:::-;32204:25;;32397:1;32329:66;32325:74;32322:1;32319:81;32314:1;32307:9;32300:17;32296:105;32293:2;;;32404:18;;:::i;:::-;32293:2;32452:1;32449;32445:9;32434:20;;32160:300;;;;:::o;32466:191::-;;32526:20;32544:1;32526:20;:::i;:::-;32521:25;;32560:20;32578:1;32560:20;:::i;:::-;32555:25;;32599:1;32596;32593:8;32590:2;;;32604:18;;:::i;:::-;32590:2;32649:1;32646;32642:9;32634:17;;32511:146;;;;:::o;32663:96::-;;32729:24;32747:5;32729:24;:::i;:::-;32718:35;;32708:51;;;:::o;32765:90::-;;32842:5;32835:13;32828:21;32817:32;;32807:48;;;:::o;32861:149::-;;32937:66;32930:5;32926:78;32915:89;;32905:105;;;:::o;33016:126::-;;33093:42;33086:5;33082:54;33071:65;;33061:81;;;:::o;33148:77::-;;33214:5;33203:16;;33193:32;;;:::o;33231:154::-;33315:6;33310:3;33305;33292:30;33377:1;33368:6;33363:3;33359:16;33352:27;33282:103;;;:::o;33391:307::-;33459:1;33469:113;33483:6;33480:1;33477:13;33469:113;;;33568:1;33563:3;33559:11;33553:18;33549:1;33544:3;33540:11;33533:39;33505:2;33502:1;33498:10;33493:15;;33469:113;;;33600:6;33597:1;33594:13;33591:2;;;33680:1;33671:6;33666:3;33662:16;33655:27;33591:2;33440:258;;;;:::o;33704:320::-;;33785:1;33779:4;33775:12;33765:22;;33832:1;33826:4;33822:12;33853:18;33843:2;;33909:4;33901:6;33897:17;33887:27;;33843:2;33971;33963:6;33960:14;33940:18;33937:38;33934:2;;;33990:18;;:::i;:::-;33934:2;33755:269;;;;:::o;34030:233::-;;34092:24;34110:5;34092:24;:::i;:::-;34083:33;;34138:66;34131:5;34128:77;34125:2;;;34208:18;;:::i;:::-;34125:2;34255:1;34248:5;34244:13;34237:20;;34073:190;;;:::o;34269:176::-;;34318:20;34336:1;34318:20;:::i;:::-;34313:25;;34352:20;34370:1;34352:20;:::i;:::-;34347:25;;34391:1;34381:2;;34396:18;;:::i;:::-;34381:2;34437:1;34434;34430:9;34425:14;;34303:142;;;;:::o;34451:180::-;34499:77;34496:1;34489:88;34596:4;34593:1;34586:15;34620:4;34617:1;34610:15;34637:180;34685:77;34682:1;34675:88;34782:4;34779:1;34772:15;34806:4;34803:1;34796:15;34823:180;34871:77;34868:1;34861:88;34968:4;34965:1;34958:15;34992:4;34989:1;34982:15;35009:180;35057:77;35054:1;35047:88;35154:4;35151:1;35144:15;35178:4;35175:1;35168:15;35195:102;;35287:2;35283:7;35278:2;35271:5;35267:14;35263:28;35253:38;;35243:54;;;:::o;35303:122::-;35376:24;35394:5;35376:24;:::i;:::-;35369:5;35366:35;35356:2;;35415:1;35412;35405:12;35356:2;35346:79;:::o;35431:116::-;35501:21;35516:5;35501:21;:::i;:::-;35494:5;35491:32;35481:2;;35537:1;35534;35527:12;35481:2;35471:76;:::o;35553:120::-;35625:23;35642:5;35625:23;:::i;:::-;35618:5;35615:34;35605:2;;35663:1;35660;35653:12;35605:2;35595:78;:::o;35679:122::-;35752:24;35770:5;35752:24;:::i;:::-;35745:5;35742:35;35732:2;;35791:1;35788;35781:12;35732:2;35722:79;:::o

Swarm Source

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