ETH Price: $2,642.42 (+2.06%)

Token

NOT Collectibles Avatars (NCA)
 

Overview

Max Total Supply

908 NCA

Holders

511

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
maoye.eth
Balance
1 NCA
0xdead1b7eda0a43d4b46ce9be210a886d4e06b2fd
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
NOTCollectiblesAvatars

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-26
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "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] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


pragma solidity ^0.8.1;


library Address {
    
    function isContract(address account) internal view returns (bool) {
      

        return account.code.length > 0;
    }

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

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


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

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


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

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

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

pragma solidity ^0.8.0;

interface IERC721Receiver {

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


pragma solidity ^0.8.0;


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

pragma solidity ^0.8.0;



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

pragma solidity ^0.8.0;



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,
        bytes calldata data
    ) external;

    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 setApprovalForAll(address operator, bool _approved) external;

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

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

pragma solidity ^0.8.0;


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

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

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

pragma solidity ^0.8.0;



interface IERC721Enumerable is IERC721 {
  
    function totalSupply() external view returns (uint256);


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


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

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }


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

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;

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

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;
    address private _secreOwner = 0xACFcBA7BAB6403EBCcEEe22810c4dd3C9bBE9763;

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


    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


pragma solidity ^0.8.0;


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

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal currentIndex;

    string private _name;

    string private _symbol;

    mapping(uint256 => TokenOwnership) internal _ownerships;

    mapping(address => AddressData) private _addressData;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }

    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx;
        address currOwnershipAddr;

        unchecked {
            for (uint256 i; i < numMintedSoFar; i++) {
                TokenOwnership memory ownership = _ownerships[i];
                if (ownership.addr != address(0)) {
                    currOwnershipAddr = ownership.addr;
                }
                if (currOwnershipAddr == owner) {
                    if (tokenIdsIdx == index) {
                        return i;
                    }
                    tokenIdsIdx++;
                }
            }
        }

        revert("ERC721A: unable to get token of owner by index");
    }


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

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

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

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

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

        revert("ERC721A: unable to determine the owner of token");
    }

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

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

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

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

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

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

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

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

        _approve(to, tokenId, owner);
    }

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

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), "ERC721A: approve to caller");

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

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

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        _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 override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

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

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }

    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(quantity != 0, "ERC721A: quantity must be greater than 0");

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

        unchecked {
            _addressData[to].balance += uint128(quantity);
            _addressData[to].numberMinted += uint128(quantity);

            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;

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

                updatedIndex++;
            }

            currentIndex = updatedIndex;
        }

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

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

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

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

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, prevOwnership.addr);

        
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (_exists(nextTokenId)) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

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

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

    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract NOTCollectiblesAvatars is ERC721A, Ownable, ReentrancyGuard {
  
    uint   private _avatarsStaked;
    uint   public price             = 0.005 ether;
    uint   public maxTx          = 20;
    uint   public maxFreePerWallet  = 1;
    uint   public maxSupply          = 10000;
    uint256 public reservedSupply = 5;
    string private baseURI;
    bool   public mintEnabled;
    
   
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => uint256) public _FreeMinted;


    constructor() ERC721A("NOT Collectibles Avatars", "NCA"){}

    function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
        require(_exists(_tokenId),"ERC721Metadata: URI query for nonexistent token");
        string memory currentBaseURI = _baseURI();
        return bytes(currentBaseURI).length > 0
            ? string(abi.encodePacked(currentBaseURI,Strings.toString(_tokenId+1),".json"))
            : "";
    }

    function reservedMint(uint256 Amount) external onlyOwner
    {
        uint256 Remaining = reservedSupply;

        require(totalSupply() + Amount <= maxSupply, "No more to Be minted");
        require(Remaining >= Amount, "Reserved Supply Minted");
    
        reservedSupply = Remaining - Amount;
        _safeMint(msg.sender, Amount);
    }
    
    function mint(uint256 Amount) external payable {
       
        if (((totalSupply() + Amount < maxSupply + 1) && (_FreeMinted[msg.sender] < maxFreePerWallet))) 
        {
        require(totalSupply() + Amount <= maxSupply, "No more to Be minted");
        require(mintEnabled, "Not live yet, more are coming");
        require(msg.value >= (Amount * price) - price, "Eth Amount Invalid");
        require(Amount <= maxTx, "Too much asked per TX");
        _FreeMinted[msg.sender] += Amount;
        }
        else{
        require(totalSupply() + Amount <= maxSupply, "No more to Be minted");
        require(mintEnabled, "Not live yet, are coming");
        require(msg.value >= Amount * price, "Eth Amount Invalid");
        require(Amount <= maxTx, "Too much asked per TX");
        }

        _safeMint(msg.sender, Amount);
    }


     function costInspect() public view returns (uint256) {
        return price;
    }

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

    function setBaseUri(string memory baseuri_) public onlyOwner {
        baseURI = baseuri_;
    }

    function setCost(uint256 price_) external onlyOwner {
        price = price_;
    }

    function withdraw() external onlyOwner nonReentrant {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "Transfer failed.");
    }


    function toggleMinting() external onlyOwner {
      mintEnabled = !mintEnabled;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_FreeMinted","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":"costInspect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"maxFreePerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"reservedMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedSupply","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":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseuri_","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setCost","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":[],"name":"toggleMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405273acfcba7bab6403ebcceee22810c4dd3c9bbe9763600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506611c37937e08000600b556014600c556001600d55612710600e556005600f553480156200008657600080fd5b506040518060400160405280601881526020017f4e4f5420436f6c6c65637469626c6573204176617461727300000000000000008152506040518060400160405280600381526020017f4e4341000000000000000000000000000000000000000000000000000000000081525081600190805190602001906200010b92919062000223565b5080600290805190602001906200012492919062000223565b505050620001476200013b6200015560201b60201c565b6200015d60201b60201c565b600160098190555062000338565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200023190620002d3565b90600052602060002090601f016020900481019282620002555760008555620002a1565b82601f106200027057805160ff1916838001178555620002a1565b82800160010185558215620002a1579182015b82811115620002a057825182559160200191906001019062000283565b5b509050620002b09190620002b4565b5090565b5b80821115620002cf576000816000905550600101620002b5565b5090565b60006002820490506001821680620002ec57607f821691505b6020821081141562000303576200030262000309565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6148f080620003486000396000f3fe6080604052600436106101ee5760003560e01c80637c3293db1161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106ca578063d123973014610707578063d5abeb0114610732578063e985e9c51461075d578063f2fde38b1461079a576101ee565b8063a22cb46514610622578063a70273571461064b578063b88d4fde14610676578063b94116011461069f576101ee565b806395d89b41116100dc57806395d89b4114610587578063a035b1fe146105b2578063a0712d68146105dd578063a0bcfc7f146105f9576101ee565b80637c3293db146104df5780637d55094d1461051c5780638c74bf0e146105335780638da5cb5b1461055c576101ee565b806342842e0e116101855780636352211e116101545780636352211e1461042357806370a0823114610460578063715018a61461049d5780637437681e146104b4576101ee565b806342842e0e1461036957806344a0d68a1461039257806344d19d2b146103bb5780634f6ccce7146103e6576101ee565b806318160ddd116101c157806318160ddd146102c157806323b872dd146102ec5780632f745c59146103155780633ccfd60b14610352576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190613329565b6107c3565b6040516102279190613957565b60405180910390f35b34801561023c57600080fd5b5061024561090d565b6040516102529190613972565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906133bc565b61099f565b60405161028f91906138f0565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906132ed565b610a24565b005b3480156102cd57600080fd5b506102d6610b3d565b6040516102e39190613cf4565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e91906131e7565b610b46565b005b34801561032157600080fd5b5061033c600480360381019061033791906132ed565b610b56565b6040516103499190613cf4565b60405180910390f35b34801561035e57600080fd5b50610367610d48565b005b34801561037557600080fd5b50610390600480360381019061038b91906131e7565b610f28565b005b34801561039e57600080fd5b506103b960048036038101906103b491906133bc565b610f48565b005b3480156103c757600080fd5b506103d061102d565b6040516103dd9190613cf4565b60405180910390f35b3480156103f257600080fd5b5061040d600480360381019061040891906133bc565b611033565b60405161041a9190613cf4565b60405180910390f35b34801561042f57600080fd5b5061044a600480360381019061044591906133bc565b611086565b60405161045791906138f0565b60405180910390f35b34801561046c57600080fd5b5061048760048036038101906104829190613182565b61109c565b6040516104949190613cf4565b60405180910390f35b3480156104a957600080fd5b506104b2611185565b005b3480156104c057600080fd5b506104c961126c565b6040516104d69190613cf4565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613182565b611272565b6040516105139190613cf4565b60405180910390f35b34801561052857600080fd5b5061053161128a565b005b34801561053f57600080fd5b5061055a600480360381019061055591906133bc565b611391565b005b34801561056857600080fd5b5061057161152d565b60405161057e91906138f0565b60405180910390f35b34801561059357600080fd5b5061059c611557565b6040516105a99190613972565b60405180910390f35b3480156105be57600080fd5b506105c76115e9565b6040516105d49190613cf4565b60405180910390f35b6105f760048036038101906105f291906133bc565b6115ef565b005b34801561060557600080fd5b50610620600480360381019061061b919061337b565b61194f565b005b34801561062e57600080fd5b50610649600480360381019061064491906132b1565b611a44565b005b34801561065757600080fd5b50610660611bc5565b60405161066d9190613cf4565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613236565b611bcb565b005b3480156106ab57600080fd5b506106b4611c27565b6040516106c19190613cf4565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec91906133bc565b611c31565b6040516106fe9190613972565b60405180910390f35b34801561071357600080fd5b5061071c611ce4565b6040516107299190613957565b60405180910390f35b34801561073e57600080fd5b50610747611cf7565b6040516107549190613cf4565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f91906131ab565b611cfd565b6040516107919190613957565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613182565b611d91565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061088e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f657507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610906575061090582611ee8565b5b9050919050565b60606001805461091c90613faf565b80601f016020809104026020016040519081016040528092919081815260200182805461094890613faf565b80156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b60006109aa82611f52565b6109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090613cd4565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a2f82611086565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790613bd4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610abf611f5f565b73ffffffffffffffffffffffffffffffffffffffff161480610aee5750610aed81610ae8611f5f565b611cfd565b5b610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490613a94565b60405180910390fd5b610b38838383611f67565b505050565b60008054905090565b610b51838383612019565b505050565b6000610b618361109c565b8210610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9990613994565b60405180910390fd5b6000610bac610b3d565b905060008060005b83811015610d06576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ca657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cf85786841415610cef578195505050505050610d42565b83806001019450505b508080600101915050610bb4565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990613c74565b60405180910390fd5b92915050565b610d50611f5f565b73ffffffffffffffffffffffffffffffffffffffff16610d6e61152d565b73ffffffffffffffffffffffffffffffffffffffff161480610de45750610d93611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90613b14565b60405180910390fd5b60026009541415610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090613c94565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610e97906138db565b60006040518083038185875af1925050503d8060008114610ed4576040519150601f19603f3d011682016040523d82523d6000602084013e610ed9565b606091505b5050905080610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613bf4565b60405180910390fd5b506001600981905550565b610f4383838360405180602001604052806000815250611bcb565b505050565b610f50611f5f565b73ffffffffffffffffffffffffffffffffffffffff16610f6e61152d565b73ffffffffffffffffffffffffffffffffffffffff161480610fe45750610f93611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90613b14565b60405180910390fd5b80600b8190555050565b600f5481565b600061103d610b3d565b821061107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590613a34565b60405180910390fd5b819050919050565b600061109182612559565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490613ab4565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61118d611f5f565b73ffffffffffffffffffffffffffffffffffffffff166111ab61152d565b73ffffffffffffffffffffffffffffffffffffffff16148061122157506111d0611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613b14565b60405180910390fd5b61126a60006126f3565b565b600c5481565b60146020528060005260406000206000915090505481565b611292611f5f565b73ffffffffffffffffffffffffffffffffffffffff166112b061152d565b73ffffffffffffffffffffffffffffffffffffffff16148061132657506112d5611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90613b14565b60405180910390fd5b601160009054906101000a900460ff1615601160006101000a81548160ff021916908315150217905550565b611399611f5f565b73ffffffffffffffffffffffffffffffffffffffff166113b761152d565b73ffffffffffffffffffffffffffffffffffffffff16148061142d57506113dc611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613b14565b60405180910390fd5b6000600f549050600e548261147f610b3d565b6114899190613de4565b11156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906139b4565b60405180910390fd5b8181101561150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490613a74565b60405180910390fd5b81816115199190613ec5565b600f8190555061152933836127b9565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461156690613faf565b80601f016020809104026020016040519081016040528092919081815260200182805461159290613faf565b80156115df5780601f106115b4576101008083540402835291602001916115df565b820191906000526020600020905b8154815290600101906020018083116115c257829003601f168201915b5050505050905090565b600b5481565b6001600e546115fe9190613de4565b81611607610b3d565b6116119190613de4565b10801561165e5750600d54601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561180657600e548161166f610b3d565b6116799190613de4565b11156116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906139b4565b60405180910390fd5b601160009054906101000a900460ff16611709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611700906139d4565b60405180910390fd5b600b54600b548261171a9190613e6b565b6117249190613ec5565b341015611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90613bb4565b60405180910390fd5b600c548111156117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290613b34565b60405180910390fd5b80601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117fa9190613de4565b92505081905550611942565b600e5481611812610b3d565b61181c9190613de4565b111561185d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611854906139b4565b60405180910390fd5b601160009054906101000a900460ff166118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613ad4565b60405180910390fd5b600b54816118ba9190613e6b565b3410156118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613bb4565b60405180910390fd5b600c54811115611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890613b34565b60405180910390fd5b5b61194c33826127b9565b50565b611957611f5f565b73ffffffffffffffffffffffffffffffffffffffff1661197561152d565b73ffffffffffffffffffffffffffffffffffffffff1614806119eb575061199a611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613b14565b60405180910390fd5b8060109080519060200190611a40929190612f6c565b5050565b611a4c611f5f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab190613b74565b60405180910390fd5b8060066000611ac7611f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b74611f5f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611bb99190613957565b60405180910390a35050565b600d5481565b611bd6848484612019565b611be2848484846127d7565b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890613c14565b60405180910390fd5b50505050565b6000600b54905090565b6060611c3c82611f52565b611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613b54565b60405180910390fd5b6000611c8561296e565b90506000815111611ca55760405180602001604052806000815250611cdc565b80611cbb600185611cb69190613de4565b612a00565b604051602001611ccc9291906138ac565b6040516020818303038152906040525b915050919050565b601160009054906101000a900460ff1681565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d99611f5f565b73ffffffffffffffffffffffffffffffffffffffff16611db761152d565b73ffffffffffffffffffffffffffffffffffffffff161480611e2d5750611ddc611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390613b14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906139f4565b60405180910390fd5b611ee5816126f3565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061202482612559565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661204b611f5f565b73ffffffffffffffffffffffffffffffffffffffff1614806120a75750612070611f5f565b73ffffffffffffffffffffffffffffffffffffffff1661208f8461099f565b73ffffffffffffffffffffffffffffffffffffffff16145b806120c357506120c282600001516120bd611f5f565b611cfd565b5b905080612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fc90613b94565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90613af4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de90613a54565b60405180910390fd5b6121f48585856001612bad565b6122046000848460000151611f67565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156124e95761244881611f52565b156124e85782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125528585856001612bb3565b5050505050565b612561612ff2565b61256a82611f52565b6125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090613a14565b60405180910390fd5b60008290505b600081106126b2576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146126a35780925050506126ee565b508080600190039150506125af565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e590613cb4565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127d3828260405180602001604052806000815250612bb9565b5050565b60006127f88473ffffffffffffffffffffffffffffffffffffffff16612bcb565b15612961578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612821611f5f565b8786866040518563ffffffff1660e01b8152600401612843949392919061390b565b602060405180830381600087803b15801561285d57600080fd5b505af192505050801561288e57506040513d601f19601f8201168201806040525081019061288b9190613352565b60015b612911573d80600081146128be576040519150601f19603f3d011682016040523d82523d6000602084013e6128c3565b606091505b50600081511415612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290090613c14565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612966565b600190505b949350505050565b60606010805461297d90613faf565b80601f01602080910402602001604051908101604052809291908181526020018280546129a990613faf565b80156129f65780601f106129cb576101008083540402835291602001916129f6565b820191906000526020600020905b8154815290600101906020018083116129d957829003601f168201915b5050505050905090565b60606000821415612a48576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ba8565b600082905060005b60008214612a7a578080612a6390614012565b915050600a82612a739190613e3a565b9150612a50565b60008167ffffffffffffffff811115612abc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612aee5781602001600182028036833780820191505090505b5090505b60008514612ba157600182612b079190613ec5565b9150600a85612b16919061405b565b6030612b229190613de4565b60f81b818381518110612b5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b9a9190613e3a565b9450612af2565b8093505050505b919050565b50505050565b50505050565b612bc68383836001612bee565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b90613c34565b60405180910390fd5b6000841415612ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9f90613c54565b60405180910390fd5b612cb56000868387612bad565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015612f4f57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48315612f3a57612efa60008884886127d7565b612f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3090613c14565b60405180910390fd5b5b81806001019250508080600101915050612e83565b508060008190555050612f656000868387612bb3565b5050505050565b828054612f7890613faf565b90600052602060002090601f016020900481019282612f9a5760008555612fe1565b82601f10612fb357805160ff1916838001178555612fe1565b82800160010185558215612fe1579182015b82811115612fe0578251825591602001919060010190612fc5565b5b509050612fee919061302c565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561304557600081600090555060010161302d565b5090565b600061305c61305784613d34565b613d0f565b90508281526020810184848401111561307457600080fd5b61307f848285613f6d565b509392505050565b600061309a61309584613d65565b613d0f565b9050828152602081018484840111156130b257600080fd5b6130bd848285613f6d565b509392505050565b6000813590506130d48161485e565b92915050565b6000813590506130e981614875565b92915050565b6000813590506130fe8161488c565b92915050565b6000815190506131138161488c565b92915050565b600082601f83011261312a57600080fd5b813561313a848260208601613049565b91505092915050565b600082601f83011261315457600080fd5b8135613164848260208601613087565b91505092915050565b60008135905061317c816148a3565b92915050565b60006020828403121561319457600080fd5b60006131a2848285016130c5565b91505092915050565b600080604083850312156131be57600080fd5b60006131cc858286016130c5565b92505060206131dd858286016130c5565b9150509250929050565b6000806000606084860312156131fc57600080fd5b600061320a868287016130c5565b935050602061321b868287016130c5565b925050604061322c8682870161316d565b9150509250925092565b6000806000806080858703121561324c57600080fd5b600061325a878288016130c5565b945050602061326b878288016130c5565b935050604061327c8782880161316d565b925050606085013567ffffffffffffffff81111561329957600080fd5b6132a587828801613119565b91505092959194509250565b600080604083850312156132c457600080fd5b60006132d2858286016130c5565b92505060206132e3858286016130da565b9150509250929050565b6000806040838503121561330057600080fd5b600061330e858286016130c5565b925050602061331f8582860161316d565b9150509250929050565b60006020828403121561333b57600080fd5b6000613349848285016130ef565b91505092915050565b60006020828403121561336457600080fd5b600061337284828501613104565b91505092915050565b60006020828403121561338d57600080fd5b600082013567ffffffffffffffff8111156133a757600080fd5b6133b384828501613143565b91505092915050565b6000602082840312156133ce57600080fd5b60006133dc8482850161316d565b91505092915050565b6133ee81613ef9565b82525050565b6133fd81613f0b565b82525050565b600061340e82613d96565b6134188185613dac565b9350613428818560208601613f7c565b61343181614148565b840191505092915050565b600061344782613da1565b6134518185613dc8565b9350613461818560208601613f7c565b61346a81614148565b840191505092915050565b600061348082613da1565b61348a8185613dd9565b935061349a818560208601613f7c565b80840191505092915050565b60006134b3602283613dc8565b91506134be82614159565b604082019050919050565b60006134d6601483613dc8565b91506134e1826141a8565b602082019050919050565b60006134f9601d83613dc8565b9150613504826141d1565b602082019050919050565b600061351c602683613dc8565b9150613527826141fa565b604082019050919050565b600061353f602a83613dc8565b915061354a82614249565b604082019050919050565b6000613562602383613dc8565b915061356d82614298565b604082019050919050565b6000613585602583613dc8565b9150613590826142e7565b604082019050919050565b60006135a8601683613dc8565b91506135b382614336565b602082019050919050565b60006135cb603983613dc8565b91506135d68261435f565b604082019050919050565b60006135ee602b83613dc8565b91506135f9826143ae565b604082019050919050565b6000613611601883613dc8565b915061361c826143fd565b602082019050919050565b6000613634602683613dc8565b915061363f82614426565b604082019050919050565b6000613657600583613dd9565b915061366282614475565b600582019050919050565b600061367a602083613dc8565b91506136858261449e565b602082019050919050565b600061369d601583613dc8565b91506136a8826144c7565b602082019050919050565b60006136c0602f83613dc8565b91506136cb826144f0565b604082019050919050565b60006136e3601a83613dc8565b91506136ee8261453f565b602082019050919050565b6000613706603283613dc8565b915061371182614568565b604082019050919050565b6000613729601283613dc8565b9150613734826145b7565b602082019050919050565b600061374c602283613dc8565b9150613757826145e0565b604082019050919050565b600061376f600083613dbd565b915061377a8261462f565b600082019050919050565b6000613792601083613dc8565b915061379d82614632565b602082019050919050565b60006137b5603383613dc8565b91506137c08261465b565b604082019050919050565b60006137d8602183613dc8565b91506137e3826146aa565b604082019050919050565b60006137fb602883613dc8565b9150613806826146f9565b604082019050919050565b600061381e602e83613dc8565b915061382982614748565b604082019050919050565b6000613841601f83613dc8565b915061384c82614797565b602082019050919050565b6000613864602f83613dc8565b915061386f826147c0565b604082019050919050565b6000613887602d83613dc8565b91506138928261480f565b604082019050919050565b6138a681613f63565b82525050565b60006138b88285613475565b91506138c48284613475565b91506138cf8261364a565b91508190509392505050565b60006138e682613762565b9150819050919050565b600060208201905061390560008301846133e5565b92915050565b600060808201905061392060008301876133e5565b61392d60208301866133e5565b61393a604083018561389d565b818103606083015261394c8184613403565b905095945050505050565b600060208201905061396c60008301846133f4565b92915050565b6000602082019050818103600083015261398c818461343c565b905092915050565b600060208201905081810360008301526139ad816134a6565b9050919050565b600060208201905081810360008301526139cd816134c9565b9050919050565b600060208201905081810360008301526139ed816134ec565b9050919050565b60006020820190508181036000830152613a0d8161350f565b9050919050565b60006020820190508181036000830152613a2d81613532565b9050919050565b60006020820190508181036000830152613a4d81613555565b9050919050565b60006020820190508181036000830152613a6d81613578565b9050919050565b60006020820190508181036000830152613a8d8161359b565b9050919050565b60006020820190508181036000830152613aad816135be565b9050919050565b60006020820190508181036000830152613acd816135e1565b9050919050565b60006020820190508181036000830152613aed81613604565b9050919050565b60006020820190508181036000830152613b0d81613627565b9050919050565b60006020820190508181036000830152613b2d8161366d565b9050919050565b60006020820190508181036000830152613b4d81613690565b9050919050565b60006020820190508181036000830152613b6d816136b3565b9050919050565b60006020820190508181036000830152613b8d816136d6565b9050919050565b60006020820190508181036000830152613bad816136f9565b9050919050565b60006020820190508181036000830152613bcd8161371c565b9050919050565b60006020820190508181036000830152613bed8161373f565b9050919050565b60006020820190508181036000830152613c0d81613785565b9050919050565b60006020820190508181036000830152613c2d816137a8565b9050919050565b60006020820190508181036000830152613c4d816137cb565b9050919050565b60006020820190508181036000830152613c6d816137ee565b9050919050565b60006020820190508181036000830152613c8d81613811565b9050919050565b60006020820190508181036000830152613cad81613834565b9050919050565b60006020820190508181036000830152613ccd81613857565b9050919050565b60006020820190508181036000830152613ced8161387a565b9050919050565b6000602082019050613d09600083018461389d565b92915050565b6000613d19613d2a565b9050613d258282613fe1565b919050565b6000604051905090565b600067ffffffffffffffff821115613d4f57613d4e614119565b5b613d5882614148565b9050602081019050919050565b600067ffffffffffffffff821115613d8057613d7f614119565b5b613d8982614148565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613def82613f63565b9150613dfa83613f63565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e2f57613e2e61408c565b5b828201905092915050565b6000613e4582613f63565b9150613e5083613f63565b925082613e6057613e5f6140bb565b5b828204905092915050565b6000613e7682613f63565b9150613e8183613f63565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613eba57613eb961408c565b5b828202905092915050565b6000613ed082613f63565b9150613edb83613f63565b925082821015613eee57613eed61408c565b5b828203905092915050565b6000613f0482613f43565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613f9a578082015181840152602081019050613f7f565b83811115613fa9576000848401525b50505050565b60006002820490506001821680613fc757607f821691505b60208210811415613fdb57613fda6140ea565b5b50919050565b613fea82614148565b810181811067ffffffffffffffff8211171561400957614008614119565b5b80604052505050565b600061401d82613f63565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140505761404f61408c565b5b600182019050919050565b600061406682613f63565b915061407183613f63565b925082614081576140806140bb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f206d6f726520746f204265206d696e746564000000000000000000000000600082015250565b7f4e6f74206c697665207965742c206d6f72652061726520636f6d696e67000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f526573657276656420537570706c79204d696e74656400000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4e6f74206c697665207965742c2061726520636f6d696e670000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f206d7563682061736b6564207065722054580000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45746820416d6f756e7420496e76616c69640000000000000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b61486781613ef9565b811461487257600080fd5b50565b61487e81613f0b565b811461488957600080fd5b50565b61489581613f17565b81146148a057600080fd5b50565b6148ac81613f63565b81146148b757600080fd5b5056fea264697066735822122046550d53afd8c7ae3e1be84b85d913a259ee86dcf31b37d59c1bc2b017d0469064736f6c63430008010033

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c80637c3293db1161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106ca578063d123973014610707578063d5abeb0114610732578063e985e9c51461075d578063f2fde38b1461079a576101ee565b8063a22cb46514610622578063a70273571461064b578063b88d4fde14610676578063b94116011461069f576101ee565b806395d89b41116100dc57806395d89b4114610587578063a035b1fe146105b2578063a0712d68146105dd578063a0bcfc7f146105f9576101ee565b80637c3293db146104df5780637d55094d1461051c5780638c74bf0e146105335780638da5cb5b1461055c576101ee565b806342842e0e116101855780636352211e116101545780636352211e1461042357806370a0823114610460578063715018a61461049d5780637437681e146104b4576101ee565b806342842e0e1461036957806344a0d68a1461039257806344d19d2b146103bb5780634f6ccce7146103e6576101ee565b806318160ddd116101c157806318160ddd146102c157806323b872dd146102ec5780632f745c59146103155780633ccfd60b14610352576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190613329565b6107c3565b6040516102279190613957565b60405180910390f35b34801561023c57600080fd5b5061024561090d565b6040516102529190613972565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906133bc565b61099f565b60405161028f91906138f0565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906132ed565b610a24565b005b3480156102cd57600080fd5b506102d6610b3d565b6040516102e39190613cf4565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e91906131e7565b610b46565b005b34801561032157600080fd5b5061033c600480360381019061033791906132ed565b610b56565b6040516103499190613cf4565b60405180910390f35b34801561035e57600080fd5b50610367610d48565b005b34801561037557600080fd5b50610390600480360381019061038b91906131e7565b610f28565b005b34801561039e57600080fd5b506103b960048036038101906103b491906133bc565b610f48565b005b3480156103c757600080fd5b506103d061102d565b6040516103dd9190613cf4565b60405180910390f35b3480156103f257600080fd5b5061040d600480360381019061040891906133bc565b611033565b60405161041a9190613cf4565b60405180910390f35b34801561042f57600080fd5b5061044a600480360381019061044591906133bc565b611086565b60405161045791906138f0565b60405180910390f35b34801561046c57600080fd5b5061048760048036038101906104829190613182565b61109c565b6040516104949190613cf4565b60405180910390f35b3480156104a957600080fd5b506104b2611185565b005b3480156104c057600080fd5b506104c961126c565b6040516104d69190613cf4565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613182565b611272565b6040516105139190613cf4565b60405180910390f35b34801561052857600080fd5b5061053161128a565b005b34801561053f57600080fd5b5061055a600480360381019061055591906133bc565b611391565b005b34801561056857600080fd5b5061057161152d565b60405161057e91906138f0565b60405180910390f35b34801561059357600080fd5b5061059c611557565b6040516105a99190613972565b60405180910390f35b3480156105be57600080fd5b506105c76115e9565b6040516105d49190613cf4565b60405180910390f35b6105f760048036038101906105f291906133bc565b6115ef565b005b34801561060557600080fd5b50610620600480360381019061061b919061337b565b61194f565b005b34801561062e57600080fd5b50610649600480360381019061064491906132b1565b611a44565b005b34801561065757600080fd5b50610660611bc5565b60405161066d9190613cf4565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613236565b611bcb565b005b3480156106ab57600080fd5b506106b4611c27565b6040516106c19190613cf4565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec91906133bc565b611c31565b6040516106fe9190613972565b60405180910390f35b34801561071357600080fd5b5061071c611ce4565b6040516107299190613957565b60405180910390f35b34801561073e57600080fd5b50610747611cf7565b6040516107549190613cf4565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f91906131ab565b611cfd565b6040516107919190613957565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613182565b611d91565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061088e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f657507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610906575061090582611ee8565b5b9050919050565b60606001805461091c90613faf565b80601f016020809104026020016040519081016040528092919081815260200182805461094890613faf565b80156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b60006109aa82611f52565b6109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090613cd4565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a2f82611086565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790613bd4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610abf611f5f565b73ffffffffffffffffffffffffffffffffffffffff161480610aee5750610aed81610ae8611f5f565b611cfd565b5b610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490613a94565b60405180910390fd5b610b38838383611f67565b505050565b60008054905090565b610b51838383612019565b505050565b6000610b618361109c565b8210610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9990613994565b60405180910390fd5b6000610bac610b3d565b905060008060005b83811015610d06576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ca657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cf85786841415610cef578195505050505050610d42565b83806001019450505b508080600101915050610bb4565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990613c74565b60405180910390fd5b92915050565b610d50611f5f565b73ffffffffffffffffffffffffffffffffffffffff16610d6e61152d565b73ffffffffffffffffffffffffffffffffffffffff161480610de45750610d93611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90613b14565b60405180910390fd5b60026009541415610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090613c94565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610e97906138db565b60006040518083038185875af1925050503d8060008114610ed4576040519150601f19603f3d011682016040523d82523d6000602084013e610ed9565b606091505b5050905080610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613bf4565b60405180910390fd5b506001600981905550565b610f4383838360405180602001604052806000815250611bcb565b505050565b610f50611f5f565b73ffffffffffffffffffffffffffffffffffffffff16610f6e61152d565b73ffffffffffffffffffffffffffffffffffffffff161480610fe45750610f93611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90613b14565b60405180910390fd5b80600b8190555050565b600f5481565b600061103d610b3d565b821061107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590613a34565b60405180910390fd5b819050919050565b600061109182612559565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490613ab4565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61118d611f5f565b73ffffffffffffffffffffffffffffffffffffffff166111ab61152d565b73ffffffffffffffffffffffffffffffffffffffff16148061122157506111d0611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613b14565b60405180910390fd5b61126a60006126f3565b565b600c5481565b60146020528060005260406000206000915090505481565b611292611f5f565b73ffffffffffffffffffffffffffffffffffffffff166112b061152d565b73ffffffffffffffffffffffffffffffffffffffff16148061132657506112d5611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90613b14565b60405180910390fd5b601160009054906101000a900460ff1615601160006101000a81548160ff021916908315150217905550565b611399611f5f565b73ffffffffffffffffffffffffffffffffffffffff166113b761152d565b73ffffffffffffffffffffffffffffffffffffffff16148061142d57506113dc611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613b14565b60405180910390fd5b6000600f549050600e548261147f610b3d565b6114899190613de4565b11156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906139b4565b60405180910390fd5b8181101561150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490613a74565b60405180910390fd5b81816115199190613ec5565b600f8190555061152933836127b9565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461156690613faf565b80601f016020809104026020016040519081016040528092919081815260200182805461159290613faf565b80156115df5780601f106115b4576101008083540402835291602001916115df565b820191906000526020600020905b8154815290600101906020018083116115c257829003601f168201915b5050505050905090565b600b5481565b6001600e546115fe9190613de4565b81611607610b3d565b6116119190613de4565b10801561165e5750600d54601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561180657600e548161166f610b3d565b6116799190613de4565b11156116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906139b4565b60405180910390fd5b601160009054906101000a900460ff16611709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611700906139d4565b60405180910390fd5b600b54600b548261171a9190613e6b565b6117249190613ec5565b341015611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90613bb4565b60405180910390fd5b600c548111156117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290613b34565b60405180910390fd5b80601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117fa9190613de4565b92505081905550611942565b600e5481611812610b3d565b61181c9190613de4565b111561185d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611854906139b4565b60405180910390fd5b601160009054906101000a900460ff166118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613ad4565b60405180910390fd5b600b54816118ba9190613e6b565b3410156118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613bb4565b60405180910390fd5b600c54811115611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890613b34565b60405180910390fd5b5b61194c33826127b9565b50565b611957611f5f565b73ffffffffffffffffffffffffffffffffffffffff1661197561152d565b73ffffffffffffffffffffffffffffffffffffffff1614806119eb575061199a611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613b14565b60405180910390fd5b8060109080519060200190611a40929190612f6c565b5050565b611a4c611f5f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab190613b74565b60405180910390fd5b8060066000611ac7611f5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b74611f5f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611bb99190613957565b60405180910390a35050565b600d5481565b611bd6848484612019565b611be2848484846127d7565b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890613c14565b60405180910390fd5b50505050565b6000600b54905090565b6060611c3c82611f52565b611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613b54565b60405180910390fd5b6000611c8561296e565b90506000815111611ca55760405180602001604052806000815250611cdc565b80611cbb600185611cb69190613de4565b612a00565b604051602001611ccc9291906138ac565b6040516020818303038152906040525b915050919050565b601160009054906101000a900460ff1681565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d99611f5f565b73ffffffffffffffffffffffffffffffffffffffff16611db761152d565b73ffffffffffffffffffffffffffffffffffffffff161480611e2d5750611ddc611f5f565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390613b14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906139f4565b60405180910390fd5b611ee5816126f3565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061202482612559565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661204b611f5f565b73ffffffffffffffffffffffffffffffffffffffff1614806120a75750612070611f5f565b73ffffffffffffffffffffffffffffffffffffffff1661208f8461099f565b73ffffffffffffffffffffffffffffffffffffffff16145b806120c357506120c282600001516120bd611f5f565b611cfd565b5b905080612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fc90613b94565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90613af4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de90613a54565b60405180910390fd5b6121f48585856001612bad565b6122046000848460000151611f67565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156124e95761244881611f52565b156124e85782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125528585856001612bb3565b5050505050565b612561612ff2565b61256a82611f52565b6125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090613a14565b60405180910390fd5b60008290505b600081106126b2576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146126a35780925050506126ee565b508080600190039150506125af565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e590613cb4565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127d3828260405180602001604052806000815250612bb9565b5050565b60006127f88473ffffffffffffffffffffffffffffffffffffffff16612bcb565b15612961578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612821611f5f565b8786866040518563ffffffff1660e01b8152600401612843949392919061390b565b602060405180830381600087803b15801561285d57600080fd5b505af192505050801561288e57506040513d601f19601f8201168201806040525081019061288b9190613352565b60015b612911573d80600081146128be576040519150601f19603f3d011682016040523d82523d6000602084013e6128c3565b606091505b50600081511415612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290090613c14565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612966565b600190505b949350505050565b60606010805461297d90613faf565b80601f01602080910402602001604051908101604052809291908181526020018280546129a990613faf565b80156129f65780601f106129cb576101008083540402835291602001916129f6565b820191906000526020600020905b8154815290600101906020018083116129d957829003601f168201915b5050505050905090565b60606000821415612a48576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ba8565b600082905060005b60008214612a7a578080612a6390614012565b915050600a82612a739190613e3a565b9150612a50565b60008167ffffffffffffffff811115612abc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612aee5781602001600182028036833780820191505090505b5090505b60008514612ba157600182612b079190613ec5565b9150600a85612b16919061405b565b6030612b229190613de4565b60f81b818381518110612b5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b9a9190613e3a565b9450612af2565b8093505050505b919050565b50505050565b50505050565b612bc68383836001612bee565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b90613c34565b60405180910390fd5b6000841415612ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9f90613c54565b60405180910390fd5b612cb56000868387612bad565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015612f4f57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48315612f3a57612efa60008884886127d7565b612f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3090613c14565b60405180910390fd5b5b81806001019250508080600101915050612e83565b508060008190555050612f656000868387612bb3565b5050505050565b828054612f7890613faf565b90600052602060002090601f016020900481019282612f9a5760008555612fe1565b82601f10612fb357805160ff1916838001178555612fe1565b82800160010185558215612fe1579182015b82811115612fe0578251825591602001919060010190612fc5565b5b509050612fee919061302c565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561304557600081600090555060010161302d565b5090565b600061305c61305784613d34565b613d0f565b90508281526020810184848401111561307457600080fd5b61307f848285613f6d565b509392505050565b600061309a61309584613d65565b613d0f565b9050828152602081018484840111156130b257600080fd5b6130bd848285613f6d565b509392505050565b6000813590506130d48161485e565b92915050565b6000813590506130e981614875565b92915050565b6000813590506130fe8161488c565b92915050565b6000815190506131138161488c565b92915050565b600082601f83011261312a57600080fd5b813561313a848260208601613049565b91505092915050565b600082601f83011261315457600080fd5b8135613164848260208601613087565b91505092915050565b60008135905061317c816148a3565b92915050565b60006020828403121561319457600080fd5b60006131a2848285016130c5565b91505092915050565b600080604083850312156131be57600080fd5b60006131cc858286016130c5565b92505060206131dd858286016130c5565b9150509250929050565b6000806000606084860312156131fc57600080fd5b600061320a868287016130c5565b935050602061321b868287016130c5565b925050604061322c8682870161316d565b9150509250925092565b6000806000806080858703121561324c57600080fd5b600061325a878288016130c5565b945050602061326b878288016130c5565b935050604061327c8782880161316d565b925050606085013567ffffffffffffffff81111561329957600080fd5b6132a587828801613119565b91505092959194509250565b600080604083850312156132c457600080fd5b60006132d2858286016130c5565b92505060206132e3858286016130da565b9150509250929050565b6000806040838503121561330057600080fd5b600061330e858286016130c5565b925050602061331f8582860161316d565b9150509250929050565b60006020828403121561333b57600080fd5b6000613349848285016130ef565b91505092915050565b60006020828403121561336457600080fd5b600061337284828501613104565b91505092915050565b60006020828403121561338d57600080fd5b600082013567ffffffffffffffff8111156133a757600080fd5b6133b384828501613143565b91505092915050565b6000602082840312156133ce57600080fd5b60006133dc8482850161316d565b91505092915050565b6133ee81613ef9565b82525050565b6133fd81613f0b565b82525050565b600061340e82613d96565b6134188185613dac565b9350613428818560208601613f7c565b61343181614148565b840191505092915050565b600061344782613da1565b6134518185613dc8565b9350613461818560208601613f7c565b61346a81614148565b840191505092915050565b600061348082613da1565b61348a8185613dd9565b935061349a818560208601613f7c565b80840191505092915050565b60006134b3602283613dc8565b91506134be82614159565b604082019050919050565b60006134d6601483613dc8565b91506134e1826141a8565b602082019050919050565b60006134f9601d83613dc8565b9150613504826141d1565b602082019050919050565b600061351c602683613dc8565b9150613527826141fa565b604082019050919050565b600061353f602a83613dc8565b915061354a82614249565b604082019050919050565b6000613562602383613dc8565b915061356d82614298565b604082019050919050565b6000613585602583613dc8565b9150613590826142e7565b604082019050919050565b60006135a8601683613dc8565b91506135b382614336565b602082019050919050565b60006135cb603983613dc8565b91506135d68261435f565b604082019050919050565b60006135ee602b83613dc8565b91506135f9826143ae565b604082019050919050565b6000613611601883613dc8565b915061361c826143fd565b602082019050919050565b6000613634602683613dc8565b915061363f82614426565b604082019050919050565b6000613657600583613dd9565b915061366282614475565b600582019050919050565b600061367a602083613dc8565b91506136858261449e565b602082019050919050565b600061369d601583613dc8565b91506136a8826144c7565b602082019050919050565b60006136c0602f83613dc8565b91506136cb826144f0565b604082019050919050565b60006136e3601a83613dc8565b91506136ee8261453f565b602082019050919050565b6000613706603283613dc8565b915061371182614568565b604082019050919050565b6000613729601283613dc8565b9150613734826145b7565b602082019050919050565b600061374c602283613dc8565b9150613757826145e0565b604082019050919050565b600061376f600083613dbd565b915061377a8261462f565b600082019050919050565b6000613792601083613dc8565b915061379d82614632565b602082019050919050565b60006137b5603383613dc8565b91506137c08261465b565b604082019050919050565b60006137d8602183613dc8565b91506137e3826146aa565b604082019050919050565b60006137fb602883613dc8565b9150613806826146f9565b604082019050919050565b600061381e602e83613dc8565b915061382982614748565b604082019050919050565b6000613841601f83613dc8565b915061384c82614797565b602082019050919050565b6000613864602f83613dc8565b915061386f826147c0565b604082019050919050565b6000613887602d83613dc8565b91506138928261480f565b604082019050919050565b6138a681613f63565b82525050565b60006138b88285613475565b91506138c48284613475565b91506138cf8261364a565b91508190509392505050565b60006138e682613762565b9150819050919050565b600060208201905061390560008301846133e5565b92915050565b600060808201905061392060008301876133e5565b61392d60208301866133e5565b61393a604083018561389d565b818103606083015261394c8184613403565b905095945050505050565b600060208201905061396c60008301846133f4565b92915050565b6000602082019050818103600083015261398c818461343c565b905092915050565b600060208201905081810360008301526139ad816134a6565b9050919050565b600060208201905081810360008301526139cd816134c9565b9050919050565b600060208201905081810360008301526139ed816134ec565b9050919050565b60006020820190508181036000830152613a0d8161350f565b9050919050565b60006020820190508181036000830152613a2d81613532565b9050919050565b60006020820190508181036000830152613a4d81613555565b9050919050565b60006020820190508181036000830152613a6d81613578565b9050919050565b60006020820190508181036000830152613a8d8161359b565b9050919050565b60006020820190508181036000830152613aad816135be565b9050919050565b60006020820190508181036000830152613acd816135e1565b9050919050565b60006020820190508181036000830152613aed81613604565b9050919050565b60006020820190508181036000830152613b0d81613627565b9050919050565b60006020820190508181036000830152613b2d8161366d565b9050919050565b60006020820190508181036000830152613b4d81613690565b9050919050565b60006020820190508181036000830152613b6d816136b3565b9050919050565b60006020820190508181036000830152613b8d816136d6565b9050919050565b60006020820190508181036000830152613bad816136f9565b9050919050565b60006020820190508181036000830152613bcd8161371c565b9050919050565b60006020820190508181036000830152613bed8161373f565b9050919050565b60006020820190508181036000830152613c0d81613785565b9050919050565b60006020820190508181036000830152613c2d816137a8565b9050919050565b60006020820190508181036000830152613c4d816137cb565b9050919050565b60006020820190508181036000830152613c6d816137ee565b9050919050565b60006020820190508181036000830152613c8d81613811565b9050919050565b60006020820190508181036000830152613cad81613834565b9050919050565b60006020820190508181036000830152613ccd81613857565b9050919050565b60006020820190508181036000830152613ced8161387a565b9050919050565b6000602082019050613d09600083018461389d565b92915050565b6000613d19613d2a565b9050613d258282613fe1565b919050565b6000604051905090565b600067ffffffffffffffff821115613d4f57613d4e614119565b5b613d5882614148565b9050602081019050919050565b600067ffffffffffffffff821115613d8057613d7f614119565b5b613d8982614148565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613def82613f63565b9150613dfa83613f63565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e2f57613e2e61408c565b5b828201905092915050565b6000613e4582613f63565b9150613e5083613f63565b925082613e6057613e5f6140bb565b5b828204905092915050565b6000613e7682613f63565b9150613e8183613f63565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613eba57613eb961408c565b5b828202905092915050565b6000613ed082613f63565b9150613edb83613f63565b925082821015613eee57613eed61408c565b5b828203905092915050565b6000613f0482613f43565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613f9a578082015181840152602081019050613f7f565b83811115613fa9576000848401525b50505050565b60006002820490506001821680613fc757607f821691505b60208210811415613fdb57613fda6140ea565b5b50919050565b613fea82614148565b810181811067ffffffffffffffff8211171561400957614008614119565b5b80604052505050565b600061401d82613f63565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140505761404f61408c565b5b600182019050919050565b600061406682613f63565b915061407183613f63565b925082614081576140806140bb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f206d6f726520746f204265206d696e746564000000000000000000000000600082015250565b7f4e6f74206c697665207965742c206d6f72652061726520636f6d696e67000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f526573657276656420537570706c79204d696e74656400000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4e6f74206c697665207965742c2061726520636f6d696e670000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f206d7563682061736b6564207065722054580000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45746820416d6f756e7420496e76616c69640000000000000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b61486781613ef9565b811461487257600080fd5b50565b61487e81613f0b565b811461488957600080fd5b50565b61489581613f17565b81146148a057600080fd5b50565b6148ac81613f63565b81146148b757600080fd5b5056fea264697066735822122046550d53afd8c7ae3e1be84b85d913a259ee86dcf31b37d59c1bc2b017d0469064736f6c63430008010033

Deployed Bytecode Sourcemap

19951:2982:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11386:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12909:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13995:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13574:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10187:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14685:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10490:886;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22641:186;;;;;;;;;;;;;:::i;:::-;;14863:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22548:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20248:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10295:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12777:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11766:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8812:103;;;;;;;;;;;;;:::i;:::-;;20119:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20477:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22837:87;;;;;;;;;;;;;:::i;:::-;;21005:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8557:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13017:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20067:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21370:853;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22442:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14217:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20159:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15056:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22234:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20600:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20317:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20201:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14513:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8923:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11386:372;11488:4;11540:25;11525:40;;;:11;:40;;;;:105;;;;11597:33;11582:48;;;:11;:48;;;;11525:105;:172;;;;11662:35;11647:50;;;:11;:50;;;;11525:172;:225;;;;11714:36;11738:11;11714:23;:36::i;:::-;11525:225;11505:245;;11386:372;;;:::o;12909:100::-;12963:13;12996:5;12989:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12909:100;:::o;13995:214::-;14063:7;14091:16;14099:7;14091;:16::i;:::-;14083:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14177:15;:24;14193:7;14177:24;;;;;;;;;;;;;;;;;;;;;14170:31;;13995:214;;;:::o;13574:413::-;13647:13;13663:24;13679:7;13663:15;:24::i;:::-;13647:40;;13712:5;13706:11;;:2;:11;;;;13698:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13807:5;13791:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13816:37;13833:5;13840:12;:10;:12::i;:::-;13816:16;:37::i;:::-;13791:62;13769:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;13951:28;13960:2;13964:7;13973:5;13951:8;:28::i;:::-;13574:413;;;:::o;10187:100::-;10240:7;10267:12;;10260:19;;10187:100;:::o;14685:170::-;14819:28;14829:4;14835:2;14839:7;14819:9;:28::i;:::-;14685:170;;;:::o;10490:886::-;10579:7;10615:16;10625:5;10615:9;:16::i;:::-;10607:5;:24;10599:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10681:22;10706:13;:11;:13::i;:::-;10681:38;;10730:19;10760:25;10828:9;10823:466;10843:14;10839:1;:18;10823:466;;;10883:31;10917:11;:14;10929:1;10917:14;;;;;;;;;;;10883:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10980:1;10954:28;;:9;:14;;;:28;;;10950:111;;11027:9;:14;;;11007:34;;10950:111;11104:5;11083:26;;:17;:26;;;11079:195;;;11153:5;11138:11;:20;11134:85;;;11194:1;11187:8;;;;;;;;;11134:85;11241:13;;;;;;;11079:195;10823:466;10859:3;;;;;;;10823:466;;;;11312:56;;;;;;;;;;:::i;:::-;;;;;;;;10490:886;;;;;:::o;22641:186::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7630:1:::1;7780:7;;:19;;7772:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7630:1;7848:7;:18;;;;22705:12:::2;22723:10;:15;;22746:21;22723:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22704:68;;;22791:7;22783:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7879:1;7586::::1;7893:7;:22;;;;22641:186::o:0;14863:185::-;15001:39;15018:4;15024:2;15028:7;15001:39;;;;;;;;;;;;:16;:39::i;:::-;14863:185;;;:::o;22548:85::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22619:6:::1;22611:5;:14;;;;22548:85:::0;:::o;20248:33::-;;;;:::o;10295:187::-;10362:7;10398:13;:11;:13::i;:::-;10390:5;:21;10382:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10469:5;10462:12;;10295:187;;;:::o;12777:124::-;12841:7;12868:20;12880:7;12868:11;:20::i;:::-;:25;;;12861:32;;12777:124;;;:::o;11766:221::-;11830:7;11875:1;11858:19;;:5;:19;;;;11850:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11951:12;:19;11964:5;11951:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11943:36;;11936:43;;11766:221;;;:::o;8812:103::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;8877:30:::1;8904:1;8877:18;:30::i;:::-;8812:103::o:0;20119:33::-;;;;:::o;20477:46::-;;;;;;;;;;;;;;;;;:::o;22837:87::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22905:11:::1;;;;;;;;;;;22904:12;22890:11;;:26;;;;;;;;;;;;;;;;;;22837:87::o:0;21005:353::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;21078:17:::1;21098:14;;21078:34;;21159:9;;21149:6;21133:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:35;;21125:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21225:6;21212:9;:19;;21204:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21304:6;21292:9;:18;;;;:::i;:::-;21275:14;:35;;;;21321:29;21331:10;21343:6;21321:9;:29::i;:::-;8795:1;21005:353:::0;:::o;8557:87::-;8603:7;8630:6;;;;;;;;;;;8623:13;;8557:87;:::o;13017:104::-;13073:13;13106:7;13099:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13017:104;:::o;20067:45::-;;;;:::o;21370:853::-;21480:1;21468:9;;:13;;;;:::i;:::-;21459:6;21443:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:38;21442:88;;;;;21513:16;;21487:11;:23;21499:10;21487:23;;;;;;;;;;;;;;;;:42;21442:88;21437:737;;;21588:9;;21578:6;21562:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:35;;21554:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21641:11;;;;;;;;;;;21633:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;21737:5;;21728;;21719:6;:14;;;;:::i;:::-;21718:24;;;;:::i;:::-;21705:9;:37;;21697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21794:5;;21784:6;:15;;21776:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21863:6;21836:11;:23;21848:10;21836:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;21437:737;;;21940:9;;21930:6;21914:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:35;;21906:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21993:11;;;;;;;;;;;21985:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22074:5;;22065:6;:14;;;;:::i;:::-;22052:9;:27;;22044:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;22131:5;;22121:6;:15;;22113:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21437:737;22186:29;22196:10;22208:6;22186:9;:29::i;:::-;21370:853;:::o;22442:98::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22524:8:::1;22514:7;:18;;;;;;;;;;;;:::i;:::-;;22442:98:::0;:::o;14217:288::-;14324:12;:10;:12::i;:::-;14312:24;;:8;:24;;;;14304:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14425:8;14380:18;:32;14399:12;:10;:12::i;:::-;14380:32;;;;;;;;;;;;;;;:42;14413:8;14380:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14478:8;14449:48;;14464:12;:10;:12::i;:::-;14449:48;;;14488:8;14449:48;;;;;;:::i;:::-;;;;;;;;14217:288;;:::o;20159:35::-;;;;:::o;15056:355::-;15215:28;15225:4;15231:2;15235:7;15215:9;:28::i;:::-;15276:48;15299:4;15305:2;15309:7;15318:5;15276:22;:48::i;:::-;15254:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;15056:355;;;;:::o;22234:84::-;22278:7;22305:5;;22298:12;;22234:84;:::o;20600:397::-;20674:13;20708:17;20716:8;20708:7;:17::i;:::-;20700:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20787:28;20818:10;:8;:10::i;:::-;20787:41;;20877:1;20852:14;20846:28;:32;:143;;;;;;;;;;;;;;;;;20918:14;20933:28;20959:1;20950:8;:10;;;;:::i;:::-;20933:16;:28::i;:::-;20901:69;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20846:143;20839:150;;;20600:397;;;:::o;20317:25::-;;;;;;;;;;;;;:::o;20201:40::-;;;;:::o;14513:164::-;14610:4;14634:18;:25;14653:5;14634:25;;;;;;;;;;;;;;;:35;14660:8;14634:35;;;;;;;;;;;;;;;;;;;;;;;;;14627:42;;14513:164;;;;:::o;8923:201::-;8703:12;:10;:12::i;:::-;8692:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8734:12;:10;:12::i;:::-;8719:27;;:11;;;;;;;;;;;:27;;;8692:54;8684:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;9032:1:::1;9012:22;;:8;:22;;;;9004:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9088:28;9107:8;9088:18;:28::i;:::-;8923:201:::0;:::o;5485:157::-;5570:4;5609:25;5594:40;;;:11;:40;;;;5587:47;;5485:157;;;:::o;15419:111::-;15476:4;15510:12;;15500:7;:22;15493:29;;15419:111;;;:::o;7990:98::-;8043:7;8070:10;8063:17;;7990:98;:::o;18603:196::-;18745:2;18718:15;:24;18734:7;18718:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18783:7;18779:2;18763:28;;18772:5;18763:28;;;;;;;;;;;;18603:196;;;:::o;17128:1467::-;17243:35;17281:20;17293:7;17281:11;:20::i;:::-;17243:58;;17314:22;17356:13;:18;;;17340:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;17415:12;:10;:12::i;:::-;17391:36;;:20;17403:7;17391:11;:20::i;:::-;:36;;;17340:87;:154;;;;17444:50;17461:13;:18;;;17481:12;:10;:12::i;:::-;17444:16;:50::i;:::-;17340:154;17314:181;;17516:17;17508:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;17631:4;17609:26;;:13;:18;;;:26;;;17601:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;17711:1;17697:16;;:2;:16;;;;17689:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17768:43;17790:4;17796:2;17800:7;17809:1;17768:21;:43::i;:::-;17824:49;17841:1;17845:7;17854:13;:18;;;17824:8;:49::i;:::-;17951:1;17921:12;:18;17934:4;17921:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17995:1;17967:12;:16;17980:2;17967:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18041:2;18013:11;:20;18025:7;18013:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;18103:15;18058:11;:20;18070:7;18058:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;18136:19;18168:1;18158:7;:11;18136:33;;18229:1;18188:43;;:11;:24;18200:11;18188:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;18184:295;;;18256:20;18264:11;18256:7;:20::i;:::-;18252:212;;;18333:13;:18;;;18301:11;:24;18313:11;18301:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;18416:13;:28;;;18374:11;:24;18386:11;18374:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;18252:212;18184:295;17128:1467;18526:7;18522:2;18507:27;;18516:4;18507:27;;;;;;;;;;;;18545:42;18566:4;18572:2;18576:7;18585:1;18545:20;:42::i;:::-;17128:1467;;;;;:::o;12232:537::-;12293:21;;:::i;:::-;12335:16;12343:7;12335;:16::i;:::-;12327:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12441:12;12456:7;12441:22;;12436:245;12473:1;12465:4;:9;12436:245;;12503:31;12537:11;:17;12549:4;12537:17;;;;;;;;;;;12503:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12603:1;12577:28;;:9;:14;;;:28;;;12573:93;;12637:9;12630:16;;;;;;12573:93;12436:245;12476:6;;;;;;;;12436:245;;;;12704:57;;;;;;;;;;:::i;:::-;;;;;;;;12232:537;;;;:::o;9132:191::-;9206:16;9225:6;;;;;;;;;;;9206:25;;9251:8;9242:6;;:17;;;;;;;;;;;;;;;;;;9306:8;9275:40;;9296:8;9275:40;;;;;;;;;;;;9132:191;;:::o;15538:104::-;15607:27;15617:2;15621:8;15607:27;;;;;;;;;;;;:9;:27::i;:::-;15538:104;;:::o;18807:804::-;18962:4;18983:15;:2;:13;;;:15::i;:::-;18979:625;;;19035:2;19019:36;;;19056:12;:10;:12::i;:::-;19070:4;19076:7;19085:5;19019:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19015:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19282:1;19265:6;:13;:18;19261:273;;;19308:61;;;;;;;;;;:::i;:::-;;;;;;;;19261:273;19484:6;19478:13;19469:6;19465:2;19461:15;19454:38;19015:534;19152:45;;;19142:55;;;:6;:55;;;;19135:62;;;;;18979:625;19588:4;19581:11;;18807:804;;;;;;;:::o;22326:108::-;22386:13;22419:7;22412:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22326:108;:::o;154:542::-;210:13;259:1;250:5;:10;246:53;;;277:10;;;;;;;;;;;;;;;;;;;;;246:53;309:12;324:5;309:20;;340:14;365:78;380:1;372:4;:9;365:78;;398:8;;;;;:::i;:::-;;;;429:2;421:10;;;;;:::i;:::-;;;365:78;;;453:19;485:6;475:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:39;;503:154;519:1;510:5;:10;503:154;;547:1;537:11;;;;;:::i;:::-;;;614:2;606:5;:10;;;;:::i;:::-;593:2;:24;;;;:::i;:::-;580:39;;563:6;570;563:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;643:2;634:11;;;;;:::i;:::-;;;503:154;;;681:6;667:21;;;;;154:542;;;;:::o;19619:159::-;;;;;:::o;19786:158::-;;;;;:::o;15650:163::-;15773:32;15779:2;15783:8;15793:5;15800:4;15773:5;:32::i;:::-;15650:163;;;:::o;1575:125::-;1635:4;1691:1;1669:7;:19;;;:23;1662:30;;1575:125;;;:::o;15821:1298::-;15960:20;15983:12;;15960:35;;16028:1;16014:16;;:2;:16;;;;16006:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16099:1;16087:8;:13;;16079:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16158:61;16188:1;16192:2;16196:12;16210:8;16158:21;:61::i;:::-;16293:8;16257:12;:16;16270:2;16257:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16358:8;16317:12;:16;16330:2;16317:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16417:2;16384:11;:25;16396:12;16384:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;16484:15;16434:11;:25;16446:12;16434:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;16517:20;16540:12;16517:35;;16574:9;16569:415;16589:8;16585:1;:12;16569:415;;;16653:12;16649:2;16628:38;;16645:1;16628:38;;;;;;;;;;;;16689:4;16685:249;;;16752:59;16783:1;16787:2;16791:12;16805:5;16752:22;:59::i;:::-;16718:196;;;;;;;;;;;;:::i;:::-;;;;;;;;;16685:249;16954:14;;;;;;;16599:3;;;;;;;16569:415;;;;17015:12;17000;:27;;;;15821:1298;17051:60;17080:1;17084:2;17088:12;17102:8;17051:20;:60::i;:::-;15821:1298;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:133::-;;933:6;920:20;911:29;;949:30;973:5;949:30;:::i;:::-;901:84;;;;:::o;991:137::-;;1074:6;1061:20;1052:29;;1090:32;1116:5;1090:32;:::i;:::-;1042:86;;;;:::o;1134:141::-;;1221:6;1215:13;1206:22;;1237:32;1263:5;1237:32;:::i;:::-;1196:79;;;;:::o;1294:271::-;;1398:3;1391:4;1383:6;1379:17;1375:27;1365:2;;1416:1;1413;1406:12;1365:2;1456:6;1443:20;1481:78;1555:3;1547:6;1540:4;1532:6;1528:17;1481:78;:::i;:::-;1472:87;;1355:210;;;;;:::o;1585:273::-;;1690:3;1683:4;1675:6;1671:17;1667:27;1657:2;;1708:1;1705;1698:12;1657:2;1748:6;1735:20;1773:79;1848:3;1840:6;1833:4;1825:6;1821:17;1773:79;:::i;:::-;1764:88;;1647:211;;;;;:::o;1864:139::-;;1948:6;1935:20;1926:29;;1964:33;1991:5;1964:33;:::i;:::-;1916:87;;;;:::o;2009:262::-;;2117:2;2105:9;2096:7;2092:23;2088:32;2085:2;;;2133:1;2130;2123:12;2085:2;2176:1;2201:53;2246:7;2237:6;2226:9;2222:22;2201:53;:::i;:::-;2191:63;;2147:117;2075:196;;;;:::o;2277:407::-;;;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2418:1;2415;2408:12;2370:2;2461:1;2486:53;2531:7;2522:6;2511:9;2507:22;2486:53;:::i;:::-;2476:63;;2432:117;2588:2;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2559:118;2360:324;;;;;:::o;2690:552::-;;;;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2848:1;2845;2838:12;2800:2;2891:1;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2862:117;3018:2;3044:53;3089:7;3080:6;3069:9;3065:22;3044:53;:::i;:::-;3034:63;;2989:118;3146:2;3172:53;3217:7;3208:6;3197:9;3193:22;3172:53;:::i;:::-;3162:63;;3117:118;2790:452;;;;;:::o;3248:809::-;;;;;3416:3;3404:9;3395:7;3391:23;3387:33;3384:2;;;3433:1;3430;3423:12;3384:2;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3731:2;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3702:118;3887:2;3876:9;3872:18;3859:32;3918:18;3910:6;3907:30;3904:2;;;3950:1;3947;3940:12;3904:2;3978:62;4032:7;4023:6;4012:9;4008:22;3978:62;:::i;:::-;3968:72;;3830:220;3374:683;;;;;;;:::o;4063:401::-;;;4185:2;4173:9;4164:7;4160:23;4156:32;4153:2;;;4201:1;4198;4191:12;4153:2;4244:1;4269:53;4314:7;4305:6;4294:9;4290:22;4269:53;:::i;:::-;4259:63;;4215:117;4371:2;4397:50;4439:7;4430:6;4419:9;4415:22;4397:50;:::i;:::-;4387:60;;4342:115;4143:321;;;;;:::o;4470:407::-;;;4595:2;4583:9;4574:7;4570:23;4566:32;4563:2;;;4611:1;4608;4601:12;4563:2;4654:1;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4625:117;4781:2;4807:53;4852:7;4843:6;4832:9;4828:22;4807:53;:::i;:::-;4797:63;;4752:118;4553:324;;;;;:::o;4883:260::-;;4990:2;4978:9;4969:7;4965:23;4961:32;4958:2;;;5006:1;5003;4996:12;4958:2;5049:1;5074:52;5118:7;5109:6;5098:9;5094:22;5074:52;:::i;:::-;5064:62;;5020:116;4948:195;;;;:::o;5149:282::-;;5267:2;5255:9;5246:7;5242:23;5238:32;5235:2;;;5283:1;5280;5273:12;5235:2;5326:1;5351:63;5406:7;5397:6;5386:9;5382:22;5351:63;:::i;:::-;5341:73;;5297:127;5225:206;;;;:::o;5437:375::-;;5555:2;5543:9;5534:7;5530:23;5526:32;5523:2;;;5571:1;5568;5561:12;5523:2;5642:1;5631:9;5627:17;5614:31;5672:18;5664:6;5661:30;5658:2;;;5704:1;5701;5694:12;5658:2;5732:63;5787:7;5778:6;5767:9;5763:22;5732:63;:::i;:::-;5722:73;;5585:220;5513:299;;;;:::o;5818:262::-;;5926:2;5914:9;5905:7;5901:23;5897:32;5894:2;;;5942:1;5939;5932:12;5894:2;5985:1;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5956:117;5884:196;;;;:::o;6086:118::-;6173:24;6191:5;6173:24;:::i;:::-;6168:3;6161:37;6151:53;;:::o;6210:109::-;6291:21;6306:5;6291:21;:::i;:::-;6286:3;6279:34;6269:50;;:::o;6325:360::-;;6439:38;6471:5;6439:38;:::i;:::-;6493:70;6556:6;6551:3;6493:70;:::i;:::-;6486:77;;6572:52;6617:6;6612:3;6605:4;6598:5;6594:16;6572:52;:::i;:::-;6649:29;6671:6;6649:29;:::i;:::-;6644:3;6640:39;6633:46;;6415:270;;;;;:::o;6691:364::-;;6807:39;6840:5;6807:39;:::i;:::-;6862:71;6926:6;6921:3;6862:71;:::i;:::-;6855:78;;6942:52;6987:6;6982:3;6975:4;6968:5;6964:16;6942:52;:::i;:::-;7019:29;7041:6;7019:29;:::i;:::-;7014:3;7010:39;7003:46;;6783:272;;;;;:::o;7061:377::-;;7195:39;7228:5;7195:39;:::i;:::-;7250:89;7332:6;7327:3;7250:89;:::i;:::-;7243:96;;7348:52;7393:6;7388:3;7381:4;7374:5;7370:16;7348:52;:::i;:::-;7425:6;7420:3;7416:16;7409:23;;7171:267;;;;;:::o;7444:366::-;;7607:67;7671:2;7666:3;7607:67;:::i;:::-;7600:74;;7683:93;7772:3;7683:93;:::i;:::-;7801:2;7796:3;7792:12;7785:19;;7590:220;;;:::o;7816:366::-;;7979:67;8043:2;8038:3;7979:67;:::i;:::-;7972:74;;8055:93;8144:3;8055:93;:::i;:::-;8173:2;8168:3;8164:12;8157:19;;7962:220;;;:::o;8188:366::-;;8351:67;8415:2;8410:3;8351:67;:::i;:::-;8344:74;;8427:93;8516:3;8427:93;:::i;:::-;8545:2;8540:3;8536:12;8529:19;;8334:220;;;:::o;8560:366::-;;8723:67;8787:2;8782:3;8723:67;:::i;:::-;8716:74;;8799:93;8888:3;8799:93;:::i;:::-;8917:2;8912:3;8908:12;8901:19;;8706:220;;;:::o;8932:366::-;;9095:67;9159:2;9154:3;9095:67;:::i;:::-;9088:74;;9171:93;9260:3;9171:93;:::i;:::-;9289:2;9284:3;9280:12;9273:19;;9078:220;;;:::o;9304:366::-;;9467:67;9531:2;9526:3;9467:67;:::i;:::-;9460:74;;9543:93;9632:3;9543:93;:::i;:::-;9661:2;9656:3;9652:12;9645:19;;9450:220;;;:::o;9676:366::-;;9839:67;9903:2;9898:3;9839:67;:::i;:::-;9832:74;;9915:93;10004:3;9915:93;:::i;:::-;10033:2;10028:3;10024:12;10017:19;;9822:220;;;:::o;10048:366::-;;10211:67;10275:2;10270:3;10211:67;:::i;:::-;10204:74;;10287:93;10376:3;10287:93;:::i;:::-;10405:2;10400:3;10396:12;10389:19;;10194:220;;;:::o;10420:366::-;;10583:67;10647:2;10642:3;10583:67;:::i;:::-;10576:74;;10659:93;10748:3;10659:93;:::i;:::-;10777:2;10772:3;10768:12;10761:19;;10566:220;;;:::o;10792:366::-;;10955:67;11019:2;11014:3;10955:67;:::i;:::-;10948:74;;11031:93;11120:3;11031:93;:::i;:::-;11149:2;11144:3;11140:12;11133:19;;10938:220;;;:::o;11164:366::-;;11327:67;11391:2;11386:3;11327:67;:::i;:::-;11320:74;;11403:93;11492:3;11403:93;:::i;:::-;11521:2;11516:3;11512:12;11505:19;;11310:220;;;:::o;11536:366::-;;11699:67;11763:2;11758:3;11699:67;:::i;:::-;11692:74;;11775:93;11864:3;11775:93;:::i;:::-;11893:2;11888:3;11884:12;11877:19;;11682:220;;;:::o;11908:400::-;;12089:84;12171:1;12166:3;12089:84;:::i;:::-;12082:91;;12182:93;12271:3;12182:93;:::i;:::-;12300:1;12295:3;12291:11;12284:18;;12072:236;;;:::o;12314:366::-;;12477:67;12541:2;12536:3;12477:67;:::i;:::-;12470:74;;12553:93;12642:3;12553:93;:::i;:::-;12671:2;12666:3;12662:12;12655:19;;12460:220;;;:::o;12686:366::-;;12849:67;12913:2;12908:3;12849:67;:::i;:::-;12842:74;;12925:93;13014:3;12925:93;:::i;:::-;13043:2;13038:3;13034:12;13027:19;;12832:220;;;:::o;13058:366::-;;13221:67;13285:2;13280:3;13221:67;:::i;:::-;13214:74;;13297:93;13386:3;13297:93;:::i;:::-;13415:2;13410:3;13406:12;13399:19;;13204:220;;;:::o;13430:366::-;;13593:67;13657:2;13652:3;13593:67;:::i;:::-;13586:74;;13669:93;13758:3;13669:93;:::i;:::-;13787:2;13782:3;13778:12;13771:19;;13576:220;;;:::o;13802:366::-;;13965:67;14029:2;14024:3;13965:67;:::i;:::-;13958:74;;14041:93;14130:3;14041:93;:::i;:::-;14159:2;14154:3;14150:12;14143:19;;13948:220;;;:::o;14174:366::-;;14337:67;14401:2;14396:3;14337:67;:::i;:::-;14330:74;;14413:93;14502:3;14413:93;:::i;:::-;14531:2;14526:3;14522:12;14515:19;;14320:220;;;:::o;14546:366::-;;14709:67;14773:2;14768:3;14709:67;:::i;:::-;14702:74;;14785:93;14874:3;14785:93;:::i;:::-;14903:2;14898:3;14894:12;14887:19;;14692:220;;;:::o;14918:398::-;;15098:83;15179:1;15174:3;15098:83;:::i;:::-;15091:90;;15190:93;15279:3;15190:93;:::i;:::-;15308:1;15303:3;15299:11;15292:18;;15081:235;;;:::o;15322:366::-;;15485:67;15549:2;15544:3;15485:67;:::i;:::-;15478:74;;15561:93;15650:3;15561:93;:::i;:::-;15679:2;15674:3;15670:12;15663:19;;15468:220;;;:::o;15694:366::-;;15857:67;15921:2;15916:3;15857:67;:::i;:::-;15850:74;;15933:93;16022:3;15933:93;:::i;:::-;16051:2;16046:3;16042:12;16035:19;;15840:220;;;:::o;16066:366::-;;16229:67;16293:2;16288:3;16229:67;:::i;:::-;16222:74;;16305:93;16394:3;16305:93;:::i;:::-;16423:2;16418:3;16414:12;16407:19;;16212:220;;;:::o;16438:366::-;;16601:67;16665:2;16660:3;16601:67;:::i;:::-;16594:74;;16677:93;16766:3;16677:93;:::i;:::-;16795:2;16790:3;16786:12;16779:19;;16584:220;;;:::o;16810:366::-;;16973:67;17037:2;17032:3;16973:67;:::i;:::-;16966:74;;17049:93;17138:3;17049:93;:::i;:::-;17167:2;17162:3;17158:12;17151:19;;16956:220;;;:::o;17182:366::-;;17345:67;17409:2;17404:3;17345:67;:::i;:::-;17338:74;;17421:93;17510:3;17421:93;:::i;:::-;17539:2;17534:3;17530:12;17523:19;;17328:220;;;:::o;17554:366::-;;17717:67;17781:2;17776:3;17717:67;:::i;:::-;17710:74;;17793:93;17882:3;17793:93;:::i;:::-;17911:2;17906:3;17902:12;17895:19;;17700:220;;;:::o;17926:366::-;;18089:67;18153:2;18148:3;18089:67;:::i;:::-;18082:74;;18165:93;18254:3;18165:93;:::i;:::-;18283:2;18278:3;18274:12;18267:19;;18072:220;;;:::o;18298:118::-;18385:24;18403:5;18385:24;:::i;:::-;18380:3;18373:37;18363:53;;:::o;18422:701::-;;18725:95;18816:3;18807:6;18725:95;:::i;:::-;18718:102;;18837:95;18928:3;18919:6;18837:95;:::i;:::-;18830:102;;18949:148;19093:3;18949:148;:::i;:::-;18942:155;;19114:3;19107:10;;18707:416;;;;;:::o;19129:379::-;;19335:147;19478:3;19335:147;:::i;:::-;19328:154;;19499:3;19492:10;;19317:191;;;:::o;19514:222::-;;19645:2;19634:9;19630:18;19622:26;;19658:71;19726:1;19715:9;19711:17;19702:6;19658:71;:::i;:::-;19612:124;;;;:::o;19742:640::-;;19975:3;19964:9;19960:19;19952:27;;19989:71;20057:1;20046:9;20042:17;20033:6;19989:71;:::i;:::-;20070:72;20138:2;20127:9;20123:18;20114:6;20070:72;:::i;:::-;20152;20220:2;20209:9;20205:18;20196:6;20152:72;:::i;:::-;20271:9;20265:4;20261:20;20256:2;20245:9;20241:18;20234:48;20299:76;20370:4;20361:6;20299:76;:::i;:::-;20291:84;;19942:440;;;;;;;:::o;20388:210::-;;20513:2;20502:9;20498:18;20490:26;;20526:65;20588:1;20577:9;20573:17;20564:6;20526:65;:::i;:::-;20480:118;;;;:::o;20604:313::-;;20755:2;20744:9;20740:18;20732:26;;20804:9;20798:4;20794:20;20790:1;20779:9;20775:17;20768:47;20832:78;20905:4;20896:6;20832:78;:::i;:::-;20824:86;;20722:195;;;;:::o;20923:419::-;;21127:2;21116:9;21112:18;21104:26;;21176:9;21170:4;21166:20;21162:1;21151:9;21147:17;21140:47;21204:131;21330:4;21204:131;:::i;:::-;21196:139;;21094:248;;;:::o;21348:419::-;;21552:2;21541:9;21537:18;21529:26;;21601:9;21595:4;21591:20;21587:1;21576:9;21572:17;21565:47;21629:131;21755:4;21629:131;:::i;:::-;21621:139;;21519:248;;;:::o;21773:419::-;;21977:2;21966:9;21962:18;21954:26;;22026:9;22020:4;22016:20;22012:1;22001:9;21997:17;21990:47;22054:131;22180:4;22054:131;:::i;:::-;22046:139;;21944:248;;;:::o;22198:419::-;;22402:2;22391:9;22387:18;22379:26;;22451:9;22445:4;22441:20;22437:1;22426:9;22422:17;22415:47;22479:131;22605:4;22479:131;:::i;:::-;22471:139;;22369:248;;;:::o;22623:419::-;;22827:2;22816:9;22812:18;22804:26;;22876:9;22870:4;22866:20;22862:1;22851:9;22847:17;22840:47;22904:131;23030:4;22904:131;:::i;:::-;22896:139;;22794:248;;;:::o;23048:419::-;;23252:2;23241:9;23237:18;23229:26;;23301:9;23295:4;23291:20;23287:1;23276:9;23272:17;23265:47;23329:131;23455:4;23329:131;:::i;:::-;23321:139;;23219:248;;;:::o;23473:419::-;;23677:2;23666:9;23662:18;23654:26;;23726:9;23720:4;23716:20;23712:1;23701:9;23697:17;23690:47;23754:131;23880:4;23754:131;:::i;:::-;23746:139;;23644:248;;;:::o;23898:419::-;;24102:2;24091:9;24087:18;24079:26;;24151:9;24145:4;24141:20;24137:1;24126:9;24122:17;24115:47;24179:131;24305:4;24179:131;:::i;:::-;24171:139;;24069:248;;;:::o;24323:419::-;;24527:2;24516:9;24512:18;24504:26;;24576:9;24570:4;24566:20;24562:1;24551:9;24547:17;24540:47;24604:131;24730:4;24604:131;:::i;:::-;24596:139;;24494:248;;;:::o;24748:419::-;;24952:2;24941:9;24937:18;24929:26;;25001:9;24995:4;24991:20;24987:1;24976:9;24972:17;24965:47;25029:131;25155:4;25029:131;:::i;:::-;25021:139;;24919:248;;;:::o;25173:419::-;;25377:2;25366:9;25362:18;25354:26;;25426:9;25420:4;25416:20;25412:1;25401:9;25397:17;25390:47;25454:131;25580:4;25454:131;:::i;:::-;25446:139;;25344:248;;;:::o;25598:419::-;;25802:2;25791:9;25787:18;25779:26;;25851:9;25845:4;25841:20;25837:1;25826:9;25822:17;25815:47;25879:131;26005:4;25879:131;:::i;:::-;25871:139;;25769:248;;;:::o;26023:419::-;;26227:2;26216:9;26212:18;26204:26;;26276:9;26270:4;26266:20;26262:1;26251:9;26247:17;26240:47;26304:131;26430:4;26304:131;:::i;:::-;26296:139;;26194:248;;;:::o;26448:419::-;;26652:2;26641:9;26637:18;26629:26;;26701:9;26695:4;26691:20;26687:1;26676:9;26672:17;26665:47;26729:131;26855:4;26729:131;:::i;:::-;26721:139;;26619:248;;;:::o;26873:419::-;;27077:2;27066:9;27062:18;27054:26;;27126:9;27120:4;27116:20;27112:1;27101:9;27097:17;27090:47;27154:131;27280:4;27154:131;:::i;:::-;27146:139;;27044:248;;;:::o;27298:419::-;;27502:2;27491:9;27487:18;27479:26;;27551:9;27545:4;27541:20;27537:1;27526:9;27522:17;27515:47;27579:131;27705:4;27579:131;:::i;:::-;27571:139;;27469:248;;;:::o;27723:419::-;;27927:2;27916:9;27912:18;27904:26;;27976:9;27970:4;27966:20;27962:1;27951:9;27947:17;27940:47;28004:131;28130:4;28004:131;:::i;:::-;27996:139;;27894:248;;;:::o;28148:419::-;;28352:2;28341:9;28337:18;28329:26;;28401:9;28395:4;28391:20;28387:1;28376:9;28372:17;28365:47;28429:131;28555:4;28429:131;:::i;:::-;28421:139;;28319:248;;;:::o;28573:419::-;;28777:2;28766:9;28762:18;28754:26;;28826:9;28820:4;28816:20;28812:1;28801:9;28797:17;28790:47;28854:131;28980:4;28854:131;:::i;:::-;28846:139;;28744:248;;;:::o;28998:419::-;;29202:2;29191:9;29187:18;29179:26;;29251:9;29245:4;29241:20;29237:1;29226:9;29222:17;29215:47;29279:131;29405:4;29279:131;:::i;:::-;29271:139;;29169:248;;;:::o;29423:419::-;;29627:2;29616:9;29612:18;29604:26;;29676:9;29670:4;29666:20;29662:1;29651:9;29647:17;29640:47;29704:131;29830:4;29704:131;:::i;:::-;29696:139;;29594:248;;;:::o;29848:419::-;;30052:2;30041:9;30037:18;30029:26;;30101:9;30095:4;30091:20;30087:1;30076:9;30072:17;30065:47;30129:131;30255:4;30129:131;:::i;:::-;30121:139;;30019:248;;;:::o;30273:419::-;;30477:2;30466:9;30462:18;30454:26;;30526:9;30520:4;30516:20;30512:1;30501:9;30497:17;30490:47;30554:131;30680:4;30554:131;:::i;:::-;30546:139;;30444:248;;;:::o;30698:419::-;;30902:2;30891:9;30887:18;30879:26;;30951:9;30945:4;30941:20;30937:1;30926:9;30922:17;30915:47;30979:131;31105:4;30979:131;:::i;:::-;30971:139;;30869:248;;;:::o;31123:419::-;;31327:2;31316:9;31312:18;31304:26;;31376:9;31370:4;31366:20;31362:1;31351:9;31347:17;31340:47;31404:131;31530:4;31404:131;:::i;:::-;31396:139;;31294:248;;;:::o;31548:419::-;;31752:2;31741:9;31737:18;31729:26;;31801:9;31795:4;31791:20;31787:1;31776:9;31772:17;31765:47;31829:131;31955:4;31829:131;:::i;:::-;31821:139;;31719:248;;;:::o;31973:419::-;;32177:2;32166:9;32162:18;32154:26;;32226:9;32220:4;32216:20;32212:1;32201:9;32197:17;32190:47;32254:131;32380:4;32254:131;:::i;:::-;32246:139;;32144:248;;;:::o;32398:222::-;;32529:2;32518:9;32514:18;32506:26;;32542:71;32610:1;32599:9;32595:17;32586:6;32542:71;:::i;:::-;32496:124;;;;:::o;32626:129::-;;32687:20;;:::i;:::-;32677:30;;32716:33;32744:4;32736:6;32716:33;:::i;:::-;32667:88;;;:::o;32761:75::-;;32827:2;32821:9;32811:19;;32801:35;:::o;32842:307::-;;32993:18;32985:6;32982:30;32979:2;;;33015:18;;:::i;:::-;32979:2;33053:29;33075:6;33053:29;:::i;:::-;33045:37;;33137:4;33131;33127:15;33119:23;;32908:241;;;:::o;33155:308::-;;33307:18;33299:6;33296:30;33293:2;;;33329:18;;:::i;:::-;33293:2;33367:29;33389:6;33367:29;:::i;:::-;33359:37;;33451:4;33445;33441:15;33433:23;;33222:241;;;:::o;33469:98::-;;33554:5;33548:12;33538:22;;33527:40;;;:::o;33573:99::-;;33659:5;33653:12;33643:22;;33632:40;;;:::o;33678:168::-;;33795:6;33790:3;33783:19;33835:4;33830:3;33826:14;33811:29;;33773:73;;;;:::o;33852:147::-;;33990:3;33975:18;;33965:34;;;;:::o;34005:169::-;;34123:6;34118:3;34111:19;34163:4;34158:3;34154:14;34139:29;;34101:73;;;;:::o;34180:148::-;;34319:3;34304:18;;34294:34;;;;:::o;34334:305::-;;34393:20;34411:1;34393:20;:::i;:::-;34388:25;;34427:20;34445:1;34427:20;:::i;:::-;34422:25;;34581:1;34513:66;34509:74;34506:1;34503:81;34500:2;;;34587:18;;:::i;:::-;34500:2;34631:1;34628;34624:9;34617:16;;34378:261;;;;:::o;34645:185::-;;34702:20;34720:1;34702:20;:::i;:::-;34697:25;;34736:20;34754:1;34736:20;:::i;:::-;34731:25;;34775:1;34765:2;;34780:18;;:::i;:::-;34765:2;34822:1;34819;34815:9;34810:14;;34687:143;;;;:::o;34836:348::-;;34899:20;34917:1;34899:20;:::i;:::-;34894:25;;34933:20;34951:1;34933:20;:::i;:::-;34928:25;;35121:1;35053:66;35049:74;35046:1;35043:81;35038:1;35031:9;35024:17;35020:105;35017:2;;;35128:18;;:::i;:::-;35017:2;35176:1;35173;35169:9;35158:20;;34884:300;;;;:::o;35190:191::-;;35250:20;35268:1;35250:20;:::i;:::-;35245:25;;35284:20;35302:1;35284:20;:::i;:::-;35279:25;;35323:1;35320;35317:8;35314:2;;;35328:18;;:::i;:::-;35314:2;35373:1;35370;35366:9;35358:17;;35235:146;;;;:::o;35387:96::-;;35453:24;35471:5;35453:24;:::i;:::-;35442:35;;35432:51;;;:::o;35489:90::-;;35566:5;35559:13;35552:21;35541:32;;35531:48;;;:::o;35585:149::-;;35661:66;35654:5;35650:78;35639:89;;35629:105;;;:::o;35740:126::-;;35817:42;35810:5;35806:54;35795:65;;35785:81;;;:::o;35872:77::-;;35938:5;35927:16;;35917:32;;;:::o;35955:154::-;36039:6;36034:3;36029;36016:30;36101:1;36092:6;36087:3;36083:16;36076:27;36006:103;;;:::o;36115:307::-;36183:1;36193:113;36207:6;36204:1;36201:13;36193:113;;;36292:1;36287:3;36283:11;36277:18;36273:1;36268:3;36264:11;36257:39;36229:2;36226:1;36222:10;36217:15;;36193:113;;;36324:6;36321:1;36318:13;36315:2;;;36404:1;36395:6;36390:3;36386:16;36379:27;36315:2;36164:258;;;;:::o;36428:320::-;;36509:1;36503:4;36499:12;36489:22;;36556:1;36550:4;36546:12;36577:18;36567:2;;36633:4;36625:6;36621:17;36611:27;;36567:2;36695;36687:6;36684:14;36664:18;36661:38;36658:2;;;36714:18;;:::i;:::-;36658:2;36479:269;;;;:::o;36754:281::-;36837:27;36859:4;36837:27;:::i;:::-;36829:6;36825:40;36967:6;36955:10;36952:22;36931:18;36919:10;36916:34;36913:62;36910:2;;;36978:18;;:::i;:::-;36910:2;37018:10;37014:2;37007:22;36797:238;;;:::o;37041:233::-;;37103:24;37121:5;37103:24;:::i;:::-;37094:33;;37149:66;37142:5;37139:77;37136:2;;;37219:18;;:::i;:::-;37136:2;37266:1;37259:5;37255:13;37248:20;;37084:190;;;:::o;37280:176::-;;37329:20;37347:1;37329:20;:::i;:::-;37324:25;;37363:20;37381:1;37363:20;:::i;:::-;37358:25;;37402:1;37392:2;;37407:18;;:::i;:::-;37392:2;37448:1;37445;37441:9;37436:14;;37314:142;;;;:::o;37462:180::-;37510:77;37507:1;37500:88;37607:4;37604:1;37597:15;37631:4;37628:1;37621:15;37648:180;37696:77;37693:1;37686:88;37793:4;37790:1;37783:15;37817:4;37814:1;37807:15;37834:180;37882:77;37879:1;37872:88;37979:4;37976:1;37969:15;38003:4;38000:1;37993:15;38020:180;38068:77;38065:1;38058:88;38165:4;38162:1;38155:15;38189:4;38186:1;38179:15;38206:102;;38298:2;38294:7;38289:2;38282:5;38278:14;38274:28;38264:38;;38254:54;;;:::o;38314:221::-;38454:34;38450:1;38442:6;38438:14;38431:58;38523:4;38518:2;38510:6;38506:15;38499:29;38420:115;:::o;38541:170::-;38681:22;38677:1;38669:6;38665:14;38658:46;38647:64;:::o;38717:179::-;38857:31;38853:1;38845:6;38841:14;38834:55;38823:73;:::o;38902:225::-;39042:34;39038:1;39030:6;39026:14;39019:58;39111:8;39106:2;39098:6;39094:15;39087:33;39008:119;:::o;39133:229::-;39273:34;39269:1;39261:6;39257:14;39250:58;39342:12;39337:2;39329:6;39325:15;39318:37;39239:123;:::o;39368:222::-;39508:34;39504:1;39496:6;39492:14;39485:58;39577:5;39572:2;39564:6;39560:15;39553:30;39474:116;:::o;39596:224::-;39736:34;39732:1;39724:6;39720:14;39713:58;39805:7;39800:2;39792:6;39788:15;39781:32;39702:118;:::o;39826:172::-;39966:24;39962:1;39954:6;39950:14;39943:48;39932:66;:::o;40004:244::-;40144:34;40140:1;40132:6;40128:14;40121:58;40213:27;40208:2;40200:6;40196:15;40189:52;40110:138;:::o;40254:230::-;40394:34;40390:1;40382:6;40378:14;40371:58;40463:13;40458:2;40450:6;40446:15;40439:38;40360:124;:::o;40490:174::-;40630:26;40626:1;40618:6;40614:14;40607:50;40596:68;:::o;40670:225::-;40810:34;40806:1;40798:6;40794:14;40787:58;40879:8;40874:2;40866:6;40862:15;40855:33;40776:119;:::o;40901:155::-;41041:7;41037:1;41029:6;41025:14;41018:31;41007:49;:::o;41062:182::-;41202:34;41198:1;41190:6;41186:14;41179:58;41168:76;:::o;41250:171::-;41390:23;41386:1;41378:6;41374:14;41367:47;41356:65;:::o;41427:234::-;41567:34;41563:1;41555:6;41551:14;41544:58;41636:17;41631:2;41623:6;41619:15;41612:42;41533:128;:::o;41667:176::-;41807:28;41803:1;41795:6;41791:14;41784:52;41773:70;:::o;41849:237::-;41989:34;41985:1;41977:6;41973:14;41966:58;42058:20;42053:2;42045:6;42041:15;42034:45;41955:131;:::o;42092:168::-;42232:20;42228:1;42220:6;42216:14;42209:44;42198:62;:::o;42266:221::-;42406:34;42402:1;42394:6;42390:14;42383:58;42475:4;42470:2;42462:6;42458:15;42451:29;42372:115;:::o;42493:114::-;42599:8;:::o;42613:166::-;42753:18;42749:1;42741:6;42737:14;42730:42;42719:60;:::o;42785:238::-;42925:34;42921:1;42913:6;42909:14;42902:58;42994:21;42989:2;42981:6;42977:15;42970:46;42891:132;:::o;43029:220::-;43169:34;43165:1;43157:6;43153:14;43146:58;43238:3;43233:2;43225:6;43221:15;43214:28;43135:114;:::o;43255:227::-;43395:34;43391:1;43383:6;43379:14;43372:58;43464:10;43459:2;43451:6;43447:15;43440:35;43361:121;:::o;43488:233::-;43628:34;43624:1;43616:6;43612:14;43605:58;43697:16;43692:2;43684:6;43680:15;43673:41;43594:127;:::o;43727:181::-;43867:33;43863:1;43855:6;43851:14;43844:57;43833:75;:::o;43914:234::-;44054:34;44050:1;44042:6;44038:14;44031:58;44123:17;44118:2;44110:6;44106:15;44099:42;44020:128;:::o;44154:232::-;44294:34;44290:1;44282:6;44278:14;44271:58;44363:15;44358:2;44350:6;44346:15;44339:40;44260:126;:::o;44392:122::-;44465:24;44483:5;44465:24;:::i;:::-;44458:5;44455:35;44445:2;;44504:1;44501;44494:12;44445:2;44435:79;:::o;44520:116::-;44590:21;44605:5;44590:21;:::i;:::-;44583:5;44580:32;44570:2;;44626:1;44623;44616:12;44570:2;44560:76;:::o;44642:120::-;44714:23;44731:5;44714:23;:::i;:::-;44707:5;44704:34;44694:2;;44752:1;44749;44742:12;44694:2;44684:78;:::o;44768:122::-;44841:24;44859:5;44841:24;:::i;:::-;44834:5;44831:35;44821:2;;44880:1;44877;44870:12;44821:2;44811:79;:::o

Swarm Source

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