ETH Price: $3,082.92 (-6.54%)
 

Overview

Max Total Supply

0 JATNFT

Holders

2

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
Floyd's World: Deployer
Balance
111 JATNFT
0x04231ce30049ab88a795c3Dd10A15116E83811B7
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:
JustATestNFT

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
petersburg EvmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.9.0;


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

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

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

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

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

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

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

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

    
    function approve(address to, uint256 tokenId) external;

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

    
    function setApprovalForAll(address operator, bool _approved) external;

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

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

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

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);
}

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

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 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
    ) private 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);
            }
        }
    }
}

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

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

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);
    }
}

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

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

    
    string private _name;

    
    string private _symbol;

    
    mapping(uint256 => address) private _owners;

    
    mapping(address => uint256) private _balances;

    
    mapping(uint256 => address) private _tokenApprovals;

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

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

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

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

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

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

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

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

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

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

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

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

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

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

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

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

    
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

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

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

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

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

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

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

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

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

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

        
        _approve(address(0), tokenId);

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

        
        _approve(address(0), tokenId);

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

        emit Transfer(from, to, tokenId);
    }

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    
    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract BOTB {
    function balanceOf(address owner) external view virtual returns (uint256 balance);
}

library Sort {
    struct BidOffer {
        address account;
        uint256 offeredPrice;
    }

    function sort(
        BidOffer[] storage arr,
        int256 left,
        int256 right
    ) internal {
        int256 i = left;
        int256 j = right;
        if (i == j) return;
        uint256 pivot = arr[uint256(left + (right - left) / 2)].offeredPrice;
        while (i <= j) {
            while (arr[uint256(i)].offeredPrice < pivot) i++;
            while (pivot < arr[uint256(j)].offeredPrice) j--;
            if (i <= j) {
                (arr[uint256(i)].offeredPrice, arr[uint256(j)].offeredPrice) = (
                    arr[uint256(j)].offeredPrice,
                    arr[uint256(i)].offeredPrice
                );
                (arr[uint256(i)].account, arr[uint256(j)].account) = (arr[uint256(j)].account, arr[uint256(i)].account);
                i++;
                j--;
            }
        }
        if (left < j) sort(arr, left, j);
        if (i < right) sort(arr, i, right);
    }
}

contract JustATestNFT is Ownable, ERC721 {
    BOTB public botb;

    address[] private __payees = [
        address(0xE7c08dBa10Ce07e1b70e87A355957CC8bfc95DBC), 
        address(0x35a409031a548A02737Add2b33b37013b0AE3295), 
        address(0x1c447BD23424903610A2198315831122C99463B9), 
        address(0x04231ce30049ab88a795c3Dd10A15116E83811B7), 
        address(0x4dDd7EC653Fc4814ff11996d7d68b6625e4DFDba), 
        address(0xe6774892A893984F345975f5d4E33C44B460AB30) 
    ];

    uint256[] private __shares = [83270, 4170, 5060, 500, 3500, 3500];

    bool public _tokensLoaded = false;

    
    bool public _isTicketSeason = false;
    bool private _canOpenTicketSeason = true;
    uint256 private _ticketCounter = 0;
    
    bool private _useExternalBotbService = false;

    uint256 private maxTicketsDefaultValue = 8000;

    uint256 private ticketToTokenGap = 2000;
    uint256 private maxTickets = maxTicketsDefaultValue;

    mapping(address => uint256[]) private usersToTickets;
    

    uint256 private totalTokens;
    
    uint256 private _tokenCounter = 0;

    
    string public baseURI;

    constructor() ERC721("JustATestNFT", "JATNFT") {
        baseURI = "https://floydnft.com/token/";
        botb = BOTB(0x3a8778A58993bA4B941f85684D74750043A4bB5f);
        ownerMint(111);
    }

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

    function setBaseURI(string memory __baseURI) public onlyOwner {
        baseURI = __baseURI;
    }

    function setUseExternalBotbService(bool value) public onlyOwner {
        _useExternalBotbService = value;
    }

    uint256 private _ticketPrice = 0.11 ether;

    function openTicketSeason() public onlyOwner {
        require(_canOpenTicketSeason, "Ticket Season can't be open right now");
        _isTicketSeason = true;
        _canOpenTicketSeason = false;
    }

    function setIsTicketSeason(bool value) public onlyOwner {
        _isTicketSeason = value;
    }

    function setTicketPrice(uint256 newPrice) public onlyOwner {
        _ticketPrice = newPrice;
    }

    function closeTicketSeason() public onlyOwner {
        _isTicketSeason = false;
        if (_ticketCounter < maxTickets) {
            maxTickets = _ticketCounter;
        }
        _canOpenTicketSeason = false;
    }

    function resetCanOpenTicketSeason() public onlyOwner {
        _canOpenTicketSeason = true;
        _isTicketSeason = false;
        maxTickets = maxTicketsDefaultValue;
    }

    function buyTickets(uint256 howMany, uint256 bullsOnAccount) external payable {
        uint256 availableBulls = bullsOnAccount;
        uint256 maxTicketsPerAccount = 1;
        if (_useExternalBotbService) {
            availableBulls = botb.balanceOf(msg.sender);
        }
        if (availableBulls < 4) {
            maxTicketsPerAccount = availableBulls;
        } else {
            maxTicketsPerAccount = ((availableBulls * 70) / 100);
            if (((availableBulls * 70) % 100) > 0) {
                maxTicketsPerAccount += 1;
            }
        }
        require(_isTicketSeason, "Ticket Season is not Open");

        require(
            howMany > 0 && howMany <= (maxTicketsPerAccount - usersToTickets[msg.sender].length),
            string("Can't buy less than 1 ticket or exceed your maximum")
        );
        require(
            howMany <= (maxTickets - _ticketCounter),
            string("Can't buy less than 1 ticket or exceed the available ones")
        );
        require(msg.value == howMany * _ticketPrice, "Unmatched Ticket price");
        for (uint64 i = 0; i < howMany; i++) {
            uint256 ticketId = (ticketToTokenGap + _ticketCounter++);
            usersToTickets[msg.sender].push(ticketId);
            _safeMint(msg.sender, ticketId);
        }
    }

    function buyFloyds(uint256 howMany) external payable {
        require(_tokensLoaded, "Tokens not available yet");
        require(msg.value == howMany * 0.15 ether, "Each Floyd costs 0.15 ether");
        require(
            howMany > 0 && howMany < (totalTokens - _tokenCounter),
            string("Can't buy less than 1 token or exceed the available ones")
        );
        for (uint64 i = 0; i < howMany; i++) {
            uint256 tkId = getNextToken();
            _safeMint(msg.sender, tkId);
        }
    }

    function ownerMint(uint256 howMany) public onlyOwner {
        for (uint64 i = 0; i < howMany; i++) {
            uint256 tkId = getNextToken();
            _safeMint(msg.sender, tkId);
        }
    }

    function loadTokens(uint256 howMany) public onlyOwner {
        totalTokens = howMany;
        _tokensLoaded = true;
    }

    function getNextToken() private returns (uint256) {
        if (_tokenCounter == ticketToTokenGap) {
            _tokenCounter += maxTickets;
        }
        return _tokenCounter++;
    }

    function withdrawAll() public onlyOwner {
        uint256 balance = address(this).balance;
        uint256 arrayLength = __payees.length;
        for (uint256 i = 0; i < arrayLength; i++) {
            payable(__payees[i]).transfer((balance * __shares[i]) / 100000);
        }
        payable(owner()).transfer(balance);
    }

    using Sort for Sort.BidOffer[];

    bool public _isAuctionSeason = false;
    uint256 private _maxTokensToAuction;
    uint256 private _minBiddedValue = 2.5 ether;
    uint256 private _minAllowedValue = 0.15 ether;

    Sort.BidOffer[] private ds;

    function startAuction(uint256 howMany) public onlyOwner {
        _isAuctionSeason = true;
        _maxTokensToAuction = howMany;
    }

    function getHowManyBidsSoFar() public view onlyOwner returns (uint256) {
        return ds.length;
    }

    function bid(uint256 howMany, uint256 offeredPrice) external payable {
        require(_isAuctionSeason, "Auction is not open");
        require(
            msg.value == howMany * offeredPrice,
            "Eth sent needs to match offered price times how many times you want"
        );
        require(
            offeredPrice >= _minAllowedValue && offeredPrice <= _minBiddedValue,
            "Offered value must be between 0.15 and 2.5 Eth"
        );
        require(howMany > 0, string("Can't bid less than 1 token"));

        for (uint256 i = 0; i < howMany; i++) {
            Sort.BidOffer memory bo = Sort.BidOffer(msg.sender, offeredPrice);
            ds.push(bo);
        }
    }

    function getCurrentMinValue() public onlyOwner returns (uint256) {
        ds.sort(0, int256(ds.length - 1)); 
        uint256 startIndex = 0;
        if (ds.length > _maxTokensToAuction) {
            startIndex = ds.length - _maxTokensToAuction;
        }
        uint256 minValue = ds[startIndex].offeredPrice;
        return uint256(minValue);
    }

    function closeAuction() public onlyOwner {
        _isAuctionSeason = false;
        ds.sort(0, int256(ds.length - 1));
        uint256 startIndex = 0;
        if (ds.length > _maxTokensToAuction) {
            startIndex = ds.length - _maxTokensToAuction;
            for (uint256 i = 0; i < startIndex; i++) {
                refund(ds[i].account, ds[i].offeredPrice);
            }
        }
        uint256 minValue = ds[startIndex].offeredPrice;
        for (uint256 i = startIndex; i < ds.length; i++) {
            uint256 tkId = getNextToken();
            _safeMint(ds[i].account, tkId);
            refund(ds[i].account, ds[i].offeredPrice - minValue);
        }
    }

    function refund(address to, uint256 amount) private {
        payable(to).transfer(amount);
    }
}

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":[],"name":"_isAuctionSeason","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isTicketSeason","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokensLoaded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMany","type":"uint256"},{"internalType":"uint256","name":"offeredPrice","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"botb","outputs":[{"internalType":"contract BOTB","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMany","type":"uint256"}],"name":"buyFloyds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMany","type":"uint256"},{"internalType":"uint256","name":"bullsOnAccount","type":"uint256"}],"name":"buyTickets","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"closeAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeTicketSeason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentMinValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getHowManyBidsSoFar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMany","type":"uint256"}],"name":"loadTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTicketSeason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMany","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetCanOpenTicketSeason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsTicketSeason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setTicketPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setUseExternalBotbService","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMany","type":"uint256"}],"name":"startAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

