ETH Price: $2,532.80 (-4.00%)

Token

Floyd Mayweather - Autograph Collection (FMWAC)
 

Overview

Max Total Supply

2,009 FMWAC

Holders

1,830

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 FMWAC
0x84981f8f5d17c05c5f67749f044a2af8f4cf68c0
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:
FloydAutographCollection

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;


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 ReentrancyGuard {
    
    
    
    
    

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

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

        
        _status = _ENTERED;

        _;

        
        
        _status = _NOT_ENTERED;
    }
}

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

contract FloydAutographCollection is Ownable, ERC721 {

  string public baseURI = "https://floydnft.com/photo-nft/";
  uint public totalSupply;
  bool public isMintingOpen = true;

  constructor() ERC721("Floyd Mayweather - Autograph Collection", "FMWAC") {}

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

  function setBaseURI(string memory newURI) external onlyOwner {
    baseURI = newURI;
  }

  function batchMint(address[] calldata destinations) onlyOwner external {

    uint supply = totalSupply;
    uint batchSize = destinations.length;

    require(isMintingOpen, "Minting has been closed");

    for (uint i = 0; i < batchSize; i++) {
      _safeMint(destinations[i], supply++);
    }

    totalSupply = supply;
  }

  function closeMinting() onlyOwner external {
    isMintingOpen = false;
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"address[]","name":"destinations","type":"address[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMintingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052601f60808190527f68747470733a2f2f666c6f79646e66742e636f6d2f70686f746f2d6e66742f0060a090815262000040916007919062000121565b506009805460ff191660011790553480156200005b57600080fd5b50604051806060016040528060278152602001620025c460279139604080518082019091526005815264464d57414360d81b60208201526200009d33620000d1565b8151620000b290600190602085019062000121565b508051620000c890600290602084019062000121565b50505062000204565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200012f90620001c7565b90600052602060002090601f0160209004810192826200015357600085556200019e565b82601f106200016e57805160ff19168380011785556200019e565b828001600101855582156200019e579182015b828111156200019e57825182559160200191906001019062000181565b50620001ac929150620001b0565b5090565b5b80821115620001ac5760008155600101620001b1565b600181811c90821680620001dc57607f821691505b60208210811415620001fe57634e487b7160e01b600052602260045260246000fd5b50919050565b6123b080620002146000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806370a08231116100d8578063a22cb4651161008c578063d67b06c111610066578063d67b06c11461030b578063e985e9c51461031e578063f2fde38b1461036757600080fd5b8063a22cb465146102d2578063b88d4fde146102e5578063c87b56dd146102f857600080fd5b806387491c60116100bd57806387491c60146102a45780638da5cb5b146102ac57806395d89b41146102ca57600080fd5b806370a0823114610289578063715018a61461029c57600080fd5b80631a2069101161013a57806355f804b31161011457806355f804b31461025b5780636352211e1461026e5780636c0360eb1461028157600080fd5b80631a2069101461022857806323b872dd1461023557806342842e0e1461024857600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc57806318160ddd1461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004612044565b61037a565b60405190151581526020015b60405180910390f35b6101b761045f565b6040516101a6919061219c565b6101d76101d23660046120c2565b6104f1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a366004611fab565b6105d0565b005b61021a60085481565b6040519081526020016101a6565b60095461019a9060ff1681565b61020f610243366004611ebd565b61075d565b61020f610256366004611ebd565b6107fe565b61020f61026936600461207c565b610819565b6101d761027c3660046120c2565b6108b1565b6101b7610963565b61021a610297366004611e71565b6109f1565b61020f610abf565b61020f610b4c565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101b7610bf7565b61020f6102e0366004611f71565b610c06565b61020f6102f3366004611ef8565b610d1d565b6101b76103063660046120c2565b610dc5565b61020f610319366004611fd4565b610ed5565b61019a61032c366004611e8b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b61020f610375366004611e71565b61104f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606001805461046e9061221e565b80601f016020809104026020016040519081016040528092919081815260200182805461049a9061221e565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105db826108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161059e565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c257506106c2813361032c565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161059e565b610758838361117f565b505050565b610767338261121f565b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b61075883838361138f565b61075883838360405180602001604052806000815250610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b80516108ad906007906020840190611d1b565b5050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161059e565b600780546109709061221e565b80601f016020809104026020016040519081016040528092919081815260200182805461099c9061221e565b80156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161059e565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610b4a60006115f6565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606002805461046e9061221e565b73ffffffffffffffffffffffffffffffffffffffff8216331415610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161059e565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d27338361121f565b610db3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610dbf8484848461166b565b50505050565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161059e565b6000610e8361170e565b90506000815111610ea35760405180602001604052806000815250610ece565b80610ead8461171d565b604051602001610ebe929190612124565b6040516020818303038152906040525b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600854600954829060ff16610fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e74696e6720686173206265656e20636c6f736564000000000000000000604482015260640161059e565b60005b818110156110465761103485858381811061100e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906110239190611e71565b8461102d81612272565b955061189d565b8061103e81612272565b915050610fca565b50506008555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff8116611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161059e565b61117c816115f6565b50565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906111d9826108b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166112d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161059e565b60006112db836108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061134a57508373ffffffffffffffffffffffffffffffffffffffff16611332846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b80611387575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166113af826108b1565b73ffffffffffffffffffffffffffffffffffffffff1614611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff82166114f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161059e565b6114ff60008261117f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906115359084906121db565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906115709084906121af565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61167684848461138f565b611682848484846118b7565b610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b60606007805461046e9061221e565b60608161175d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611787578061177181612272565b91506117809050600a836121c7565b9150611761565b60008167ffffffffffffffff8111156117c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156117f3576020820181803683370190505b5090505b8415611387576118086001836121db565b9150611815600a866122ab565b6118209060306121af565b60f81b81838151811061185c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611896600a866121c7565b94506117f7565b6108ad828260405180602001604052806000815250611ab6565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611aab576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061192e903390899088908890600401612153565b602060405180830381600087803b15801561194857600080fd5b505af1925050508015611996575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261199391810190612060565b60015b611a60573d8080156119c4576040519150601f19603f3d011682016040523d82523d6000602084013e6119c9565b606091505b508051611a58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611387565b506001949350505050565b611ac08383611b59565b611acd60008484846118b7565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff8216611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161059e565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120805460019290611c989084906121af565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d279061221e565b90600052602060002090601f016020900481019282611d495760008555611d8f565b82601f10611d6257805160ff1916838001178555611d8f565b82800160010185558215611d8f579182015b82811115611d8f578251825591602001919060010190611d74565b50611d9b929150611d9f565b5090565b5b80821115611d9b5760008155600101611da0565b600067ffffffffffffffff80841115611dcf57611dcf61231d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611e1557611e1561231d565b81604052809350858152868686011115611e2e57600080fd5b858560208301376000602087830101525050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611e6c57600080fd5b919050565b600060208284031215611e82578081fd5b610ece82611e48565b60008060408385031215611e9d578081fd5b611ea683611e48565b9150611eb460208401611e48565b90509250929050565b600080600060608486031215611ed1578081fd5b611eda84611e48565b9250611ee860208501611e48565b9150604084013590509250925092565b60008060008060808587031215611f0d578081fd5b611f1685611e48565b9350611f2460208601611e48565b925060408501359150606085013567ffffffffffffffff811115611f46578182fd5b8501601f81018713611f56578182fd5b611f6587823560208401611db4565b91505092959194509250565b60008060408385031215611f83578182fd5b611f8c83611e48565b915060208301358015158114611fa0578182fd5b809150509250929050565b60008060408385031215611fbd578182fd5b611fc683611e48565b946020939093013593505050565b60008060208385031215611fe6578182fd5b823567ffffffffffffffff80821115611ffd578384fd5b818501915085601f830112612010578384fd5b81358181111561201e578485fd5b8660208260051b8501011115612032578485fd5b60209290920196919550909350505050565b600060208284031215612055578081fd5b8135610ece8161234c565b600060208284031215612071578081fd5b8151610ece8161234c565b60006020828403121561208d578081fd5b813567ffffffffffffffff8111156120a3578182fd5b8201601f810184136120b3578182fd5b61138784823560208401611db4565b6000602082840312156120d3578081fd5b5035919050565b600081518084526120f28160208601602086016121f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516121368184602088016121f2565b83519083019061214a8183602088016121f2565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261219260808301846120da565b9695505050505050565b602081526000610ece60208301846120da565b600082198211156121c2576121c26122bf565b500190565b6000826121d6576121d66122ee565b500490565b6000828210156121ed576121ed6122bf565b500390565b60005b8381101561220d5781810151838201526020016121f5565b83811115610dbf5750506000910152565b600181811c9082168061223257607f821691505b6020821081141561226c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156122a4576122a46122bf565b5060010190565b6000826122ba576122ba6122ee565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461117c57600080fdfea2646970667358221220db6298671a2731bf9dccd7217dd781b3fb0e4f82fd28bf8f2d82db755dfd4a6364736f6c63430008040033466c6f7964204d617977656174686572202d204175746f677261706820436f6c6c656374696f6e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101825760003560e01c806370a08231116100d8578063a22cb4651161008c578063d67b06c111610066578063d67b06c11461030b578063e985e9c51461031e578063f2fde38b1461036757600080fd5b8063a22cb465146102d2578063b88d4fde146102e5578063c87b56dd146102f857600080fd5b806387491c60116100bd57806387491c60146102a45780638da5cb5b146102ac57806395d89b41146102ca57600080fd5b806370a0823114610289578063715018a61461029c57600080fd5b80631a2069101161013a57806355f804b31161011457806355f804b31461025b5780636352211e1461026e5780636c0360eb1461028157600080fd5b80631a2069101461022857806323b872dd1461023557806342842e0e1461024857600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc57806318160ddd1461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004612044565b61037a565b60405190151581526020015b60405180910390f35b6101b761045f565b6040516101a6919061219c565b6101d76101d23660046120c2565b6104f1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a366004611fab565b6105d0565b005b61021a60085481565b6040519081526020016101a6565b60095461019a9060ff1681565b61020f610243366004611ebd565b61075d565b61020f610256366004611ebd565b6107fe565b61020f61026936600461207c565b610819565b6101d761027c3660046120c2565b6108b1565b6101b7610963565b61021a610297366004611e71565b6109f1565b61020f610abf565b61020f610b4c565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101b7610bf7565b61020f6102e0366004611f71565b610c06565b61020f6102f3366004611ef8565b610d1d565b6101b76103063660046120c2565b610dc5565b61020f610319366004611fd4565b610ed5565b61019a61032c366004611e8b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b61020f610375366004611e71565b61104f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606001805461046e9061221e565b80601f016020809104026020016040519081016040528092919081815260200182805461049a9061221e565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105db826108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161059e565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c257506106c2813361032c565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161059e565b610758838361117f565b505050565b610767338261121f565b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b61075883838361138f565b61075883838360405180602001604052806000815250610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b80516108ad906007906020840190611d1b565b5050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161059e565b600780546109709061221e565b80601f016020809104026020016040519081016040528092919081815260200182805461099c9061221e565b80156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161059e565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610b4a60006115f6565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606002805461046e9061221e565b73ffffffffffffffffffffffffffffffffffffffff8216331415610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161059e565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d27338361121f565b610db3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610dbf8484848461166b565b50505050565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161059e565b6000610e8361170e565b90506000815111610ea35760405180602001604052806000815250610ece565b80610ead8461171d565b604051602001610ebe929190612124565b6040516020818303038152906040525b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600854600954829060ff16610fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e74696e6720686173206265656e20636c6f736564000000000000000000604482015260640161059e565b60005b818110156110465761103485858381811061100e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906110239190611e71565b8461102d81612272565b955061189d565b8061103e81612272565b915050610fca565b50506008555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff8116611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161059e565b61117c816115f6565b50565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906111d9826108b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166112d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161059e565b60006112db836108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061134a57508373ffffffffffffffffffffffffffffffffffffffff16611332846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b80611387575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166113af826108b1565b73ffffffffffffffffffffffffffffffffffffffff1614611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff82166114f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161059e565b6114ff60008261117f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906115359084906121db565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906115709084906121af565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61167684848461138f565b611682848484846118b7565b610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b60606007805461046e9061221e565b60608161175d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611787578061177181612272565b91506117809050600a836121c7565b9150611761565b60008167ffffffffffffffff8111156117c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156117f3576020820181803683370190505b5090505b8415611387576118086001836121db565b9150611815600a866122ab565b6118209060306121af565b60f81b81838151811061185c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611896600a866121c7565b94506117f7565b6108ad828260405180602001604052806000815250611ab6565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611aab576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061192e903390899088908890600401612153565b602060405180830381600087803b15801561194857600080fd5b505af1925050508015611996575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261199391810190612060565b60015b611a60573d8080156119c4576040519150601f19603f3d011682016040523d82523d6000602084013e6119c9565b606091505b508051611a58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611387565b506001949350505050565b611ac08383611b59565b611acd60008484846118b7565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff8216611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161059e565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120805460019290611c989084906121af565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d279061221e565b90600052602060002090601f016020900481019282611d495760008555611d8f565b82601f10611d6257805160ff1916838001178555611d8f565b82800160010185558215611d8f579182015b82811115611d8f578251825591602001919060010190611d74565b50611d9b929150611d9f565b5090565b5b80821115611d9b5760008155600101611da0565b600067ffffffffffffffff80841115611dcf57611dcf61231d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611e1557611e1561231d565b81604052809350858152868686011115611e2e57600080fd5b858560208301376000602087830101525050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611e6c57600080fd5b919050565b600060208284031215611e82578081fd5b610ece82611e48565b60008060408385031215611e9d578081fd5b611ea683611e48565b9150611eb460208401611e48565b90509250929050565b600080600060608486031215611ed1578081fd5b611eda84611e48565b9250611ee860208501611e48565b9150604084013590509250925092565b60008060008060808587031215611f0d578081fd5b611f1685611e48565b9350611f2460208601611e48565b925060408501359150606085013567ffffffffffffffff811115611f46578182fd5b8501601f81018713611f56578182fd5b611f6587823560208401611db4565b91505092959194509250565b60008060408385031215611f83578182fd5b611f8c83611e48565b915060208301358015158114611fa0578182fd5b809150509250929050565b60008060408385031215611fbd578182fd5b611fc683611e48565b946020939093013593505050565b60008060208385031215611fe6578182fd5b823567ffffffffffffffff80821115611ffd578384fd5b818501915085601f830112612010578384fd5b81358181111561201e578485fd5b8660208260051b8501011115612032578485fd5b60209290920196919550909350505050565b600060208284031215612055578081fd5b8135610ece8161234c565b600060208284031215612071578081fd5b8151610ece8161234c565b60006020828403121561208d578081fd5b813567ffffffffffffffff8111156120a3578182fd5b8201601f810184136120b3578182fd5b61138784823560208401611db4565b6000602082840312156120d3578081fd5b5035919050565b600081518084526120f28160208601602086016121f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516121368184602088016121f2565b83519083019061214a8183602088016121f2565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261219260808301846120da565b9695505050505050565b602081526000610ece60208301846120da565b600082198211156121c2576121c26122bf565b500190565b6000826121d6576121d66122ee565b500490565b6000828210156121ed576121ed6122bf565b500390565b60005b8381101561220d5781810151838201526020016121f5565b83811115610dbf5750506000910152565b600181811c9082168061223257607f821691505b6020821081141561226c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156122a4576122a46122bf565b5060010190565b6000826122ba576122ba6122ee565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461117c57600080fdfea2646970667358221220db6298671a2731bf9dccd7217dd781b3fb0e4f82fd28bf8f2d82db755dfd4a6364736f6c63430008040033

Deployed Bytecode Sourcemap

16835:893:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8127:305;;;;;;:::i;:::-;;:::i;:::-;;;6653:14:1;;6646:22;6628:41;;6616:2;6601:18;8127:305:0;;;;;;;;8921:100;;;:::i;:::-;;;;;;;:::i;10034:221::-;;;;;;:::i;:::-;;:::i;:::-;;;5917:42:1;5905:55;;;5887:74;;5875:2;5860:18;10034:221:0;5842:125:1;9609:411:0;;;;;;:::i;:::-;;:::i;:::-;;16957:23;;;;;;;;;13784:25:1;;;13772:2;13757:18;16957:23:0;13739:76:1;16985:32:0;;;;;;;;;10756:296;;;;;;:::i;:::-;;:::i;11066:185::-;;;;;;:::i;:::-;;:::i;17205:90::-;;;;;;:::i;:::-;;:::i;8668:239::-;;;;;;:::i;:::-;;:::i;16895:57::-;;;:::i;8446:208::-;;;;;;:::i;:::-;;:::i;16347:94::-;;;:::i;17646:77::-;;;:::i;16112:87::-;16158:7;16185:6;;;16112:87;;9035:104;;;:::i;10269:295::-;;;;;;:::i;:::-;;:::i;11265:328::-;;;;;;:::i;:::-;;:::i;9153:334::-;;;;;;:::i;:::-;;:::i;17301:339::-;;;;;;:::i;:::-;;:::i;10578:164::-;;;;;;:::i;:::-;10699:25;;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10578:164;16455:192;;;;;;:::i;:::-;;:::i;8127:305::-;8229:4;8266:40;;;8281:25;8266:40;;:105;;-1:-1:-1;8323:48:0;;;8338:33;8323:48;8266:105;:158;;;-1:-1:-1;7475:25:0;7460:40;;;;8388:36;8246:178;8127:305;-1:-1:-1;;8127:305:0:o;8921:100::-;8975:13;9008:5;9001:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8921:100;:::o;10034:221::-;10110:7;12025:16;;;:7;:16;;;;;;:30;:16;10130:73;;;;;;;11420:2:1;10130:73:0;;;11402:21:1;11459:2;11439:18;;;11432:30;11498:34;11478:18;;;11471:62;11569:14;11549:18;;;11542:42;11601:19;;10130:73:0;;;;;;;;;-1:-1:-1;10223:24:0;;;;:15;:24;;;;;;;;;10034:221::o;9609:411::-;9690:13;9706:23;9721:7;9706:14;:23::i;:::-;9690:39;;9754:5;9748:11;;:2;:11;;;;9740:57;;;;;;;13020:2:1;9740:57:0;;;13002:21:1;13059:2;13039:18;;;13032:30;13098:34;13078:18;;;13071:62;13169:3;13149:18;;;13142:31;13190:19;;9740:57:0;12992:223:1;9740:57:0;5692:10;9832:21;;;;;:62;;-1:-1:-1;9857:37:0;9874:5;5692:10;10578:164;:::i;9857:37::-;9810:168;;;;;;;9813:2:1;9810:168:0;;;9795:21:1;9852:2;9832:18;;;9825:30;9891:34;9871:18;;;9864:62;9962:26;9942:18;;;9935:54;10006:19;;9810:168:0;9785:246:1;9810:168:0;9991:21;10000:2;10004:7;9991:8;:21::i;:::-;9609:411;;;:::o;10756:296::-;10908:41;5692:10;10941:7;10908:18;:41::i;:::-;10900:103;;;;;;;13422:2:1;10900:103:0;;;13404:21:1;13461:2;13441:18;;;13434:30;13500:34;13480:18;;;13473:62;13571:19;13551:18;;;13544:47;13608:19;;10900:103:0;13394:239:1;10900:103:0;11016:28;11026:4;11032:2;11036:7;11016:9;:28::i;11066:185::-;11204:39;11221:4;11227:2;11231:7;11204:39;;;;;;;;;;;;:16;:39::i;17205:90::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11833:2:1;16245:68:0;;;11815:21:1;;;11852:18;;;11845:30;11911:34;11891:18;;;11884:62;11963:18;;16245:68:0;11805:182:1;16245:68:0;17273:16;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;17205:90:::0;:::o;8668:239::-;8740:7;8776:16;;;:7;:16;;;;;;;;8811:19;8803:73;;;;;;;10649:2:1;8803:73:0;;;10631:21:1;10688:2;10668:18;;;10661:30;10727:34;10707:18;;;10700:62;10798:11;10778:18;;;10771:39;10827:19;;8803:73:0;10621:231:1;16895:57:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8446:208::-;8518:7;8546:19;;;8538:74;;;;;;;10238:2:1;8538:74:0;;;10220:21:1;10277:2;10257:18;;;10250:30;10316:34;10296:18;;;10289:62;10387:12;10367:18;;;10360:40;10417:19;;8538:74:0;10210:232:1;8538:74:0;-1:-1:-1;8630:16:0;;;;;;:9;:16;;;;;;;8446:208::o;16347:94::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11833:2:1;16245:68:0;;;11815:21:1;;;11852:18;;;11845:30;11911:34;11891:18;;;11884:62;11963:18;;16245:68:0;11805:182:1;16245:68:0;16412:21:::1;16430:1;16412:9;:21::i;:::-;16347:94::o:0;17646:77::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11833:2:1;16245:68:0;;;11815:21:1;;;11852:18;;;11845:30;11911:34;11891:18;;;11884:62;11963:18;;16245:68:0;11805:182:1;16245:68:0;17696:13:::1;:21:::0;;;::::1;::::0;;17646:77::o;9035:104::-;9091:13;9124:7;9117:14;;;;;:::i;10269:295::-;10372:24;;;5692:10;10372:24;;10364:62;;;;;;;9046:2:1;10364:62:0;;;9028:21:1;9085:2;9065:18;;;9058:30;9124:27;9104:18;;;9097:55;9169:18;;10364:62:0;9018:175:1;10364:62:0;5692:10;10439:32;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;10508:48;;6628:41:1;;;10439:42:0;;5692:10;10508:48;;6601:18:1;10508:48:0;;;;;;;10269:295;;:::o;11265:328::-;11440:41;5692:10;11473:7;11440:18;:41::i;:::-;11432:103;;;;;;;13422:2:1;11432:103:0;;;13404:21:1;13461:2;13441:18;;;13434:30;13500:34;13480:18;;;13473:62;13571:19;13551:18;;;13544:47;13608:19;;11432:103:0;13394:239:1;11432:103:0;11546:39;11560:4;11566:2;11570:7;11579:5;11546:13;:39::i;:::-;11265:328;;;;:::o;9153:334::-;12001:4;12025:16;;;:7;:16;;;;;;9226:13;;12025:30;:16;9252:76;;;;;;;12604:2:1;9252:76:0;;;12586:21:1;12643:2;12623:18;;;12616:30;12682:34;12662:18;;;12655:62;12753:17;12733:18;;;12726:45;12788:19;;9252:76:0;12576:237:1;9252:76:0;9341:21;9365:10;:8;:10::i;:::-;9341:34;;9417:1;9399:7;9393:21;:25;:86;;;;;;;;;;;;;;;;;9445:7;9454:18;:7;:16;:18::i;:::-;9428:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9393:86;9386:93;9153:334;-1:-1:-1;;;9153:334:0:o;17301:339::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11833:2:1;16245:68:0;;;11815:21:1;;;11852:18;;;11845:30;11911:34;11891:18;;;11884:62;11963:18;;16245:68:0;11805:182:1;16245:68:0;17395:11:::1;::::0;17466:13:::1;::::0;17430:12;;17466:13:::1;;17458:49;;;::::0;::::1;::::0;;8694:2:1;17458:49:0::1;::::0;::::1;8676:21:1::0;8733:2;8713:18;;;8706:30;8772:25;8752:18;;;8745:53;8815:18;;17458:49:0::1;8666:173:1::0;17458:49:0::1;17521:6;17516:90;17537:9;17533:1;:13;17516:90;;;17562:36;17572:12;;17585:1;17572:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17589:8:::0;::::1;::::0;::::1;:::i;:::-;;;17562:9;:36::i;:::-;17548:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17516:90;;;-1:-1:-1::0;;17614:11:0::1;:20:::0;-1:-1:-1;;17301:339:0:o;16455:192::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11833:2:1;16245:68:0;;;11815:21:1;;;11852:18;;;11845:30;11911:34;11891:18;;;11884:62;11963:18;;16245:68:0;11805:182:1;16245:68:0;16544:22:::1;::::0;::::1;16536:73;;;::::0;::::1;::::0;;7525:2:1;16536:73:0::1;::::0;::::1;7507:21:1::0;7564:2;7544:18;;;7537:30;7603:34;7583:18;;;7576:62;7674:8;7654:18;;;7647:36;7700:19;;16536:73:0::1;7497:228:1::0;16536:73:0::1;16620:19;16630:8;16620:9;:19::i;:::-;16455:192:::0;:::o;14200:174::-;14275:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;14329:23;14275:24;14329:14;:23::i;:::-;14320:46;;;;;;;;;;;;14200:174;;:::o;12077:348::-;12170:4;12025:16;;;:7;:16;;;;;;:30;:16;12187:73;;;;;;;9400:2:1;12187:73:0;;;9382:21:1;9439:2;9419:18;;;9412:30;9478:34;9458:18;;;9451:62;9549:14;9529:18;;;9522:42;9581:19;;12187:73:0;9372:234:1;12187:73:0;12271:13;12287:23;12302:7;12287:14;:23::i;:::-;12271:39;;12340:5;12329:16;;:7;:16;;;:51;;;;12373:7;12349:31;;:20;12361:7;12349:11;:20::i;:::-;:31;;;12329:51;:87;;;-1:-1:-1;10699:25:0;;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12384:32;12321:96;12077:348;-1:-1:-1;;;;12077:348:0:o;13650:536::-;13809:4;13782:31;;:23;13797:7;13782:14;:23::i;:::-;:31;;;13774:85;;;;;;;12194:2:1;13774:85:0;;;12176:21:1;12233:2;12213:18;;;12206:30;12272:34;12252:18;;;12245:62;12343:11;12323:18;;;12316:39;12372:19;;13774:85:0;12166:231:1;13774:85:0;13878:16;;;13870:65;;;;;;;8289:2:1;13870:65:0;;;8271:21:1;8328:2;8308:18;;;8301:30;8367:34;8347:18;;;8340:62;8438:6;8418:18;;;8411:34;8462:19;;13870:65:0;8261:226:1;13870:65:0;14010:29;14027:1;14031:7;14010:8;:29::i;:::-;14052:15;;;;;;;:9;:15;;;;;:20;;14071:1;;14052:15;:20;;14071:1;;14052:20;:::i;:::-;;;;-1:-1:-1;;14083:13:0;;;;;;;:9;:13;;;;;:18;;14100:1;;14083:13;:18;;14100:1;;14083:18;:::i;:::-;;;;-1:-1:-1;;14112:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;14151:27;;14112:16;;14151:27;;;;;;;13650:536;;;:::o;16655:173::-;16711:16;16730:6;;;16747:17;;;;;;;;;;16780:40;;16730:6;;;;;;;16780:40;;16711:16;16780:40;16655:173;;:::o;11607:315::-;11764:28;11774:4;11780:2;11784:7;11764:9;:28::i;:::-;11811:48;11834:4;11840:2;11844:7;11853:5;11811:22;:48::i;:::-;11803:111;;;;;;;7106:2:1;11803:111:0;;;7088:21:1;7145:2;7125:18;;;7118:30;7184:34;7164:18;;;7157:62;7255:20;7235:18;;;7228:48;7293:19;;11803:111:0;7078:240:1;17105:94:0;17157:13;17186:7;17179:14;;;;;:::i;5922:554::-;5978:13;6030:10;6026:53;;-1:-1:-1;;6057:10:0;;;;;;;;;;;;;;;;;;5922:554::o;6026:53::-;6104:5;6089:12;6145:78;6152:9;;6145:78;;6178:8;;;;:::i;:::-;;-1:-1:-1;6201:10:0;;-1:-1:-1;6209:2:0;6201:10;;:::i;:::-;;;6145:78;;;6233:19;6265:6;6255:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6255:17:0;;6233:39;;6283:154;6290:10;;6283:154;;6317:11;6327:1;6317:11;;:::i;:::-;;-1:-1:-1;6386:10:0;6394:2;6386:5;:10;:::i;:::-;6373:24;;:2;:24;:::i;:::-;6360:39;;6343:6;6350;6343:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;-1:-1:-1;6414:11:0;6423:2;6414:11;;:::i;:::-;;;6283:154;;12439:110;12515:26;12525:2;12529:7;12515:26;;;;;;;;;;;;:9;:26::i;14388:803::-;14543:4;14564:13;;;2106:20;2154:8;14560:624;;14600:72;;;;;:36;;;;;;:72;;5692:10;;14651:4;;14657:7;;14666:5;;14600:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14600:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14596:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14846:13:0;;14842:272;;14889:60;;;;;7106:2:1;14889:60:0;;;7088:21:1;7145:2;7125:18;;;7118:30;7184:34;7164:18;;;7157:62;7255:20;7235:18;;;7228:48;7293:19;;14889:60:0;7078:240:1;14842:272:0;15064:6;15058:13;15049:6;15045:2;15041:15;15034:38;14596:533;14723:55;;14733:45;14723:55;;-1:-1:-1;14716:62:0;;14560:624;-1:-1:-1;15168:4:0;14388:803;;;;;;:::o;12563:321::-;12693:18;12699:2;12703:7;12693:5;:18::i;:::-;12744:54;12775:1;12779:2;12783:7;12792:5;12744:22;:54::i;:::-;12722:154;;;;;;;7106:2:1;12722:154:0;;;7088:21:1;7145:2;7125:18;;;7118:30;7184:34;7164:18;;;7157:62;7255:20;7235:18;;;7228:48;7293:19;;12722:154:0;7078:240:1;12898:382:0;12978:16;;;12970:61;;;;;;;11059:2:1;12970:61:0;;;11041:21:1;;;11078:18;;;11071:30;11137:34;11117:18;;;11110:62;11189:18;;12970:61:0;11031:182:1;12970:61:0;12001:4;12025:16;;;:7;:16;;;;;;:30;:16;:30;13042:58;;;;;;;7932:2:1;13042:58:0;;;7914:21:1;7971:2;7951:18;;;7944:30;8010;7990:18;;;7983:58;8058:18;;13042:58:0;7904:178:1;13042:58:0;13171:13;;;;;;;:9;:13;;;;;:18;;13188:1;;13171:13;:18;;13188:1;;13171:18;:::i;:::-;;;;-1:-1:-1;;13200:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;13239:33;;13200:16;;;13239:33;;13200:16;;13239:33;12898:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:690:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;289:2;283:9;355:2;343:15;;194:66;339:24;;;365:2;335:33;331:42;319:55;;;389:18;;;409:22;;;386:46;383:2;;;435:18;;:::i;:::-;475:10;471:2;464:22;504:6;495:15;;534:6;526;519:22;574:3;565:6;560:3;556:16;553:25;550:2;;;591:1;588;581:12;550:2;641:6;636:3;629:4;621:6;617:17;604:44;696:1;689:4;680:6;672;668:19;664:30;657:41;;;;88:616;;;;;:::o;709:196::-;777:20;;837:42;826:54;;816:65;;806:2;;895:1;892;885:12;806:2;758:147;;;:::o;910:196::-;969:6;1022:2;1010:9;1001:7;997:23;993:32;990:2;;;1043:6;1035;1028:22;990:2;1071:29;1090:9;1071:29;:::i;1111:270::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:2;;;1261:6;1253;1246:22;1208:2;1289:29;1308:9;1289:29;:::i;:::-;1279:39;;1337:38;1371:2;1360:9;1356:18;1337:38;:::i;:::-;1327:48;;1198:183;;;;;:::o;1386:338::-;1463:6;1471;1479;1532:2;1520:9;1511:7;1507:23;1503:32;1500:2;;;1553:6;1545;1538:22;1500:2;1581:29;1600:9;1581:29;:::i;:::-;1571:39;;1629:38;1663:2;1652:9;1648:18;1629:38;:::i;:::-;1619:48;;1714:2;1703:9;1699:18;1686:32;1676:42;;1490:234;;;;;:::o;1729:696::-;1824:6;1832;1840;1848;1901:3;1889:9;1880:7;1876:23;1872:33;1869:2;;;1923:6;1915;1908:22;1869:2;1951:29;1970:9;1951:29;:::i;:::-;1941:39;;1999:38;2033:2;2022:9;2018:18;1999:38;:::i;:::-;1989:48;;2084:2;2073:9;2069:18;2056:32;2046:42;;2139:2;2128:9;2124:18;2111:32;2166:18;2158:6;2155:30;2152:2;;;2203:6;2195;2188:22;2152:2;2231:22;;2284:4;2276:13;;2272:27;-1:-1:-1;2262:2:1;;2318:6;2310;2303:22;2262:2;2346:73;2411:7;2406:2;2393:16;2388:2;2384;2380:11;2346:73;:::i;:::-;2336:83;;;1859:566;;;;;;;:::o;2430:367::-;2495:6;2503;2556:2;2544:9;2535:7;2531:23;2527:32;2524:2;;;2577:6;2569;2562:22;2524:2;2605:29;2624:9;2605:29;:::i;:::-;2595:39;;2684:2;2673:9;2669:18;2656:32;2731:5;2724:13;2717:21;2710:5;2707:32;2697:2;;2758:6;2750;2743:22;2697:2;2786:5;2776:15;;;2514:283;;;;;:::o;2802:264::-;2870:6;2878;2931:2;2919:9;2910:7;2906:23;2902:32;2899:2;;;2952:6;2944;2937:22;2899:2;2980:29;2999:9;2980:29;:::i;:::-;2970:39;3056:2;3041:18;;;;3028:32;;-1:-1:-1;;;2889:177:1:o;3071:665::-;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:2;;;3239:6;3231;3224:22;3186:2;3284:9;3271:23;3313:18;3354:2;3346:6;3343:14;3340:2;;;3375:6;3367;3360:22;3340:2;3418:6;3407:9;3403:22;3393:32;;3463:7;3456:4;3452:2;3448:13;3444:27;3434:2;;3490:6;3482;3475:22;3434:2;3535;3522:16;3561:2;3553:6;3550:14;3547:2;;;3582:6;3574;3567:22;3547:2;3640:7;3635:2;3625:6;3622:1;3618:14;3614:2;3610:23;3606:32;3603:45;3600:2;;;3666:6;3658;3651:22;3600:2;3702;3694:11;;;;;3724:6;;-1:-1:-1;3176:560:1;;-1:-1:-1;;;;3176:560:1:o;3741:255::-;3799:6;3852:2;3840:9;3831:7;3827:23;3823:32;3820:2;;;3873:6;3865;3858:22;3820:2;3917:9;3904:23;3936:30;3960:5;3936:30;:::i;4001:259::-;4070:6;4123:2;4111:9;4102:7;4098:23;4094:32;4091:2;;;4144:6;4136;4129:22;4091:2;4181:9;4175:16;4200:30;4224:5;4200:30;:::i;4265:480::-;4334:6;4387:2;4375:9;4366:7;4362:23;4358:32;4355:2;;;4408:6;4400;4393:22;4355:2;4453:9;4440:23;4486:18;4478:6;4475:30;4472:2;;;4523:6;4515;4508:22;4472:2;4551:22;;4604:4;4596:13;;4592:27;-1:-1:-1;4582:2:1;;4638:6;4630;4623:22;4582:2;4666:73;4731:7;4726:2;4713:16;4708:2;4704;4700:11;4666:73;:::i;4750:190::-;4809:6;4862:2;4850:9;4841:7;4837:23;4833:32;4830:2;;;4883:6;4875;4868:22;4830:2;-1:-1:-1;4911:23:1;;4820:120;-1:-1:-1;4820:120:1:o;4945:316::-;4986:3;5024:5;5018:12;5051:6;5046:3;5039:19;5067:63;5123:6;5116:4;5111:3;5107:14;5100:4;5093:5;5089:16;5067:63;:::i;:::-;5175:2;5163:15;5180:66;5159:88;5150:98;;;;5250:4;5146:109;;4994:267;-1:-1:-1;;4994:267:1:o;5266:470::-;5445:3;5483:6;5477:13;5499:53;5545:6;5540:3;5533:4;5525:6;5521:17;5499:53;:::i;:::-;5615:13;;5574:16;;;;5637:57;5615:13;5574:16;5671:4;5659:17;;5637:57;:::i;:::-;5710:20;;5453:283;-1:-1:-1;;;;5453:283:1:o;5972:511::-;6166:4;6195:42;6276:2;6268:6;6264:15;6253:9;6246:34;6328:2;6320:6;6316:15;6311:2;6300:9;6296:18;6289:43;;6368:6;6363:2;6352:9;6348:18;6341:34;6411:3;6406:2;6395:9;6391:18;6384:31;6432:45;6472:3;6461:9;6457:19;6449:6;6432:45;:::i;:::-;6424:53;6175:308;-1:-1:-1;;;;;;6175:308:1:o;6680:219::-;6829:2;6818:9;6811:21;6792:4;6849:44;6889:2;6878:9;6874:18;6866:6;6849:44;:::i;13820:128::-;13860:3;13891:1;13887:6;13884:1;13881:13;13878:2;;;13897:18;;:::i;:::-;-1:-1:-1;13933:9:1;;13868:80::o;13953:120::-;13993:1;14019;14009:2;;14024:18;;:::i;:::-;-1:-1:-1;14058:9:1;;13999:74::o;14078:125::-;14118:4;14146:1;14143;14140:8;14137:2;;;14151:18;;:::i;:::-;-1:-1:-1;14188:9:1;;14127:76::o;14208:258::-;14280:1;14290:113;14304:6;14301:1;14298:13;14290:113;;;14380:11;;;14374:18;14361:11;;;14354:39;14326:2;14319:10;14290:113;;;14421:6;14418:1;14415:13;14412:2;;;-1:-1:-1;;14456:1:1;14438:16;;14431:27;14261:205::o;14471:437::-;14550:1;14546:12;;;;14593;;;14614:2;;14668:4;14660:6;14656:17;14646:27;;14614:2;14721;14713:6;14710:14;14690:18;14687:38;14684:2;;;14758:77;14755:1;14748:88;14859:4;14856:1;14849:15;14887:4;14884:1;14877:15;14684:2;;14526:382;;;:::o;14913:195::-;14952:3;14983:66;14976:5;14973:77;14970:2;;;15053:18;;:::i;:::-;-1:-1:-1;15100:1:1;15089:13;;14960:148::o;15113:112::-;15145:1;15171;15161:2;;15176:18;;:::i;:::-;-1:-1:-1;15210:9:1;;15151:74::o;15230:184::-;15282:77;15279:1;15272:88;15379:4;15376:1;15369:15;15403:4;15400:1;15393:15;15419:184;15471:77;15468:1;15461:88;15568:4;15565:1;15558:15;15592:4;15589:1;15582:15;15608:184;15660:77;15657:1;15650:88;15757:4;15754:1;15747:15;15781:4;15778:1;15771:15;15797:177;15882:66;15875:5;15871:78;15864:5;15861:89;15851:2;;15964:1;15961;15954:12

Swarm Source

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