61014060405273e7c08dba10ce07e1b70e87a355957cc8bfc95dbc60809081527335a409031a548a02737add2b33b37013b0ae329560a052731c447bd23424903610a2198315831122c99463b960c0527304231ce30049ab88a795c3dd10a15116e83811b760e052734ddd7ec653fc4814ff11996d7d68b6625e4dfdba6101005273e6774892a893984f345975f5d4e33c44b460ab3061012052620000a990600890600662000815565b506040805160c08101825262014546815261104a60208201526113c4918101919091526101f46060820152610dac6080820181905260a0820152620000f39060099060066200087f565b50600a805462ffffff1916620100001790556000600b819055600c805460ff19908116909155611f40600d8190556107d0600e55600f55601291909155670186cc6acd4b00006014556015805490911690556722b1c8c1227a0000601755670214e8348c4f00006018553480156200016a57600080fd5b506040518060400160405280600c81526020017f4a75737441546573744e465400000000000000000000000000000000000000008152506040518060400160405280600681526020017f4a41544e46540000000000000000000000000000000000000000000000000000815250620001f1620001eb6200029f60201b60201c565b620002a3565b815162000206906001906020850190620008c4565b5080516200021c906002906020840190620008c4565b505060408051808201909152601b8082527f68747470733a2f2f666c6f79646e66742e636f6d2f746f6b656e2f0000000000602090920191825262000266925060139190620008c4565b50600780546001600160a01b031916733a8778a58993ba4b941f85684d74750043a4bb5f17905562000299606f620002f3565b62000b06565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146200036d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b81816001600160401b03161015620003b25760006200038e620003b6565b90506200039c3382620003fc565b5080620003a98162000aad565b91505062000370565b5050565b6000600e546012541415620003e157600f5460126000828254620003db919062000a1e565b90915550505b60128054906000620003f38362000a8f565b91905055905090565b620003b28282604051806020016040528060008152506200041e60201b60201c565b6200042a8383620004bb565b62000439600084848462000637565b620004b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260326024820152600080516020620038c183398151915260448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840162000364565b505050565b6001600160a01b0382166200052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640162000364565b6000818152600360205260409020546001600160a01b031615620005ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640162000364565b6001600160a01b0382166000908152600460205260408120805460019290620005d990849062000a1e565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000658846001600160a01b03166200080f60201b62001afa1760201c565b1562000803576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290620006ab903390899088908890600401620009a3565b602060405180830381600087803b158015620006c657600080fd5b505af1925050508015620006f9575060408051601f3d908101601f19168201909252620006f69181019062000958565b60015b620007b7573d8080156200072a576040519150601f19603f3d011682016040523d82523d6000602084013e6200072f565b606091505b508051620007af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260326024820152600080516020620038c183398151915260448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840162000364565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905062000807565b5060015b949350505050565b3b151590565b8280548282559060005260206000209081019282156200086d579160200282015b828111156200086d57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000836565b506200087b92915062000941565b5090565b8280548282559060005260206000209081019282156200086d579160200282015b828111156200086d578251829062ffffff16905591602001919060010190620008a0565b828054620008d29062000a39565b90600052602060002090601f016020900481019282620008f657600085556200086d565b82601f106200091157805160ff19168380011785556200086d565b828001600101855582156200086d579182015b828111156200086d57825182559160200191906001019062000924565b5b808211156200087b576000815560010162000942565b6000602082840312156200096b57600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200099c57600080fd5b9392505050565b600060018060a01b038087168352602081871681850152856040850152608060608501528451915081608085015260005b82811015620009f25785810182015185820160a001528101620009d4565b8281111562000a0557600060a084870101525b5050601f01601f19169190910160a00195945050505050565b6000821982111562000a345762000a3462000ad7565b500190565b600181811c9082168062000a4e57607f821691505b6020821081141562000a89577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060001982141562000aa65762000aa662000ad7565b5060010190565b60006001600160401b038281168082141562000acd5762000acd62000ad7565b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b612dab8062000b166000396000f3fe6080604052600436106102245760003560e01c806370a0823111610123578063a4767826116100ab578063e8ed76631161006f578063e8ed7663146105f0578063e985e9c51461060f578063f1036e4b14610658578063f19e75d41461066d578063f2fde38b1461068d57600080fd5b8063a476782614610561578063b88d4fde14610576578063c87b56dd14610596578063d2340ea1146105b6578063e6888ab1146105d057600080fd5b8063853828b6116100f2578063853828b6146104e65780638627df46146104fb5780638da5cb5b1461050e57806395d89b411461052c578063a22cb4651461054157600080fd5b806370a082311461047c578063715018a61461049c57806378ededb0146104b15780637ebbbb88146104d157600080fd5b806325d9ac90116101b157806347bc13571161017557806347bc1357146103fa57806355f804b314610414578063598647f8146104345780636352211e146104475780636c0360eb1461046757600080fd5b806325d9ac90146103705780632875446b146103905780632ee365a3146103a5578063378252f2146103c557806342842e0e146103da57600080fd5b8063081812fc116101f8578063081812fc146102c5578063095ea7b3146102fd5780630dab71951461031d578063159816501461033057806323b872dd1461035057600080fd5b8062b9b0531461022957806301ffc9a714610251578063065de74c1461028157806306fdde03146102a3575b600080fd5b34801561023557600080fd5b5061023e6106ad565b6040519081526020015b60405180910390f35b34801561025d57600080fd5b5061027161026c366004612804565b610753565b6040519015158152602001610248565b34801561028d57600080fd5b506102a161029c366004612887565b6107a5565b005b3480156102af57600080fd5b506102b86107e1565b6040516102489190612973565b3480156102d157600080fd5b506102e56102e0366004612887565b610873565b6040516001600160a01b039091168152602001610248565b34801561030957600080fd5b506102a16103183660046127bf565b610908565b6102a161032b366004612887565b610a1e565b34801561033c57600080fd5b506102a161034b366004612887565b610b68565b34801561035c57600080fd5b506102a161036b3660046126dd565b610b97565b34801561037c57600080fd5b506102a161038b3660046127e9565b610bc8565b34801561039c57600080fd5b5061023e610c0c565b3480156103b157600080fd5b506102a16103c0366004612887565b610c3e565b3480156103d157600080fd5b506102a1610c7a565b3480156103e657600080fd5b506102a16103f53660046126dd565b610e60565b34801561040657600080fd5b50600a546102719060ff1681565b34801561042057600080fd5b506102a161042f36600461283e565b610e7b565b6102a16104423660046128b9565b610eb8565b34801561045357600080fd5b506102e5610462366004612887565b611103565b34801561047357600080fd5b506102b861117a565b34801561048857600080fd5b5061023e61049736600461268f565b611208565b3480156104a857600080fd5b506102a161128f565b3480156104bd57600080fd5b506102a16104cc3660046127e9565b6112c5565b3480156104dd57600080fd5b506102a1611302565b3480156104f257600080fd5b506102a16113a4565b6102a16105093660046128b9565b6114bc565b34801561051a57600080fd5b506000546001600160a01b03166102e5565b34801561053857600080fd5b506102b8611777565b34801561054d57600080fd5b506102a161055c366004612795565b611786565b34801561056d57600080fd5b506102a161184b565b34801561058257600080fd5b506102a1610591366004612719565b61188e565b3480156105a257600080fd5b506102b86105b1366004612887565b6118c6565b3480156105c257600080fd5b506015546102719060ff1681565b3480156105dc57600080fd5b506007546102e5906001600160a01b031681565b3480156105fc57600080fd5b50600a5461027190610100900460ff1681565b34801561061b57600080fd5b5061027161062a3660046126aa565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561066457600080fd5b506102a16119a1565b34801561067957600080fd5b506102a1610688366004612887565b6119f7565b34801561069957600080fd5b506102a16106a836600461268f565b611a5f565b600080546001600160a01b031633146106e15760405162461bcd60e51b81526004016106d8906129d8565b60405180910390fd5b601954610700906000906106f790600190612b57565b60199190611b00565b60165460195460009110156107225760165460195461071f9190612b57565b90505b60006019828154811061073757610737612c8f565b9060005260206000209060020201600101549050809250505090565b60006001600160e01b031982166380ac58cd60e01b148061078457506001600160e01b03198216635b5e139f60e01b145b8061079f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146107cf5760405162461bcd60e51b81526004016106d8906129d8565b6015805460ff19166001179055601655565b6060600180546107f090612bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461081c90612bb8565b80156108695780601f1061083e57610100808354040283529160200191610869565b820191906000526020600020905b81548152906001019060200180831161084c57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108ec5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106d8565b506000908152600560205260409020546001600160a01b031690565b600061091382611103565b9050806001600160a01b0316836001600160a01b031614156109815760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106d8565b336001600160a01b038216148061099d575061099d813361062a565b610a0f5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106d8565b610a198383611dac565b505050565b600a5460ff16610a705760405162461bcd60e51b815260206004820152601860248201527f546f6b656e73206e6f7420617661696c61626c6520796574000000000000000060448201526064016106d8565b610a8281670214e8348c4f0000612af9565b3414610ad05760405162461bcd60e51b815260206004820152601b60248201527f4561636820466c6f796420636f73747320302e3135206574686572000000000060448201526064016106d8565b600081118015610aee5750601254601154610aeb9190612b57565b81105b604051806060016040528060388152602001612d3e6038913990610b255760405162461bcd60e51b81526004016106d89190612973565b5060005b818167ffffffffffffffff161015610b64576000610b45611e1a565b9050610b513382611e5b565b5080610b5c81612c27565b915050610b29565b5050565b6000546001600160a01b03163314610b925760405162461bcd60e51b81526004016106d8906129d8565b601455565b610ba13382611e75565b610bbd5760405162461bcd60e51b81526004016106d890612a0d565b610a19838383611f6c565b6000546001600160a01b03163314610bf25760405162461bcd60e51b81526004016106d8906129d8565b600a80549115156101000261ff0019909216919091179055565b600080546001600160a01b03163314610c375760405162461bcd60e51b81526004016106d8906129d8565b5060195490565b6000546001600160a01b03163314610c685760405162461bcd60e51b81526004016106d8906129d8565b601155600a805460ff19166001179055565b6000546001600160a01b03163314610ca45760405162461bcd60e51b81526004016106d8906129d8565b6015805460ff19169055601954610cc4906000906106f790600190612b57565b6016546019546000911015610d6257601654601954610ce39190612b57565b905060005b81811015610d6057610d4e60198281548110610d0657610d06612c8f565b6000918252602090912060029091020154601980546001600160a01b039092169184908110610d3757610d37612c8f565b90600052602060002090600202016001015461210c565b80610d5881612c13565b915050610ce8565b505b600060198281548110610d7757610d77612c8f565b906000526020600020906002020160010154905060008290505b601954811015610a19576000610da5611e1a565b9050610ddd60198381548110610dbd57610dbd612c8f565b60009182526020909120600290910201546001600160a01b031682611e5b565b610e4d60198381548110610df357610df3612c8f565b906000526020600020906002020160000160009054906101000a90046001600160a01b03168460198581548110610e2c57610e2c612c8f565b906000526020600020906002020160010154610e489190612b57565b61210c565b5080610e5881612c13565b915050610d91565b610a198383836040518060200160405280600081525061188e565b6000546001600160a01b03163314610ea55760405162461bcd60e51b81526004016106d8906129d8565b8051610b64906013906020840190612554565b60155460ff16610f005760405162461bcd60e51b815260206004820152601360248201527220bab1ba34b7b71034b9903737ba1037b832b760691b60448201526064016106d8565b610f0a8183612af9565b3414610f8a5760405162461bcd60e51b815260206004820152604360248201527f4574682073656e74206e6565647320746f206d61746368206f6666657265642060448201527f70726963652074696d657320686f77206d616e792074696d657320796f752077606482015262185b9d60ea1b608482015260a4016106d8565b6018548110158015610f9e57506017548111155b6110015760405162461bcd60e51b815260206004820152602e60248201527f4f6666657265642076616c7565206d757374206265206265747765656e20302e60448201526d0626a40c2dcc840645c6a408ae8d60931b60648201526084016106d8565b60408051808201909152601b81527f43616e277420626964206c657373207468616e203120746f6b656e00000000006020820152826110535760405162461bcd60e51b81526004016106d89190612973565b5060005b82811015610a195760408051808201909152338152602081018381526019805460018101825560009190915291517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600290930292830180546001600160a01b0319166001600160a01b03909216919091179055517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969690910155806110fb81612c13565b915050611057565b6000818152600360205260408120546001600160a01b03168061079f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106d8565b6013805461118790612bb8565b80601f01602080910402602001604051908101604052809291908181526020018280546111b390612bb8565b80156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b505050505081565b60006001600160a01b0382166112735760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106d8565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146112b95760405162461bcd60e51b81526004016106d8906129d8565b6112c36000612142565b565b6000546001600160a01b031633146112ef5760405162461bcd60e51b81526004016106d8906129d8565b600c805460ff1916911515919091179055565b6000546001600160a01b0316331461132c5760405162461bcd60e51b81526004016106d8906129d8565b600a5462010000900460ff166113925760405162461bcd60e51b815260206004820152602560248201527f5469636b657420536561736f6e2063616e2774206265206f70656e207269676860448201526474206e6f7760d81b60648201526084016106d8565b600a805462ffff001916610100179055565b6000546001600160a01b031633146113ce5760405162461bcd60e51b81526004016106d8906129d8565b60085430319060005b8181101561148257600881815481106113f2576113f2612c8f565b600091825260209091200154600980546001600160a01b03909216916108fc91620186a0918590811061142757611427612c8f565b90600052602060002001548661143d9190612af9565b6114479190612ae5565b6040518115909202916000818181858888f1935050505015801561146f573d6000803e3d6000fd5b508061147a81612c13565b9150506113d7565b50600080546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610a19573d6000803e3d6000fd5b600c54819060019060ff161561154a576007546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561150f57600080fd5b505afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154791906128a0565b91505b600482101561155a5750806115a0565b6064611567836046612af9565b6115719190612ae5565b905060006064611582846046612af9565b61158c9190612c4f565b11156115a05761159d600182612a9f565b90505b600a54610100900460ff166115f75760405162461bcd60e51b815260206004820152601960248201527f5469636b657420536561736f6e206973206e6f74204f70656e0000000000000060448201526064016106d8565b60008411801561162057503360009081526010602052604090205461161c9082612b57565b8411155b604051806060016040528060338152602001612d0b60339139906116575760405162461bcd60e51b81526004016106d89190612973565b50600b54600f546116689190612b57565b841115604051806060016040528060398152602001612cd260399139906116a25760405162461bcd60e51b81526004016106d89190612973565b506014546116b09085612af9565b34146116f75760405162461bcd60e51b8152602060048201526016602482015275556e6d617463686564205469636b657420707269636560501b60448201526064016106d8565b60005b848167ffffffffffffffff16101561177057600b80546000918261171d83612c13565b91905055600e5461172e9190612a9f565b3360008181526010602090815260408220805460018101825590835291200182905590915061175d9082611e5b565b508061176881612c27565b9150506116fa565b5050505050565b6060600280546107f090612bb8565b6001600160a01b0382163314156117df5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106d8565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b031633146118755760405162461bcd60e51b81526004016106d8906129d8565b600a805462ffff00191662010000179055600d54600f55565b6118983383611e75565b6118b45760405162461bcd60e51b81526004016106d890612a0d565b6118c084848484612192565b50505050565b6000818152600360205260409020546060906001600160a01b03166119455760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106d8565b600061194f6121c5565b9050600081511161196f576040518060200160405280600081525061199a565b80611979846121d4565b60405160200161198a929190612907565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146119cb5760405162461bcd60e51b81526004016106d8906129d8565b600a805461ff0019169055600f54600b5410156119e957600b54600f555b600a805462ff000019169055565b6000546001600160a01b03163314611a215760405162461bcd60e51b81526004016106d8906129d8565b60005b818167ffffffffffffffff161015610b64576000611a40611e1a565b9050611a4c3382611e5b565b5080611a5781612c27565b915050611a24565b6000546001600160a01b03163314611a895760405162461bcd60e51b81526004016106d8906129d8565b6001600160a01b038116611aee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b611af781612142565b50565b3b151590565b818180821415611b11575050505050565b6000856002611b208787612b18565b611b2a9190612ab7565b611b349087612a5e565b81548110611b4457611b44612c8f565b90600052602060002090600202016001015490505b818313611d7e575b80868481548110611b7457611b74612c8f565b9060005260206000209060020201600101541015611b9e5782611b9681612bf3565b935050611b61565b858281548110611bb057611bb0612c8f565b906000526020600020906002020160010154811015611bdb5781611bd381612b9a565b925050611b9e565b818313611d7957858281548110611bf457611bf4612c8f565b906000526020600020906002020160010154868481548110611c1857611c18612c8f565b906000526020600020906002020160010154878581548110611c3c57611c3c612c8f565b90600052602060002090600202016001016000898681548110611c6157611c61612c8f565b90600052602060002090600202016001016000849190505583919050555050858281548110611c9257611c92612c8f565b600091825260209091206002909102015486546001600160a01b0390911690879085908110611cc357611cc3612c8f565b600091825260209091206002909102015487546001600160a01b0390911690889086908110611cf457611cf4612c8f565b90600052602060002090600202016000016000898681548110611d1957611d19612c8f565b6000918252602090912060029091020180546001600160a01b039485166001600160a01b031990911617905581549383166101009190910a90810292021990921617905582611d6781612bf3565b9350508180611d7590612b9a565b9250505b611b59565b81851215611d9157611d91868684611b00565b83831215611da457611da4868486611b00565b505050505050565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611de182611103565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600e546012541415611e4257600f5460126000828254611e3c9190612a9f565b90915550505b60128054906000611e5283612c13565b91905055905090565b610b648282604051806020016040528060008152506122d2565b6000818152600360205260408120546001600160a01b0316611eee5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106d8565b6000611ef983611103565b9050806001600160a01b0316846001600160a01b03161480611f345750836001600160a01b0316611f2984610873565b6001600160a01b0316145b80611f6457506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611f7f82611103565b6001600160a01b031614611fe75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106d8565b6001600160a01b0382166120495760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106d8565b612054600082611dac565b6001600160a01b038316600090815260046020526040812080546001929061207d908490612b57565b90915550506001600160a01b03821660009081526004602052604081208054600192906120ab908490612a9f565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610a19573d6000803e3d6000fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61219d848484611f6c565b6121a984848484612305565b6118c05760405162461bcd60e51b81526004016106d890612986565b6060601380546107f090612bb8565b6060816121f85750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612222578061220c81612c13565b915061221b9050600a83612ae5565b91506121fc565b60008167ffffffffffffffff81111561223d5761223d612ca5565b6040519080825280601f01601f191660200182016040528015612267576020820181803683370190505b5090505b8415611f645761227c600183612b57565b9150612289600a86612c4f565b612294906030612a9f565b60f81b8183815181106122a9576122a9612c8f565b60200101906001600160f81b031916908160001a9053506122cb600a86612ae5565b945061226b565b6122dc8383612412565b6122e96000848484612305565b610a195760405162461bcd60e51b81526004016106d890612986565b60006001600160a01b0384163b1561240757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612349903390899088908890600401612936565b602060405180830381600087803b15801561236357600080fd5b505af1925050508015612393575060408051601f3d908101601f1916820190925261239091810190612821565b60015b6123ed573d8080156123c1576040519150601f19603f3d011682016040523d82523d6000602084013e6123c6565b606091505b5080516123e55760405162461bcd60e51b81526004016106d890612986565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611f64565b506001949350505050565b6001600160a01b0382166124685760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106d8565b6000818152600360205260409020546001600160a01b0316156124cd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106d8565b6001600160a01b03821660009081526004602052604081208054600192906124f6908490612a9f565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461256090612bb8565b90600052602060002090601f01602090048101928261258257600085556125c8565b82601f1061259b57805160ff19168380011785556125c8565b828001600101855582156125c8579182015b828111156125c85782518255916020019190600101906125ad565b506125d49291506125d8565b5090565b5b808211156125d457600081556001016125d9565b600067ffffffffffffffff8084111561260857612608612ca5565b604051601f8501601f19908116603f0116810190828211818310171561263057612630612ca5565b8160405280935085815286868601111561264957600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461267a57600080fd5b919050565b8035801515811461267a57600080fd5b6000602082840312156126a157600080fd5b61199a82612663565b600080604083850312156126bd57600080fd5b6126c683612663565b91506126d460208401612663565b90509250929050565b6000806000606084860312156126f257600080fd5b6126fb84612663565b925061270960208501612663565b9150604084013590509250925092565b6000806000806080858703121561272f57600080fd5b61273885612663565b935061274660208601612663565b925060408501359150606085013567ffffffffffffffff81111561276957600080fd5b8501601f8101871361277a57600080fd5b612789878235602084016125ed565b91505092959194509250565b600080604083850312156127a857600080fd5b6127b183612663565b91506126d46020840161267f565b600080604083850312156127d257600080fd5b6127db83612663565b946020939093013593505050565b6000602082840312156127fb57600080fd5b61199a8261267f565b60006020828403121561281657600080fd5b813561199a81612cbb565b60006020828403121561283357600080fd5b815161199a81612cbb565b60006020828403121561285057600080fd5b813567ffffffffffffffff81111561286757600080fd5b8201601f8101841361287857600080fd5b611f64848235602084016125ed565b60006020828403121561289957600080fd5b5035919050565b6000602082840312156128b257600080fd5b5051919050565b600080604083850312156128cc57600080fd5b50508035926020909101359150565b600081518084526128f3816020860160208601612b6e565b601f01601f19169290920160200192915050565b60008351612919818460208801612b6e565b83519083019061292d818360208801612b6e565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612969908301846128db565b9695505050505050565b60208152600061199a60208301846128db565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600080821280156001600160ff1b0384900385131615612a8057612a80612c63565b600160ff1b8390038412811615612a9957612a99612c63565b50500190565b60008219821115612ab257612ab2612c63565b500190565b600082612ac657612ac6612c79565b600160ff1b821460001984141615612ae057612ae0612c63565b500590565b600082612af457612af4612c79565b500490565b6000816000190483118215151615612b1357612b13612c63565b500290565b60008083128015600160ff1b850184121615612b3657612b36612c63565b6001600160ff1b0384018313811615612b5157612b51612c63565b50500390565b600082821015612b6957612b69612c63565b500390565b60005b83811015612b89578181015183820152602001612b71565b838111156118c05750506000910152565b6000600160ff1b821415612bb057612bb0612c63565b506000190190565b600181811c90821680612bcc57607f821691505b60208210811415612bed57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160ff1b03821415612c0c57612c0c612c63565b5060010190565b6000600019821415612c0c57612c0c612c63565b600067ffffffffffffffff80831681811415612c4557612c45612c63565b6001019392505050565b600082612c5e57612c5e612c79565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611af757600080fdfe43616e277420627579206c657373207468616e2031207469636b6574206f72206578636565642074686520617661696c61626c65206f6e657343616e277420627579206c657373207468616e2031207469636b6574206f722065786365656420796f7572206d6178696d756d43616e277420627579206c657373207468616e203120746f6b656e206f72206578636565642074686520617661696c61626c65206f6e6573a2646970667358221220dca9e63e570232f69b215031ea34fbdfa2323dd8fe32fd57c19314b10f967f5d64736f6c634300080600334552433732313a207472616e7366657220746f206e6f6e204552433732315265

Deployed Bytecode

0x6080604052600436106102245760003560e01c806370a0823111610123578063a4767826116100ab578063e8ed76631161006f578063e8ed7663146105f0578063e985e9c51461060f578063f1036e4b14610658578063f19e75d41461066d578063f2fde38b1461068d57600080fd5b8063a476782614610561578063b88d4fde14610576578063c87b56dd14610596578063d2340ea1146105b6578063e6888ab1146105d057600080fd5b8063853828b6116100f2578063853828b6146104e65780638627df46146104fb5780638da5cb5b1461050e57806395d89b411461052c578063a22cb4651461054157600080fd5b806370a082311461047c578063715018a61461049c57806378ededb0146104b15780637ebbbb88146104d157600080fd5b806325d9ac90116101b157806347bc13571161017557806347bc1357146103fa57806355f804b314610414578063598647f8146104345780636352211e146104475780636c0360eb1461046757600080fd5b806325d9ac90146103705780632875446b146103905780632ee365a3146103a5578063378252f2146103c557806342842e0e146103da57600080fd5b8063081812fc116101f8578063081812fc146102c5578063095ea7b3146102fd5780630dab71951461031d578063159816501461033057806323b872dd1461035057600080fd5b8062b9b0531461022957806301ffc9a714610251578063065de74c1461028157806306fdde03146102a3575b600080fd5b34801561023557600080fd5b5061023e6106ad565b6040519081526020015b60405180910390f35b34801561025d57600080fd5b5061027161026c366004612804565b610753565b6040519015158152602001610248565b34801561028d57600080fd5b506102a161029c366004612887565b6107a5565b005b3480156102af57600080fd5b506102b86107e1565b6040516102489190612973565b3480156102d157600080fd5b506102e56102e0366004612887565b610873565b6040516001600160a01b039091168152602001610248565b34801561030957600080fd5b506102a16103183660046127bf565b610908565b6102a161032b366004612887565b610a1e565b34801561033c57600080fd5b506102a161034b366004612887565b610b68565b34801561035c57600080fd5b506102a161036b3660046126dd565b610b97565b34801561037c57600080fd5b506102a161038b3660046127e9565b610bc8565b34801561039c57600080fd5b5061023e610c0c565b3480156103b157600080fd5b506102a16103c0366004612887565b610c3e565b3480156103d157600080fd5b506102a1610c7a565b3480156103e657600080fd5b506102a16103f53660046126dd565b610e60565b34801561040657600080fd5b50600a546102719060ff1681565b34801561042057600080fd5b506102a161042f36600461283e565b610e7b565b6102a16104423660046128b9565b610eb8565b34801561045357600080fd5b506102e5610462366004612887565b611103565b34801561047357600080fd5b506102b861117a565b34801561048857600080fd5b5061023e61049736600461268f565b611208565b3480156104a857600080fd5b506102a161128f565b3480156104bd57600080fd5b506102a16104cc3660046127e9565b6112c5565b3480156104dd57600080fd5b506102a1611302565b3480156104f257600080fd5b506102a16113a4565b6102a16105093660046128b9565b6114bc565b34801561051a57600080fd5b506000546001600160a01b03166102e5565b34801561053857600080fd5b506102b8611777565b34801561054d57600080fd5b506102a161055c366004612795565b611786565b34801561056d57600080fd5b506102a161184b565b34801561058257600080fd5b506102a1610591366004612719565b61188e565b3480156105a257600080fd5b506102b86105b1366004612887565b6118c6565b3480156105c257600080fd5b506015546102719060ff1681565b3480156105dc57600080fd5b506007546102e5906001600160a01b031681565b3480156105fc57600080fd5b50600a5461027190610100900460ff1681565b34801561061b57600080fd5b5061027161062a3660046126aa565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561066457600080fd5b506102a16119a1565b34801561067957600080fd5b506102a1610688366004612887565b6119f7565b34801561069957600080fd5b506102a16106a836600461268f565b611a5f565b600080546001600160a01b031633146106e15760405162461bcd60e51b81526004016106d8906129d8565b60405180910390fd5b601954610700906000906106f790600190612b57565b60199190611b00565b60165460195460009110156107225760165460195461071f9190612b57565b90505b60006019828154811061073757610737612c8f565b9060005260206000209060020201600101549050809250505090565b60006001600160e01b031982166380ac58cd60e01b148061078457506001600160e01b03198216635b5e139f60e01b145b8061079f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146107cf5760405162461bcd60e51b81526004016106d8906129d8565b6015805460ff19166001179055601655565b6060600180546107f090612bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461081c90612bb8565b80156108695780601f1061083e57610100808354040283529160200191610869565b820191906000526020600020905b81548152906001019060200180831161084c57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108ec5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106d8565b506000908152600560205260409020546001600160a01b031690565b600061091382611103565b9050806001600160a01b0316836001600160a01b031614156109815760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106d8565b336001600160a01b038216148061099d575061099d813361062a565b610a0f5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106d8565b610a198383611dac565b505050565b600a5460ff16610a705760405162461bcd60e51b815260206004820152601860248201527f546f6b656e73206e6f7420617661696c61626c6520796574000000000000000060448201526064016106d8565b610a8281670214e8348c4f0000612af9565b3414610ad05760405162461bcd60e51b815260206004820152601b60248201527f4561636820466c6f796420636f73747320302e3135206574686572000000000060448201526064016106d8565b600081118015610aee5750601254601154610aeb9190612b57565b81105b604051806060016040528060388152602001612d3e6038913990610b255760405162461bcd60e51b81526004016106d89190612973565b5060005b818167ffffffffffffffff161015610b64576000610b45611e1a565b9050610b513382611e5b565b5080610b5c81612c27565b915050610b29565b5050565b6000546001600160a01b03163314610b925760405162461bcd60e51b81526004016106d8906129d8565b601455565b610ba13382611e75565b610bbd5760405162461bcd60e51b81526004016106d890612a0d565b610a19838383611f6c565b6000546001600160a01b03163314610bf25760405162461bcd60e51b81526004016106d8906129d8565b600a80549115156101000261ff0019909216919091179055565b600080546001600160a01b03163314610c375760405162461bcd60e51b81526004016106d8906129d8565b5060195490565b6000546001600160a01b03163314610c685760405162461bcd60e51b81526004016106d8906129d8565b601155600a805460ff19166001179055565b6000546001600160a01b03163314610ca45760405162461bcd60e51b81526004016106d8906129d8565b6015805460ff19169055601954610cc4906000906106f790600190612b57565b6016546019546000911015610d6257601654601954610ce39190612b57565b905060005b81811015610d6057610d4e60198281548110610d0657610d06612c8f565b6000918252602090912060029091020154601980546001600160a01b039092169184908110610d3757610d37612c8f565b90600052602060002090600202016001015461210c565b80610d5881612c13565b915050610ce8565b505b600060198281548110610d7757610d77612c8f565b906000526020600020906002020160010154905060008290505b601954811015610a19576000610da5611e1a565b9050610ddd60198381548110610dbd57610dbd612c8f565b60009182526020909120600290910201546001600160a01b031682611e5b565b610e4d60198381548110610df357610df3612c8f565b906000526020600020906002020160000160009054906101000a90046001600160a01b03168460198581548110610e2c57610e2c612c8f565b906000526020600020906002020160010154610e489190612b57565b61210c565b5080610e5881612c13565b915050610d91565b610a198383836040518060200160405280600081525061188e565b6000546001600160a01b03163314610ea55760405162461bcd60e51b81526004016106d8906129d8565b8051610b64906013906020840190612554565b60155460ff16610f005760405162461bcd60e51b815260206004820152601360248201527220bab1ba34b7b71034b9903737ba1037b832b760691b60448201526064016106d8565b610f0a8183612af9565b3414610f8a5760405162461bcd60e51b815260206004820152604360248201527f4574682073656e74206e6565647320746f206d61746368206f6666657265642060448201527f70726963652074696d657320686f77206d616e792074696d657320796f752077606482015262185b9d60ea1b608482015260a4016106d8565b6018548110158015610f9e57506017548111155b6110015760405162461bcd60e51b815260206004820152602e60248201527f4f6666657265642076616c7565206d757374206265206265747765656e20302e60448201526d0626a40c2dcc840645c6a408ae8d60931b60648201526084016106d8565b60408051808201909152601b81527f43616e277420626964206c657373207468616e203120746f6b656e00000000006020820152826110535760405162461bcd60e51b81526004016106d89190612973565b5060005b82811015610a195760408051808201909152338152602081018381526019805460018101825560009190915291517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695600290930292830180546001600160a01b0319166001600160a01b03909216919091179055517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969690910155806110fb81612c13565b915050611057565b6000818152600360205260408120546001600160a01b03168061079f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106d8565b6013805461118790612bb8565b80601f01602080910402602001604051908101604052809291908181526020018280546111b390612bb8565b80156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b505050505081565b60006001600160a01b0382166112735760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106d8565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146112b95760405162461bcd60e51b81526004016106d8906129d8565b6112c36000612142565b565b6000546001600160a01b031633146112ef5760405162461bcd60e51b81526004016106d8906129d8565b600c805460ff1916911515919091179055565b6000546001600160a01b0316331461132c5760405162461bcd60e51b81526004016106d8906129d8565b600a5462010000900460ff166113925760405162461bcd60e51b815260206004820152602560248201527f5469636b657420536561736f6e2063616e2774206265206f70656e207269676860448201526474206e6f7760d81b60648201526084016106d8565b600a805462ffff001916610100179055565b6000546001600160a01b031633146113ce5760405162461bcd60e51b81526004016106d8906129d8565b60085430319060005b8181101561148257600881815481106113f2576113f2612c8f565b600091825260209091200154600980546001600160a01b03909216916108fc91620186a0918590811061142757611427612c8f565b90600052602060002001548661143d9190612af9565b6114479190612ae5565b6040518115909202916000818181858888f1935050505015801561146f573d6000803e3d6000fd5b508061147a81612c13565b9150506113d7565b50600080546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610a19573d6000803e3d6000fd5b600c54819060019060ff161561154a576007546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561150f57600080fd5b505afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154791906128a0565b91505b600482101561155a5750806115a0565b6064611567836046612af9565b6115719190612ae5565b905060006064611582846046612af9565b61158c9190612c4f565b11156115a05761159d600182612a9f565b90505b600a54610100900460ff166115f75760405162461bcd60e51b815260206004820152601960248201527f5469636b657420536561736f6e206973206e6f74204f70656e0000000000000060448201526064016106d8565b60008411801561162057503360009081526010602052604090205461161c9082612b57565b8411155b604051806060016040528060338152602001612d0b60339139906116575760405162461bcd60e51b81526004016106d89190612973565b50600b54600f546116689190612b57565b841115604051806060016040528060398152602001612cd260399139906116a25760405162461bcd60e51b81526004016106d89190612973565b506014546116b09085612af9565b34146116f75760405162461bcd60e51b8152602060048201526016602482015275556e6d617463686564205469636b657420707269636560501b60448201526064016106d8565b60005b848167ffffffffffffffff16101561177057600b80546000918261171d83612c13565b91905055600e5461172e9190612a9f565b3360008181526010602090815260408220805460018101825590835291200182905590915061175d9082611e5b565b508061176881612c27565b9150506116fa565b5050505050565b6060600280546107f090612bb8565b6001600160a01b0382163314156117df5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106d8565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b031633146118755760405162461bcd60e51b81526004016106d8906129d8565b600a805462ffff00191662010000179055600d54600f55565b6118983383611e75565b6118b45760405162461bcd60e51b81526004016106d890612a0d565b6118c084848484612192565b50505050565b6000818152600360205260409020546060906001600160a01b03166119455760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106d8565b600061194f6121c5565b9050600081511161196f576040518060200160405280600081525061199a565b80611979846121d4565b60405160200161198a929190612907565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146119cb5760405162461bcd60e51b81526004016106d8906129d8565b600a805461ff0019169055600f54600b5410156119e957600b54600f555b600a805462ff000019169055565b6000546001600160a01b03163314611a215760405162461bcd60e51b81526004016106d8906129d8565b60005b818167ffffffffffffffff161015610b64576000611a40611e1a565b9050611a4c3382611e5b565b5080611a5781612c27565b915050611a24565b6000546001600160a01b03163314611a895760405162461bcd60e51b81526004016106d8906129d8565b6001600160a01b038116611aee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b611af781612142565b50565b3b151590565b818180821415611b11575050505050565b6000856002611b208787612b18565b611b2a9190612ab7565b611b349087612a5e565b81548110611b4457611b44612c8f565b90600052602060002090600202016001015490505b818313611d7e575b80868481548110611b7457611b74612c8f565b9060005260206000209060020201600101541015611b9e5782611b9681612bf3565b935050611b61565b858281548110611bb057611bb0612c8f565b906000526020600020906002020160010154811015611bdb5781611bd381612b9a565b925050611b9e565b818313611d7957858281548110611bf457611bf4612c8f565b906000526020600020906002020160010154868481548110611c1857611c18612c8f565b906000526020600020906002020160010154878581548110611c3c57611c3c612c8f565b90600052602060002090600202016001016000898681548110611c6157611c61612c8f565b90600052602060002090600202016001016000849190505583919050555050858281548110611c9257611c92612c8f565b600091825260209091206002909102015486546001600160a01b0390911690879085908110611cc357611cc3612c8f565b600091825260209091206002909102015487546001600160a01b0390911690889086908110611cf457611cf4612c8f565b90600052602060002090600202016000016000898681548110611d1957611d19612c8f565b6000918252602090912060029091020180546001600160a01b039485166001600160a01b031990911617905581549383166101009190910a90810292021990921617905582611d6781612bf3565b9350508180611d7590612b9a565b9250505b611b59565b81851215611d9157611d91868684611b00565b83831215611da457611da4868486611b00565b505050505050565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611de182611103565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600e546012541415611e4257600f5460126000828254611e3c9190612a9f565b90915550505b60128054906000611e5283612c13565b91905055905090565b610b648282604051806020016040528060008152506122d2565b6000818152600360205260408120546001600160a01b0316611eee5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106d8565b6000611ef983611103565b9050806001600160a01b0316846001600160a01b03161480611f345750836001600160a01b0316611f2984610873565b6001600160a01b0316145b80611f6457506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611f7f82611103565b6001600160a01b031614611fe75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106d8565b6001600160a01b0382166120495760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106d8565b612054600082611dac565b6001600160a01b038316600090815260046020526040812080546001929061207d908490612b57565b90915550506001600160a01b03821660009081526004602052604081208054600192906120ab908490612a9f565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610a19573d6000803e3d6000fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61219d848484611f6c565b6121a984848484612305565b6118c05760405162461bcd60e51b81526004016106d890612986565b6060601380546107f090612bb8565b6060816121f85750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612222578061220c81612c13565b915061221b9050600a83612ae5565b91506121fc565b60008167ffffffffffffffff81111561223d5761223d612ca5565b6040519080825280601f01601f191660200182016040528015612267576020820181803683370190505b5090505b8415611f645761227c600183612b57565b9150612289600a86612c4f565b612294906030612a9f565b60f81b8183815181106122a9576122a9612c8f565b60200101906001600160f81b031916908160001a9053506122cb600a86612ae5565b945061226b565b6122dc8383612412565b6122e96000848484612305565b610a195760405162461bcd60e51b81526004016106d890612986565b60006001600160a01b0384163b1561240757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612349903390899088908890600401612936565b602060405180830381600087803b15801561236357600080fd5b505af1925050508015612393575060408051601f3d908101601f1916820190925261239091810190612821565b60015b6123ed573d8080156123c1576040519150601f19603f3d011682016040523d82523d6000602084013e6123c6565b606091505b5080516123e55760405162461bcd60e51b81526004016106d890612986565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611f64565b506001949350505050565b6001600160a01b0382166124685760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106d8565b6000818152600360205260409020546001600160a01b0316156124cd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106d8565b6001600160a01b03821660009081526004602052604081208054600192906124f6908490612a9f565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461256090612bb8565b90600052602060002090601f01602090048101928261258257600085556125c8565b82601f1061259b57805160ff19168380011785556125c8565b828001600101855582156125c8579182015b828111156125c85782518255916020019190600101906125ad565b506125d49291506125d8565b5090565b5b808211156125d457600081556001016125d9565b600067ffffffffffffffff8084111561260857612608612ca5565b604051601f8501601f19908116603f0116810190828211818310171561263057612630612ca5565b8160405280935085815286868601111561264957600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461267a57600080fd5b919050565b8035801515811461267a57600080fd5b6000602082840312156126a157600080fd5b61199a82612663565b600080604083850312156126bd57600080fd5b6126c683612663565b91506126d460208401612663565b90509250929050565b6000806000606084860312156126f257600080fd5b6126fb84612663565b925061270960208501612663565b9150604084013590509250925092565b6000806000806080858703121561272f57600080fd5b61273885612663565b935061274660208601612663565b925060408501359150606085013567ffffffffffffffff81111561276957600080fd5b8501601f8101871361277a57600080fd5b612789878235602084016125ed565b91505092959194509250565b600080604083850312156127a857600080fd5b6127b183612663565b91506126d46020840161267f565b600080604083850312156127d257600080fd5b6127db83612663565b946020939093013593505050565b6000602082840312156127fb57600080fd5b61199a8261267f565b60006020828403121561281657600080fd5b813561199a81612cbb565b60006020828403121561283357600080fd5b815161199a81612cbb565b60006020828403121561285057600080fd5b813567ffffffffffffffff81111561286757600080fd5b8201601f8101841361287857600080fd5b611f64848235602084016125ed565b60006020828403121561289957600080fd5b5035919050565b6000602082840312156128b257600080fd5b5051919050565b600080604083850312156128cc57600080fd5b50508035926020909101359150565b600081518084526128f3816020860160208601612b6e565b601f01601f19169290920160200192915050565b60008351612919818460208801612b6e565b83519083019061292d818360208801612b6e565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612969908301846128db565b9695505050505050565b60208152600061199a60208301846128db565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600080821280156001600160ff1b0384900385131615612a8057612a80612c63565b600160ff1b8390038412811615612a9957612a99612c63565b50500190565b60008219821115612ab257612ab2612c63565b500190565b600082612ac657612ac6612c79565b600160ff1b821460001984141615612ae057612ae0612c63565b500590565b600082612af457612af4612c79565b500490565b6000816000190483118215151615612b1357612b13612c63565b500290565b60008083128015600160ff1b850184121615612b3657612b36612c63565b6001600160ff1b0384018313811615612b5157612b51612c63565b50500390565b600082821015612b6957612b69612c63565b500390565b60005b83811015612b89578181015183820152602001612b71565b838111156118c05750506000910152565b6000600160ff1b821415612bb057612bb0612c63565b506000190190565b600181811c90821680612bcc57607f821691505b60208210811415612bed57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160ff1b03821415612c0c57612c0c612c63565b5060010190565b6000600019821415612c0c57612c0c612c63565b600067ffffffffffffffff80831681811415612c4557612c45612c63565b6001019392505050565b600082612c5e57612c5e612c79565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611af757600080fdfe43616e277420627579206c657373207468616e2031207469636b6574206f72206578636565642074686520617661696c61626c65206f6e657343616e277420627579206c657373207468616e2031207469636b6574206f722065786365656420796f7572206d6178696d756d43616e277420627579206c657373207468616e203120746f6b656e206f72206578636565642074686520617661696c61626c65206f6e6573a2646970667358221220dca9e63e570232f69b215031ea34fbdfa2323dd8fe32fd57c19314b10f967f5d64736f6c63430008060033

Deployed Bytecode Sourcemap

17489:7784:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24100:361;;;;;;;;;;;;;:::i;:::-;;;16404:25:1;;;16392:2;16377:18;24100:361:0;;;;;;;;8138:305;;;;;;;;;;-1:-1:-1;8138:305:0;;;;;:::i;:::-;;:::i;:::-;;;6345:14:1;;6338:22;6320:41;;6308:2;6293:18;8138:305:0;6275:92:1;23121:138:0;;;;;;;;;;-1:-1:-1;23121:138:0;;;;;:::i;:::-;;:::i;:::-;;8932:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10045:221::-;;;;;;;;;;-1:-1:-1;10045:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5643:32:1;;;5625:51;;5613:2;5598:18;10045:221:0;5580:102:1;9620:411:0;;;;;;;;;;-1:-1:-1;9620:411:0;;;;;:::i;:::-;;:::i;21430:530::-;;;;;;:::i;:::-;;:::i;19561:101::-;;;;;;;;;;-1:-1:-1;19561:101:0;;;;;:::i;:::-;;:::i;10767:296::-;;;;;;;;;;-1:-1:-1;10767:296:0;;;;;:::i;:::-;;:::i;19455:98::-;;;;;;;;;;-1:-1:-1;19455:98:0;;;;;:::i;:::-;;:::i;23267:106::-;;;;;;;;;;;;;:::i;22182:125::-;;;;;;;;;;-1:-1:-1;22182:125:0;;;;;:::i;:::-;;:::i;24469:694::-;;;;;;;;;;;;;:::i;11077:185::-;;;;;;;;;;-1:-1:-1;11077:185:0;;;;;:::i;:::-;;:::i;18059:33::-;;;;;;;;;;-1:-1:-1;18059:33:0;;;;;;;;18961:100;;;;;;;;;;-1:-1:-1;18961:100:0;;;;;:::i;:::-;;:::i;23381:711::-;;;;;;:::i;:::-;;:::i;8679:239::-;;;;;;;;;;-1:-1:-1;8679:239:0;;;;;:::i;:::-;;:::i;18611:21::-;;;;;;;;;;;;;:::i;8457:208::-;;;;;;;;;;-1:-1:-1;8457:208:0;;;;;:::i;:::-;;:::i;15827:94::-;;;;;;;;;;;;;:::i;19069:114::-;;;;;;;;;;-1:-1:-1;19069:114:0;;;;;:::i;:::-;;:::i;19241:206::-;;;;;;;;;;;;;:::i;22517:333::-;;;;;;;;;;;;;:::i;20089:1333::-;;;;;;:::i;:::-;;:::i;15592:87::-;;;;;;;;;;-1:-1:-1;15638:7:0;15665:6;-1:-1:-1;;;;;15665:6:0;15592:87;;9046:104;;;;;;;;;;;;;:::i;10280:295::-;;;;;;;;;;-1:-1:-1;10280:295:0;;;;;:::i;:::-;;:::i;19902:179::-;;;;;;;;;;;;;:::i;11276:328::-;;;;;;;;;;-1:-1:-1;11276:328:0;;;;;:::i;:::-;;:::i;9164:334::-;;;;;;;;;;-1:-1:-1;9164:334:0;;;;;:::i;:::-;;:::i;22897:36::-;;;;;;;;;;-1:-1:-1;22897:36:0;;;;;;;;17537:16;;;;;;;;;;-1:-1:-1;17537:16:0;;;;-1:-1:-1;;;;;17537:16:0;;;18107:35;;;;;;;;;;-1:-1:-1;18107:35:0;;;;;;;;;;;10589:164;;;;;;;;;;-1:-1:-1;10589:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;10710:25:0;;;10686:4;10710:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10589:164;19670:224;;;;;;;;;;;;;:::i;21968:206::-;;;;;;;;;;-1:-1:-1;21968:206:0;;;;;:::i;:::-;;:::i;15935:192::-;;;;;;;;;;-1:-1:-1;15935:192:0;;;;;:::i;:::-;;:::i;24100:361::-;24156:7;15665:6;;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;;;;;;;;;24194:2:::1;:9:::0;24176:33:::1;::::0;24184:1:::1;::::0;24194:13:::1;::::0;24206:1:::1;::::0;24194:13:::1;:::i;:::-;24176:2;::::0;:33;:7:::1;:33::i;:::-;24270:19;::::0;24258:2:::1;:9:::0;24221:18:::1;::::0;-1:-1:-1;24254:108:0::1;;;24331:19;::::0;24319:2:::1;:9:::0;:31:::1;::::0;24331:19;24319:31:::1;:::i;:::-;24306:44;;24254:108;24372:16;24391:2;24394:10;24391:14;;;;;;;;:::i;:::-;;;;;;;;;;;:27;;;24372:46;;24444:8;24429:24;;;;24100:361:::0;:::o;8138:305::-;8240:4;-1:-1:-1;;;;;;8277:40:0;;-1:-1:-1;;;8277:40:0;;:105;;-1:-1:-1;;;;;;;8334:48:0;;-1:-1:-1;;;8334:48:0;8277:105;:158;;;-1:-1:-1;;;;;;;;;;7471:40:0;;;8399:36;8257:178;8138:305;-1:-1:-1;;8138:305:0:o;23121:138::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;23188:16:::1;:23:::0;;-1:-1:-1;;23188:23:0::1;23207:4;23188:23;::::0;;23222:19:::1;:29:::0;23121:138::o;8932:100::-;8986:13;9019:5;9012:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8932:100;:::o;10045:221::-;10121:7;12036:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12036:16:0;10141:73;;;;-1:-1:-1;;;10141:73:0;;12447:2:1;10141:73:0;;;12429:21:1;12486:2;12466:18;;;12459:30;12525:34;12505:18;;;12498:62;-1:-1:-1;;;12576:18:1;;;12569:42;12628:19;;10141:73:0;12419:234:1;10141:73:0;-1:-1:-1;10234:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;10234:24:0;;10045:221::o;9620:411::-;9701:13;9717:23;9732:7;9717:14;:23::i;:::-;9701:39;;9765:5;-1:-1:-1;;;;;9759:11:0;:2;-1:-1:-1;;;;;9759:11:0;;;9751:57;;;;-1:-1:-1;;;9751:57:0;;14523:2:1;9751:57:0;;;14505:21:1;14562:2;14542:18;;;14535:30;14601:34;14581:18;;;14574:62;-1:-1:-1;;;14652:18:1;;;14645:31;14693:19;;9751:57:0;14495:223:1;9751:57:0;5703:10;-1:-1:-1;;;;;9843:21:0;;;;:62;;-1:-1:-1;9868:37:0;9885:5;5703:10;10589:164;:::i;9868:37::-;9821:168;;;;-1:-1:-1;;;9821:168:0;;10484:2:1;9821:168:0;;;10466:21:1;10523:2;10503:18;;;10496:30;10562:34;10542:18;;;10535:62;10633:26;10613:18;;;10606:54;10677:19;;9821:168:0;10456:246:1;9821:168:0;10002:21;10011:2;10015:7;10002:8;:21::i;:::-;9690:341;9620:411;;:::o;21430:530::-;21502:13;;;;21494:50;;;;-1:-1:-1;;;21494:50:0;;7019:2:1;21494:50:0;;;7001:21:1;7058:2;7038:18;;;7031:30;7097:26;7077:18;;;7070:54;7141:18;;21494:50:0;6991:174:1;21494:50:0;21576:20;:7;21586:10;21576:20;:::i;:::-;21563:9;:33;21555:73;;;;-1:-1:-1;;;21555:73:0;;12091:2:1;21555:73:0;;;12073:21:1;12130:2;12110:18;;;12103:30;12169:29;12149:18;;;12142:57;12216:18;;21555:73:0;12063:177:1;21555:73:0;21671:1;21661:7;:11;:54;;;;;21701:13;;21687:11;;:27;;;;:::i;:::-;21676:7;:39;21661:54;21730:66;;;;;;;;;;;;;;;;;21639:168;;;;;-1:-1:-1;;;21639:168:0;;;;;;;;:::i;:::-;;21823:8;21818:135;21841:7;21837:1;:11;;;21818:135;;;21870:12;21885:14;:12;:14::i;:::-;21870:29;;21914:27;21924:10;21936:4;21914:9;:27::i;:::-;-1:-1:-1;21850:3:0;;;;:::i;:::-;;;;21818:135;;;;21430:530;:::o;19561:101::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19631:12:::1;:23:::0;19561:101::o;10767:296::-;10919:41;5703:10;10952:7;10919:18;:41::i;:::-;10911:103;;;;-1:-1:-1;;;10911:103:0;;;;;;;:::i;:::-;11027:28;11037:4;11043:2;11047:7;11027:9;:28::i;19455:98::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19522:15:::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;19522:23:0;;::::1;::::0;;;::::1;::::0;;19455:98::o;23267:106::-;23329:7;15665:6;;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;-1:-1:-1;23356:2:0::1;:9:::0;23267:106;:::o;22182:125::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;22247:11:::1;:21:::0;22279:13:::1;:20:::0;;-1:-1:-1;;22279:20:0::1;22295:4;22279:20;::::0;;22182:125::o;24469:694::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;24521:16:::1;:24:::0;;-1:-1:-1;;24521:24:0::1;::::0;;24574:2:::1;:9:::0;24556:33:::1;::::0;24540:5:::1;::::0;24574:13:::1;::::0;24521:24;;24574:13:::1;:::i;24556:33::-;24649:19;::::0;24637:2:::1;:9:::0;24600:18:::1;::::0;-1:-1:-1;24633:239:0::1;;;24710:19;::::0;24698:2:::1;:9:::0;:31:::1;::::0;24710:19;24698:31:::1;:::i;:::-;24685:44;;24749:9;24744:117;24768:10;24764:1;:14;24744:117;;;24804:41;24811:2;24814:1;24811:5;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:13:::0;24826:2:::1;:5:::0;;-1:-1:-1;;;;;24811:13:0;;::::1;::::0;24829:1;;24826:5;::::1;;;;;:::i;:::-;;;;;;;;;;;:18;;;24804:6;:41::i;:::-;24780:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24744:117;;;;24633:239;24882:16;24901:2;24904:10;24901:14;;;;;;;;:::i;:::-;;;;;;;;;;;:27;;;24882:46;;24944:9;24956:10;24944:22;;24939:217;24972:2;:9:::0;24968:13;::::1;24939:217;;;25003:12;25018:14;:12;:14::i;:::-;25003:29;;25047:30;25057:2;25060:1;25057:5;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:13:::0;-1:-1:-1;;;;;25057:13:0::1;25072:4:::0;25047:9:::1;:30::i;:::-;25092:52;25099:2;25102:1;25099:5;;;;;;;;:::i;:::-;;;;;;;;;;;:13;;;;;;;;;;-1:-1:-1::0;;;;;25099:13:0::1;25135:8;25114:2;25117:1;25114:5;;;;;;;;:::i;:::-;;;;;;;;;;;:18;;;:29;;;;:::i;:::-;25092:6;:52::i;:::-;-1:-1:-1::0;24983:3:0;::::1;::::0;::::1;:::i;:::-;;;;24939:217;;11077:185:::0;11215:39;11232:4;11238:2;11242:7;11215:39;;;;;;;;;;;;:16;:39::i;18961:100::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19034:19;;::::1;::::0;:7:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;23381:711::-:0;23469:16;;;;23461:48;;;;-1:-1:-1;;;23461:48:0;;14925:2:1;23461:48:0;;;14907:21:1;14964:2;14944:18;;;14937:30;-1:-1:-1;;;14983:18:1;;;14976:49;15042:18;;23461:48:0;14897:169:1;23461:48:0;23555:22;23565:12;23555:7;:22;:::i;:::-;23542:9;:35;23520:152;;;;-1:-1:-1;;;23520:152:0;;13631:2:1;23520:152:0;;;13613:21:1;13670:2;13650:18;;;13643:30;13709:34;13689:18;;;13682:62;13780:34;13760:18;;;13753:62;-1:-1:-1;;;13831:19:1;;;13824:34;13875:19;;23520:152:0;13603:297:1;23520:152:0;23721:16;;23705:12;:32;;:67;;;;;23757:15;;23741:12;:31;;23705:67;23683:163;;;;-1:-1:-1;;;23683:163:0;;16045:2:1;23683:163:0;;;16027:21:1;16084:2;16064:18;;;16057:30;16123:34;16103:18;;;16096:62;-1:-1:-1;;;16174:18:1;;;16167:44;16228:19;;23683:163:0;16017:236:1;23683:163:0;23878:37;;;;;;;;;;;;;;;;;23865:11;23857:59;;;;-1:-1:-1;;;23857:59:0;;;;;;;;:::i;:::-;;23934:9;23929:156;23953:7;23949:1;:11;23929:156;;;24008:39;;;;;;;;;24022:10;24008:39;;;;;;;;24062:2;:11;;;;;;;-1:-1:-1;24062:11:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24062:11:0;-1:-1:-1;;;;;24062:11:0;;;;;;;;;;;;;;;23962:3;;;;:::i;:::-;;;;23929:156;;8679:239;8751:7;8787:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8787:16:0;8822:19;8814:73;;;;-1:-1:-1;;;8814:73:0;;11320:2:1;8814:73:0;;;11302:21:1;11359:2;11339:18;;;11332:30;11398:34;11378:18;;;11371:62;-1:-1:-1;;;11449:18:1;;;11442:39;11498:19;;8814:73:0;11292:231:1;18611:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8457:208::-;8529:7;-1:-1:-1;;;;;8557:19:0;;8549:74;;;;-1:-1:-1;;;8549:74:0;;10909:2:1;8549:74:0;;;10891:21:1;10948:2;10928:18;;;10921:30;10987:34;10967:18;;;10960:62;-1:-1:-1;;;11038:18:1;;;11031:40;11088:19;;8549:74:0;10881:232:1;8549:74:0;-1:-1:-1;;;;;;8641:16:0;;;;;:9;:16;;;;;;;8457:208::o;15827:94::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;15892:21:::1;15910:1;15892:9;:21::i;:::-;15827:94::o:0;19069:114::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19144:23:::1;:31:::0;;-1:-1:-1;;19144:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19069:114::o;19241:206::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19305:20:::1;::::0;;;::::1;;;19297:70;;;::::0;-1:-1:-1;;;19297:70:0;;9665:2:1;19297:70:0::1;::::0;::::1;9647:21:1::0;9704:2;9684:18;;;9677:30;9743:34;9723:18;;;9716:62;-1:-1:-1;;;9794:18:1;;;9787:35;9839:19;;19297:70:0::1;9637:227:1::0;19297:70:0::1;19378:15;:22:::0;;-1:-1:-1;;19411:28:0;19378:22:::1;19411:28:::0;;;19241:206::o;22517:333::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;22640:8:::1;:15:::0;22594:4:::1;22586:21;::::0;22568:15:::1;22666:132;22690:11;22686:1;:15;22666:132;;;22731:8;22740:1;22731:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22764:8:::1;:11:::0;;-1:-1:-1;;;;;22731:11:0;;::::1;::::0;22723:63:::1;::::0;22779:6:::1;::::0;22773:1;;22764:11;::::1;;;;;:::i;:::-;;;;;;;;;22754:7;:21;;;;:::i;:::-;22753:32;;;;:::i;:::-;22723:63;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22703:3:0;::::1;::::0;::::1;:::i;:::-;;;;22666:132;;;-1:-1:-1::0;15638:7:0;15665:6;;22808:34:::1;::::0;-1:-1:-1;;;;;15665:6:0;;;;22808:34;::::1;;;::::0;22834:7;;22808:34;15638:7;22808:34;22834:7;15665:6;22808:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;20089:1333:::0;20275:23;;20203:14;;20259:1;;20275:23;;20271:99;;;20332:4;;:26;;-1:-1:-1;;;20332:26:0;;20347:10;20332:26;;;5625:51:1;-1:-1:-1;;;;;20332:4:0;;;;:14;;5598:18:1;;20332:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20315:43;;20271:99;20401:1;20384:14;:18;20380:286;;;-1:-1:-1;20442:14:0;20380:286;;;20537:3;20514:19;:14;20531:2;20514:19;:::i;:::-;20513:27;;;;:::i;:::-;20489:52;-1:-1:-1;20592:1:0;20585:3;20562:19;:14;20579:2;20562:19;:::i;:::-;20561:27;;;;:::i;:::-;20560:33;20556:99;;;20614:25;20638:1;20614:25;;:::i;:::-;;;20556:99;20684:15;;;;;;;20676:53;;;;-1:-1:-1;;;20676:53:0;;15691:2:1;20676:53:0;;;15673:21:1;15730:2;15710:18;;;15703:30;15769:27;15749:18;;;15742:55;15814:18;;20676:53:0;15663:175:1;20676:53:0;20774:1;20764:7;:11;:84;;;;-1:-1:-1;20829:10:0;20814:26;;;;:14;:26;;;;;:33;20791:56;;:20;:56;:::i;:::-;20779:7;:69;;20764:84;20863:61;;;;;;;;;;;;;;;;;20742:193;;;;;-1:-1:-1;;;20742:193:0;;;;;;;;:::i;:::-;;20993:14;;20980:10;;:27;;;;:::i;:::-;20968:7;:40;;21023:67;;;;;;;;;;;;;;;;;20946:155;;;;;-1:-1:-1;;;20946:155:0;;;;;;;;:::i;:::-;-1:-1:-1;21143:12:0;;21133:22;;:7;:22;:::i;:::-;21120:9;:35;21112:70;;;;-1:-1:-1;;;21112:70:0;;7791:2:1;21112:70:0;;;7773:21:1;7830:2;7810:18;;;7803:30;-1:-1:-1;;;7849:18:1;;;7842:52;7911:18;;21112:70:0;7763:172:1;21112:70:0;21198:8;21193:222;21216:7;21212:1;:11;;;21193:222;;;21284:14;:16;;21245;;;21284;;;:::i;:::-;;;;;21265;;:35;;;;:::i;:::-;21331:10;21316:26;;;;:14;:26;;;;;;;:41;;;;;;;;;;;;;;;;21245:56;;-1:-1:-1;21372:31:0;;21245:56;21372:9;:31::i;:::-;-1:-1:-1;21225:3:0;;;;:::i;:::-;;;;21193:222;;;;20167:1255;;20089:1333;;:::o;9046:104::-;9102:13;9135:7;9128:14;;;;;:::i;10280:295::-;-1:-1:-1;;;;;10383:24:0;;5703:10;10383:24;;10375:62;;;;-1:-1:-1;;;10375:62:0;;9311:2:1;10375:62:0;;;9293:21:1;9350:2;9330:18;;;9323:30;9389:27;9369:18;;;9362:55;9434:18;;10375:62:0;9283:175:1;10375:62:0;5703:10;10450:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;10450:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;10450:53:0;;;;;;;;;;10519:48;;6320:41:1;;;10450:42:0;;5703:10;10519:48;;6293:18:1;10519:48:0;;;;;;;10280:295;;:::o;19902:179::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19966:20:::1;:27:::0;;-1:-1:-1;;20004:23:0;19966:27;20004:23;;;20051:22:::1;::::0;20038:10:::1;:35:::0;19902:179::o;11276:328::-;11451:41;5703:10;11484:7;11451:18;:41::i;:::-;11443:103;;;;-1:-1:-1;;;11443:103:0;;;;;;;:::i;:::-;11557:39;11571:4;11577:2;11581:7;11590:5;11557:13;:39::i;:::-;11276:328;;;;:::o;9164:334::-;12012:4;12036:16;;;:7;:16;;;;;;9237:13;;-1:-1:-1;;;;;12036:16:0;9263:76;;;;-1:-1:-1;;;9263:76:0;;14107:2:1;9263:76:0;;;14089:21:1;14146:2;14126:18;;;14119:30;14185:34;14165:18;;;14158:62;-1:-1:-1;;;14236:18:1;;;14229:45;14291:19;;9263:76:0;14079:237:1;9263:76:0;9352:21;9376:10;:8;:10::i;:::-;9352:34;;9428:1;9410:7;9404:21;:25;:86;;;;;;;;;;;;;;;;;9456:7;9465:18;:7;:16;:18::i;:::-;9439:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9404:86;9397:93;9164:334;-1:-1:-1;;;9164:334:0:o;19670:224::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;19727:15:::1;:23:::0;;-1:-1:-1;;19727:23:0::1;::::0;;19782:10:::1;::::0;19765:14:::1;::::0;:27:::1;19761:87;;;19822:14;::::0;19809:10:::1;:27:::0;19761:87:::1;19858:20;:28:::0;;-1:-1:-1;;19858:28:0::1;::::0;;19670:224::o;21968:206::-;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;22037:8:::1;22032:135;22055:7;22051:1;:11;;;22032:135;;;22084:12;22099:14;:12;:14::i;:::-;22084:29;;22128:27;22138:10;22150:4;22128:9;:27::i;:::-;-1:-1:-1::0;22064:3:0;::::1;::::0;::::1;:::i;:::-;;;;22032:135;;15935:192:::0;15638:7;15665:6;-1:-1:-1;;;;;15665:6:0;5703:10;15733:23;15725:68;;;;-1:-1:-1;;;15725:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16024:22:0;::::1;16016:73;;;::::0;-1:-1:-1;;;16016:73:0;;8142:2:1;16016:73:0::1;::::0;::::1;8124:21:1::0;8181:2;8161:18;;;8154:30;8220:34;8200:18;;;8193:62;-1:-1:-1;;;8271:18:1;;;8264:36;8317:19;;16016:73:0::1;8114:228:1::0;16016:73:0::1;16100:19;16110:8;16100:9;:19::i;:::-;15935:192:::0;:::o;1953:228::-;2117:20;2165:8;;;1953:228::o;16543:939::-;16673:4;16699:5;16719:6;;;16715:19;;;16727:7;;16543:939;;;:::o;16715:19::-;16744:13;16760:3;16796:1;16780:12;16788:4;16780:5;:12;:::i;:::-;16779:18;;;;:::i;:::-;16772:25;;:4;:25;:::i;:::-;16760:39;;;;;;;;:::i;:::-;;;;;;;;;;;:52;;;16744:68;;16823:564;16835:1;16830;:6;16823:564;;16853:48;16891:5;16860:3;16872:1;16860:15;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:36;16853:48;;;16898:3;;;;:::i;:::-;;;;16853:48;;;16931:3;16943:1;16931:15;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;16923:5;:36;16916:48;;;16961:3;;;;:::i;:::-;;;;16916:48;;;16988:1;16983;:6;16979:397;;17096:3;17108:1;17096:15;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;17147:3;17159:1;17147:15;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;17011:3;17023:1;17011:15;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;17041:3;17053:1;17041:15;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;17010:184;;;;;;;;;;;;17267:3;17279:1;17267:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:23;17292:15;;-1:-1:-1;;;;;17267:23:0;;;;17292:3;;17304:1;;17292:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:23;17214:15;;-1:-1:-1;;;;;17292:23:0;;;;17214:3;;17226:1;;17214:15;;;;;;:::i;:::-;;;;;;;;;;;:23;;;17239:3;17251:1;17239:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;17213:103;;-1:-1:-1;;;;;17213:103:0;;;-1:-1:-1;;;;;;17213:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17335:3;;;;:::i;:::-;;;;17357;;;;;:::i;:::-;;;;16979:397;16823:564;;;17408:1;17401:4;:8;17397:32;;;17411:18;17416:3;17421:4;17427:1;17411:4;:18::i;:::-;17448:5;17444:1;:9;17440:34;;;17455:19;17460:3;17465:1;17468:5;17455:4;:19::i;:::-;16651:831;;;16543:939;;;:::o;14211:174::-;14286:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;14286:29:0;-1:-1:-1;;;;;14286:29:0;;;;;;;;:24;;14340:23;14286:24;14340:14;:23::i;:::-;-1:-1:-1;;;;;14331:46:0;;;;;;;;;;;14211:174;;:::o;22315:194::-;22356:7;22397:16;;22380:13;;:33;22376:93;;;22447:10;;22430:13;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;22376:93:0;22486:13;:15;;;:13;:15;;;:::i;:::-;;;;;22479:22;;22315:194;:::o;12450:110::-;12526:26;12536:2;12540:7;12526:26;;;;;;;;;;;;:9;:26::i;12088:348::-;12181:4;12036:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12036:16:0;12198:73;;;;-1:-1:-1;;;12198:73:0;;10071:2:1;12198:73:0;;;10053:21:1;10110:2;10090:18;;;10083:30;10149:34;10129:18;;;10122:62;-1:-1:-1;;;10200:18:1;;;10193:42;10252:19;;12198:73:0;10043:234:1;12198:73:0;12282:13;12298:23;12313:7;12298:14;:23::i;:::-;12282:39;;12351:5;-1:-1:-1;;;;;12340:16:0;:7;-1:-1:-1;;;;;12340:16:0;;:51;;;;12384:7;-1:-1:-1;;;;;12360:31:0;:20;12372:7;12360:11;:20::i;:::-;-1:-1:-1;;;;;12360:31:0;;12340:51;:87;;;-1:-1:-1;;;;;;10710:25:0;;;10686:4;10710:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12395:32;12332:96;12088:348;-1:-1:-1;;;;12088:348:0:o;13661:536::-;13820:4;-1:-1:-1;;;;;13793:31:0;:23;13808:7;13793:14;:23::i;:::-;-1:-1:-1;;;;;13793:31:0;;13785:85;;;;-1:-1:-1;;;13785:85:0;;13221:2:1;13785:85:0;;;13203:21:1;13260:2;13240:18;;;13233:30;13299:34;13279:18;;;13272:62;-1:-1:-1;;;13350:18:1;;;13343:39;13399:19;;13785:85:0;13193:231:1;13785:85:0;-1:-1:-1;;;;;13889:16:0;;13881:65;;;;-1:-1:-1;;;13881:65:0;;8906:2:1;13881:65:0;;;8888:21:1;8945:2;8925:18;;;8918:30;8984:34;8964:18;;;8957:62;-1:-1:-1;;;9035:18:1;;;9028:34;9079:19;;13881:65:0;8878:226:1;13881:65:0;14021:29;14038:1;14042:7;14021:8;:29::i;:::-;-1:-1:-1;;;;;14063:15:0;;;;;;:9;:15;;;;;:20;;14082:1;;14063:15;:20;;14082:1;;14063:20;:::i;:::-;;;;-1:-1:-1;;;;;;;14094:13:0;;;;;;:9;:13;;;;;:18;;14111:1;;14094:13;:18;;14111:1;;14094:18;:::i;:::-;;;;-1:-1:-1;;14123:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14123:21:0;-1:-1:-1;;;;;14123:21:0;;;;;;;;;14162:27;;14123:16;;14162:27;;;;;;;13661:536;;;:::o;25171:99::-;25234:28;;-1:-1:-1;;;;;25234:20:0;;;:28;;;;;25255:6;;25234:28;;;;25255:6;25234:20;:28;;;;;;;;;;;;;;;;;;;16135:173;16191:16;16210:6;;-1:-1:-1;;;;;16227:17:0;;;-1:-1:-1;;;;;;16227:17:0;;;;;;16260:40;;16210:6;;;;;;;16260:40;;16191:16;16260:40;16180:128;16135:173;:::o;11618:315::-;11775:28;11785:4;11791:2;11795:7;11775:9;:28::i;:::-;11822:48;11845:4;11851:2;11855:7;11864:5;11822:22;:48::i;:::-;11814:111;;;;-1:-1:-1;;;11814:111:0;;;;;;;:::i;18845:108::-;18905:13;18938:7;18931:14;;;;;:::i;5933:554::-;5989:13;6041:10;6037:53;;-1:-1:-1;;6068:10:0;;;;;;;;;;;;-1:-1:-1;;;6068:10:0;;;;;5933:554::o;6037:53::-;6115:5;6100:12;6156:78;6163:9;;6156:78;;6189:8;;;;:::i;:::-;;-1:-1:-1;6212:10:0;;-1:-1:-1;6220:2:0;6212:10;;:::i;:::-;;;6156:78;;;6244:19;6276:6;6266:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6266:17:0;;6244:39;;6294:154;6301:10;;6294:154;;6328:11;6338:1;6328:11;;:::i;:::-;;-1:-1:-1;6397:10:0;6405:2;6397:5;:10;:::i;:::-;6384:24;;:2;:24;:::i;:::-;6371:39;;6354:6;6361;6354:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;6354:56:0;;;;;;;;-1:-1:-1;6425:11:0;6434:2;6425:11;;:::i;:::-;;;6294:154;;12574:321;12704:18;12710:2;12714:7;12704:5;:18::i;:::-;12755:54;12786:1;12790:2;12794:7;12803:5;12755:22;:54::i;:::-;12733:154;;;;-1:-1:-1;;;12733:154:0;;;;;;;:::i;14399:803::-;14554:4;-1:-1:-1;;;;;14575:13:0;;2117:20;2165:8;14571:624;;14611:72;;-1:-1:-1;;;14611:72:0;;-1:-1:-1;;;;;14611:36:0;;;;;:72;;5703:10;;14662:4;;14668:7;;14677:5;;14611:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14611:72:0;;;;;;;;-1:-1:-1;;14611:72:0;;;;;;;;;;;;:::i;:::-;;;14607:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14857:13:0;;14853:272;;14900:60;;-1:-1:-1;;;14900:60:0;;;;;;;:::i;14853:272::-;15075:6;15069:13;15060:6;15056:2;15052:15;15045:38;14607:533;-1:-1:-1;;;;;;14734:55:0;-1:-1:-1;;;14734:55:0;;-1:-1:-1;14727:62:0;;14571:624;-1:-1:-1;15179:4:0;14399:803;;;;;;:::o;12909:382::-;-1:-1:-1;;;;;12989:16:0;;12981:61;;;;-1:-1:-1;;;12981:61:0;;11730:2:1;12981:61:0;;;11712:21:1;;;11749:18;;;11742:30;11808:34;11788:18;;;11781:62;11860:18;;12981:61:0;11702:182:1;12981:61:0;12012:4;12036:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12036:16:0;:30;13053:58;;;;-1:-1:-1;;;13053:58:0;;8549:2:1;13053:58:0;;;8531:21:1;8588:2;8568:18;;;8561:30;8627;8607:18;;;8600:58;8675:18;;13053:58:0;8521:178:1;13053:58:0;-1:-1:-1;;;;;13182:13:0;;;;;;:9;:13;;;;;:18;;13199:1;;13182:13;:18;;13199:1;;13182:18;:::i;:::-;;;;-1:-1:-1;;13211:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;13211:21:0;-1:-1:-1;;;;;13211:21:0;;;;;;;;13250:33;;13211:16;;;13250:33;;13211:16;;13250:33;12909:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:2;;813:1;810;803:12;747:2;699:124;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:2;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:2;;;1121:1;1118;1111:12;1073:2;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:2;;;1329:1;1326;1319:12;1281:2;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1271:173;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:2;;;1611:1;1608;1601:12;1563:2;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1553:224;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:2;;;1971:1;1968;1961:12;1922:2;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:2;;;2241:1;2238;2231:12;2195:2;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:2:1;;2346:1;2343;2336:12;2295:2;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1912:536;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:2;;;2595:1;2592;2585:12;2547:2;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:2;;;2857:1;2854;2847:12;2809:2;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2799:167:1:o;2971:180::-;3027:6;3080:2;3068:9;3059:7;3055:23;3051:32;3048:2;;;3096:1;3093;3086:12;3048:2;3119:26;3135:9;3119:26;:::i;3156:245::-;3214:6;3267:2;3255:9;3246:7;3242:23;3238:32;3235:2;;;3283:1;3280;3273:12;3235:2;3322:9;3309:23;3341:30;3365:5;3341:30;:::i;3406:249::-;3475:6;3528:2;3516:9;3507:7;3503:23;3499:32;3496:2;;;3544:1;3541;3534:12;3496:2;3576:9;3570:16;3595:30;3619:5;3595:30;:::i;3660:450::-;3729:6;3782:2;3770:9;3761:7;3757:23;3753:32;3750:2;;;3798:1;3795;3788:12;3750:2;3838:9;3825:23;3871:18;3863:6;3860:30;3857:2;;;3903:1;3900;3893:12;3857:2;3926:22;;3979:4;3971:13;;3967:27;-1:-1:-1;3957:2:1;;4008:1;4005;3998:12;3957:2;4031:73;4096:7;4091:2;4078:16;4073:2;4069;4065:11;4031:73;:::i;4115:180::-;4174:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:2;;;4243:1;4240;4233:12;4195:2;-1:-1:-1;4266:23:1;;4185:110;-1:-1:-1;4185:110:1:o;4300:184::-;4370:6;4423:2;4411:9;4402:7;4398:23;4394:32;4391:2;;;4439:1;4436;4429:12;4391:2;-1:-1:-1;4462:16:1;;4381:103;-1:-1:-1;4381:103:1:o;4489:248::-;4557:6;4565;4618:2;4606:9;4597:7;4593:23;4589:32;4586:2;;;4634:1;4631;4624:12;4586:2;-1:-1:-1;;4657:23:1;;;4727:2;4712:18;;;4699:32;;-1:-1:-1;4576:161:1:o;4742:257::-;4783:3;4821:5;4815:12;4848:6;4843:3;4836:19;4864:63;4920:6;4913:4;4908:3;4904:14;4897:4;4890:5;4886:16;4864:63;:::i;:::-;4981:2;4960:15;-1:-1:-1;;4956:29:1;4947:39;;;;4988:4;4943:50;;4791:208;-1:-1:-1;;4791:208:1:o;5004:470::-;5183:3;5221:6;5215:13;5237:53;5283:6;5278:3;5271:4;5263:6;5259:17;5237:53;:::i;:::-;5353:13;;5312:16;;;;5375:57;5353:13;5312:16;5409:4;5397:17;;5375:57;:::i;:::-;5448:20;;5191:283;-1:-1:-1;;;;5191:283:1:o;5687:488::-;-1:-1:-1;;;;;5956:15:1;;;5938:34;;6008:15;;6003:2;5988:18;;5981:43;6055:2;6040:18;;6033:34;;;6103:3;6098:2;6083:18;;6076:31;;;5881:4;;6124:45;;6149:19;;6141:6;6124:45;:::i;:::-;6116:53;5890:285;-1:-1:-1;;;;;;5890:285:1:o;6593:219::-;6742:2;6731:9;6724:21;6705:4;6762:44;6802:2;6791:9;6787:18;6779:6;6762:44;:::i;7170:414::-;7372:2;7354:21;;;7411:2;7391:18;;;7384:30;7450:34;7445:2;7430:18;;7423:62;-1:-1:-1;;;7516:2:1;7501:18;;7494:48;7574:3;7559:19;;7344:240::o;12658:356::-;12860:2;12842:21;;;12879:18;;;12872:30;12938:34;12933:2;12918:18;;12911:62;13005:2;12990:18;;12832:182::o;15071:413::-;15273:2;15255:21;;;15312:2;15292:18;;;15285:30;15351:34;15346:2;15331:18;;15324:62;-1:-1:-1;;;15417:2:1;15402:18;;15395:47;15474:3;15459:19;;15245:239::o;16440:265::-;16479:3;16507:9;;;16532:10;;-1:-1:-1;;;;;16551:27:1;;;16544:35;;16528:52;16525:2;;;16583:18;;:::i;:::-;-1:-1:-1;;;16630:19:1;;;16623:27;;16615:36;;16612:2;;;16654:18;;:::i;:::-;-1:-1:-1;;16690:9:1;;16487:218::o;16710:128::-;16750:3;16781:1;16777:6;16774:1;16771:13;16768:2;;;16787:18;;:::i;:::-;-1:-1:-1;16823:9:1;;16758:80::o;16843:193::-;16882:1;16908;16898:2;;16913:18;;:::i;:::-;-1:-1:-1;;;16949:18:1;;-1:-1:-1;;16969:13:1;;16945:38;16942:2;;;16986:18;;:::i;:::-;-1:-1:-1;17020:10:1;;16888:148::o;17041:120::-;17081:1;17107;17097:2;;17112:18;;:::i;:::-;-1:-1:-1;17146:9:1;;17087:74::o;17166:168::-;17206:7;17272:1;17268;17264:6;17260:14;17257:1;17254:21;17249:1;17242:9;17235:17;17231:45;17228:2;;;17279:18;;:::i;:::-;-1:-1:-1;17319:9:1;;17218:116::o;17339:267::-;17378:4;17407:9;;;17432:10;;-1:-1:-1;;;17451:19:1;;17444:27;;17428:44;17425:2;;;17475:18;;:::i;:::-;-1:-1:-1;;;;;17522:27:1;;17515:35;;17507:44;;17504:2;;;17554:18;;:::i;:::-;-1:-1:-1;;17591:9:1;;17387:219::o;17611:125::-;17651:4;17679:1;17676;17673:8;17670:2;;;17684:18;;:::i;:::-;-1:-1:-1;17721:9:1;;17660:76::o;17741:258::-;17813:1;17823:113;17837:6;17834:1;17831:13;17823:113;;;17913:11;;;17907:18;17894:11;;;17887:39;17859:2;17852:10;17823:113;;;17954:6;17951:1;17948:13;17945:2;;;-1:-1:-1;;17989:1:1;17971:16;;17964:27;17794:205::o;18004:144::-;18042:3;-1:-1:-1;;;18063:22:1;;18060:2;;;18088:18;;:::i;:::-;-1:-1:-1;;;18124:18:1;;18050:98::o;18153:380::-;18232:1;18228:12;;;;18275;;;18296:2;;18350:4;18342:6;18338:17;18328:27;;18296:2;18403;18395:6;18392:14;18372:18;18369:38;18366:2;;;18449:10;18444:3;18440:20;18437:1;18430:31;18484:4;18481:1;18474:15;18512:4;18509:1;18502:15;18366:2;;18208:325;;;:::o;18538:147::-;18576:3;-1:-1:-1;;;;;18597:30:1;;18594:2;;;18630:18;;:::i;:::-;-1:-1:-1;18677:1:1;18666:13;;18584:101::o;18690:135::-;18729:3;-1:-1:-1;;18750:17:1;;18747:2;;;18770:18;;:::i;18830:209::-;18868:3;18896:18;18949:2;18942:5;18938:14;18976:2;18967:7;18964:15;18961:2;;;18982:18;;:::i;:::-;19031:1;19018:15;;18876:163;-1:-1:-1;;;18876:163:1:o;19044:112::-;19076:1;19102;19092:2;;19107:18;;:::i;:::-;-1:-1:-1;19141:9:1;;19082:74::o;19161:127::-;19222:10;19217:3;19213:20;19210:1;19203:31;19253:4;19250:1;19243:15;19277:4;19274:1;19267:15;19293:127;19354:10;19349:3;19345:20;19342:1;19335:31;19385:4;19382:1;19375:15;19409:4;19406:1;19399:15;19425:127;19486:10;19481:3;19477:20;19474:1;19467:31;19517:4;19514:1;19507:15;19541:4;19538:1;19531:15;19557:127;19618:10;19613:3;19609:20;19606:1;19599:31;19649:4;19646:1;19639:15;19673:4;19670:1;19663:15;19689:131;-1:-1:-1;;;;;;19763:32:1;;19753:43;;19743:2;;19810:1;19807;19800:12

Swarm Source

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