ETH Price: $3,308.93 (-4.07%)

Token

Runes (Runes)
 

Overview

Max Total Supply

1,723,136.911342592592591401 Runes

Holders

591

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
oxyear.eth
Balance
151.9474537037037037 Runes

Value
$0.00
0xf8f5B68eAE5b72981fB9A822D2472651D7214cf3
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:
Runes

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-05
*/

// SPDX-License-Identifier: MIT
// # Runes.sol
// This is a ERC-20 token that is ONLY meant to be used as a extension for the Mysterious World NFT Project
// The only use case for this token is to be used to interact with The Mysterious World.
// This token has no monetary value associated to it.
// Read more at https://www.themysterious.world/utility

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) 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);
    }
}

// The interface is used so we can get the balance of each holder
interface TheMysteriousWorld {
    function balanceOf(address inhabitant) external view returns(uint256);
    function ritualWallet() external view returns(address);
}

/*
 * 888d888888  88888888b.  .d88b. .d8888b  
 * 888P"  888  888888 "88bd8P  Y8b88K      
 * 888    888  888888  88888888888"Y8888b. 
 * 888    Y88b 888888  888Y8b.         X88 
 * 888     "Y88888888  888 "Y8888  88888P' 
 */
contract Runes is ERC20, Ownable {
    TheMysteriousWorld public mysteriousworld;

    uint256 public deployedStamp       = 0; // this is used to calculate the amount of $RUNES a user has from the current block.timestamp
    uint256 public runesPerDay         = 10 ether; // this ends up being 25 $RUNES per day. this might change in the future depending on how the collection grows overtime.
    bool    public allowRuneCollecting = false; // this lets you claim your $RUNES from the contract to the wallet

    mapping(address => uint256) public runesObtained; // this tracks how much $RUNES each address earned
    mapping(address => uint256) public lastTimeCollectedRunes; // this sets the block.timestamp to the address so it subtracts the timestamp from the pending rewards
    mapping(address => bool)    public contractWallets; // these are used to interact with the burning mechanisms of the contract - these will only be set to contracts related to The Mysterious World

    constructor() ERC20("Runes", "Runes") {
        deployedStamp = block.timestamp;
    }

    /*
     * # onlyContractWallets
     * blocks anyone from accessing it but contract wallets
     */
    modifier onlyContractWallets() {
        require(contractWallets[msg.sender], "You angered the gods!");
        _;
    }

    /*
     * # onlyWhenCollectingIsEnabled
     * blocks anyone from accessing functions that require allowRuneCollecting
     */
    modifier onlyWhenCollectingIsEnabled() {
        require(allowRuneCollecting, "You angered the gods!");
        _;
    }

    /*
     * # setRuneCollecting
     * enables or disables users to withdraw their runes - should only be called once unless the gods intended otherwise
     */
    function setRuneCollecting(bool newState) public payable onlyOwner {
        allowRuneCollecting = newState;
    }

    /*
     * # setDeployedStamp
     * sets the timestamp for when the $RUNES should start being generated
     */
    function setDeployedStamp(bool forced, uint256 stamp) public payable onlyOwner {
        if (forced) {
            deployedStamp = stamp;
        } else {
            deployedStamp = block.timestamp;
        }
    }

    /*
     * # setRunesPerDay
     * incase we want to change the amount gained per day, the gods can set it here
     */
    function setRunesPerDay(uint256 newRunesPerDay) public payable onlyOwner {
        runesPerDay = newRunesPerDay;
    }

    /*
     * # setMysteriousWorldContract
     * sets the address to the deployed Mysterious World contract
     */
    function setMysteriousWorldContract(address contractAddress) public payable onlyOwner {
        mysteriousworld = TheMysteriousWorld(contractAddress);
    }

    /*
     * # setContractWallets
     * enables or disables a contract wallet from interacting with the burn mechanics of the contract
     */
    function setContractWallets(address contractAddress, bool newState) public payable onlyOwner {
        contractWallets[contractAddress] = newState;
    }

    /*
     * # getPendingRunes
     * calculates the runes a inhabitant has from the last time they claimed and the deployedStamp time
     */
    function getPendingRunes(address inhabitant) internal view returns(uint256) {
        uint256 sumOfRunes = mysteriousworld.balanceOf(inhabitant) * runesPerDay;

        if (lastTimeCollectedRunes[inhabitant] >= deployedStamp) {
            return sumOfRunes * ((block.timestamp - lastTimeCollectedRunes[inhabitant])) / 86400;
        } else {
            return sumOfRunes * ((block.timestamp - deployedStamp)) / 86400;
        }
    }

    /*
     * # getUnclaimedRunes
     * returns the total amount of unclaimed runes a wallet has
     */
    function getUnclaimedRunes(address inhabitant) external view returns(uint256) {
        return getPendingRunes(inhabitant);
    }

    /*
     * # getTotalRunes
     * returns the runesObtained and getPendingRunes for the inhabitant passed
     */
    function getTotalRunes(address inhabitant) external view returns(uint256) {
        return runesObtained[inhabitant] + getPendingRunes(inhabitant);
    }

    /*
     * # burn
     * removes the withdrawn $RUNES from the wallet provided for the amount provided
     */
    function burn(address inhabitant, uint256 cost) external payable onlyContractWallets {
        _burn(inhabitant, cost);
    }

    /*
     * # claimRunes
     * takes the pending $RUNES and puts it into your wallet... you earned these, the gods aren't angry
     */
    function claimRunes() external payable onlyWhenCollectingIsEnabled {
        _mint(msg.sender, runesObtained[msg.sender] + getPendingRunes(msg.sender));

        runesObtained[msg.sender] = 0;
        lastTimeCollectedRunes[msg.sender] = block.timestamp;
    }

    /*
     * # updateRunes
     * updates the pending balance for both of the wallets associated to the transfer so they don't lose the $RUNES generated
     */
    function updateRunes(address from, address to) external onlyContractWallets {
        if (from != address(0) && from != mysteriousworld.ritualWallet()) {
            runesObtained[from]          += getPendingRunes(from);
            lastTimeCollectedRunes[from] = block.timestamp;
        }

        if (to != address(0) && to != mysteriousworld.ritualWallet()) {
            runesObtained[to]          += getPendingRunes(to);
            lastTimeCollectedRunes[to] = block.timestamp;
        }
    }
}

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":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"allowRuneCollecting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"},{"internalType":"uint256","name":"cost","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimRunes","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployedStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"}],"name":"getTotalRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"}],"name":"getUnclaimedRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTimeCollectedRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mysteriousworld","outputs":[{"internalType":"contract TheMysteriousWorld","name":"","type":"address"}],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"runesObtained","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"runesPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"newState","type":"bool"}],"name":"setContractWallets","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"forced","type":"bool"},{"internalType":"uint256","name":"stamp","type":"uint256"}],"name":"setDeployedStamp","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setMysteriousWorldContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"newState","type":"bool"}],"name":"setRuneCollecting","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRunesPerDay","type":"uint256"}],"name":"setRunesPerDay","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"updateRunes","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600755678ac7230489e800006008556009805460ff191690553480156200002c57600080fd5b5060408051808201825260058082526452756e657360d81b6020808401828152855180870190965292855284015281519192916200006d9160039162000100565b5080516200008390600490602084019062000100565b505050620000a06200009a620000aa60201b60201c565b620000ae565b42600755620001e3565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010e90620001a6565b90600052602060002090601f0160209004810192826200013257600085556200017d565b82601f106200014d57805160ff19168380011785556200017d565b828001600101855582156200017d579182015b828111156200017d57825182559160200191906001019062000160565b506200018b9291506200018f565b5090565b5b808211156200018b576000815560010162000190565b600181811c90821680620001bb57607f821691505b60208210811415620001dd57634e487b7160e01b600052602260045260246000fd5b50919050565b61171380620001f36000396000f3fe6080604052600436106101d85760003560e01c80638d5eec9b11610102578063baebddeb11610095578063d5e22fd911610064578063d5e22fd914610522578063dae35b3414610535578063dd62ed3e14610555578063f2fde38b1461059b57600080fd5b8063baebddeb146104c6578063bfd763ca146104d9578063c8942344146104f9578063ceadbe4b1461050c57600080fd5b80639fc8d67d116100d15780639fc8d67d1461045d578063a326a54314610470578063a457c2d714610486578063a9059cbb146104a657600080fd5b80638d5eec9b146103f75780638da5cb5b1461041757806395d89b41146104355780639dc29fac1461044a57600080fd5b8063374901f61161017a57806370a082311161014957806370a0823114610362578063715018a6146103985780638452436c146103ad5780638462a452146103c757600080fd5b8063374901f6146102d557806339509351146102dd5780633bdef865146102fd57806360f162791461032a57600080fd5b806318160ddd116101b657806318160ddd1461024d57806323b872dd1461026c5780632b4b4d9b1461028c578063313ce567146102b957600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a6ddbdb14610238575b600080fd5b3480156101e957600080fd5b506101f26105bb565b6040516101ff9190611554565b60405180910390f35b34801561021457600080fd5b506102286102233660046114bf565b61064d565b60405190151581526020016101ff565b61024b610246366004611506565b610663565b005b34801561025957600080fd5b506002545b6040519081526020016101ff565b34801561027857600080fd5b50610228610287366004611449565b6106ab565b34801561029857600080fd5b5061025e6102a73660046113d6565b600b6020526000908152604090205481565b3480156102c557600080fd5b50604051601281526020016101ff565b61024b610755565b3480156102e957600080fd5b506102286102f83660046114bf565b6107c4565b34801561030957600080fd5b5061025e6103183660046113d6565b600a6020526000908152604090205481565b34801561033657600080fd5b5060065461034a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561036e57600080fd5b5061025e61037d3660046113d6565b6001600160a01b031660009081526020819052604090205490565b3480156103a457600080fd5b5061024b610800565b3480156103b957600080fd5b506009546102289060ff1681565b3480156103d357600080fd5b506102286103e23660046113d6565b600c6020526000908152604090205460ff1681565b34801561040357600080fd5b5061025e6104123660046113d6565b610836565b34801561042357600080fd5b506005546001600160a01b031661034a565b34801561044157600080fd5b506101f261086a565b61024b6104583660046114bf565b610879565b61024b61046b36600461148a565b6108b2565b34801561047c57600080fd5b5061025e60085481565b34801561049257600080fd5b506102286104a13660046114bf565b610907565b3480156104b257600080fd5b506102286104c13660046114bf565b6109a0565b61024b6104d4366004611522565b6109ad565b3480156104e557600080fd5b5061024b6104f4366004611410565b6109dc565b61024b6105073660046113d6565b610c18565b34801561051857600080fd5b5061025e60075481565b61024b6105303660046114eb565b610c64565b34801561054157600080fd5b5061025e6105503660046113d6565b610ca1565b34801561056157600080fd5b5061025e610570366004611410565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a757600080fd5b5061024b6105b63660046113d6565b610cac565b6060600380546105ca9061167d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f69061167d565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065a338484610d47565b50600192915050565b6005546001600160a01b031633146106965760405162461bcd60e51b815260040161068d906115a9565b60405180910390fd5b81156106a25760075550565b426007555b5050565b60006106b8848484610e6c565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561073d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068d565b61074a8533858403610d47565b506001949350505050565b60095460ff166107775760405162461bcd60e51b815260040161068d906115de565b6107a3336107843361103b565b336000908152600a602052604090205461079e919061160d565b61114a565b336000908152600a60209081526040808320839055600b9091529020429055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161065a9185906107fb90869061160d565b610d47565b6005546001600160a01b0316331461082a5760405162461bcd60e51b815260040161068d906115a9565b6108346000611229565b565b60006108418261103b565b6001600160a01b0383166000908152600a6020526040902054610864919061160d565b92915050565b6060600480546105ca9061167d565b336000908152600c602052604090205460ff166108a85760405162461bcd60e51b815260040161068d906115de565b6106a7828261127b565b6005546001600160a01b031633146108dc5760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161068d565b6109963385858403610d47565b5060019392505050565b600061065a338484610e6c565b6005546001600160a01b031633146109d75760405162461bcd60e51b815260040161068d906115a9565b600855565b336000908152600c602052604090205460ff16610a0b5760405162461bcd60e51b815260040161068d906115de565b6001600160a01b03821615801590610aba5750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6c57600080fd5b505afa158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa491906113f3565b6001600160a01b0316826001600160a01b031614155b15610b1157610ac88261103b565b6001600160a01b0383166000908152600a602052604081208054909190610af090849061160d565b90915550506001600160a01b0382166000908152600b602052604090204290555b6001600160a01b03811615801590610bc05750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906113f3565b6001600160a01b0316816001600160a01b031614155b156106a757610bce8161103b565b6001600160a01b0382166000908152600a602052604081208054909190610bf690849061160d565b90915550506001600160a01b03166000908152600b6020526040902042905550565b6005546001600160a01b03163314610c425760405162461bcd60e51b815260040161068d906115a9565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161068d906115a9565b6009805460ff1916911515919091179055565b60006108648261103b565b6005546001600160a01b03163314610cd65760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b038116610d3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068d565b610d4481611229565b50565b6001600160a01b038316610da95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610e0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ed05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610f325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b6001600160a01b03831660009081526020819052604090205481811015610faa5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161068d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610fe190849061160d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161102d91815260200190565b60405180910390a350505050565b6008546006546040516370a0823160e01b81526001600160a01b038481166004830152600093849390929116906370a082319060240160206040518083038186803b15801561108957600080fd5b505afa15801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c1919061153b565b6110cb9190611647565b6007546001600160a01b0385166000908152600b602052604090205491925011611132576001600160a01b0383166000908152600b602052604090205462015180906111179042611666565b6111219083611647565b61112b9190611625565b9392505050565b62015180600754426111179190611666565b50919050565b6001600160a01b0382166111a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068d565b80600260008282546111b2919061160d565b90915550506001600160a01b038216600090815260208190526040812080548392906111df90849061160d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166112db5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161068d565b6001600160a01b0382166000908152602081905260409020548181101561134f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161068d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061137e908490611666565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e5f565b803580151581146113d157600080fd5b919050565b6000602082840312156113e857600080fd5b813561112b816116c8565b60006020828403121561140557600080fd5b815161112b816116c8565b6000806040838503121561142357600080fd5b823561142e816116c8565b9150602083013561143e816116c8565b809150509250929050565b60008060006060848603121561145e57600080fd5b8335611469816116c8565b92506020840135611479816116c8565b929592945050506040919091013590565b6000806040838503121561149d57600080fd5b82356114a8816116c8565b91506114b6602084016113c1565b90509250929050565b600080604083850312156114d257600080fd5b82356114dd816116c8565b946020939093013593505050565b6000602082840312156114fd57600080fd5b61112b826113c1565b6000806040838503121561151957600080fd5b6114dd836113c1565b60006020828403121561153457600080fd5b5035919050565b60006020828403121561154d57600080fd5b5051919050565b600060208083528351808285015260005b8181101561158157858101830151858201604001528201611565565b81811115611593576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260159082015274596f7520616e67657265642074686520676f64732160581b604082015260600190565b60008219821115611620576116206116b2565b500190565b60008261164257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611661576116616116b2565b500290565b600082821015611678576116786116b2565b500390565b600181811c9082168061169157607f821691505b6020821081141561114457634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d4457600080fdfea26469706673582212203dfe29b4a7d169e1e0b461507152098fc8cdc8c1352ec189117495728bf9d53564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101d85760003560e01c80638d5eec9b11610102578063baebddeb11610095578063d5e22fd911610064578063d5e22fd914610522578063dae35b3414610535578063dd62ed3e14610555578063f2fde38b1461059b57600080fd5b8063baebddeb146104c6578063bfd763ca146104d9578063c8942344146104f9578063ceadbe4b1461050c57600080fd5b80639fc8d67d116100d15780639fc8d67d1461045d578063a326a54314610470578063a457c2d714610486578063a9059cbb146104a657600080fd5b80638d5eec9b146103f75780638da5cb5b1461041757806395d89b41146104355780639dc29fac1461044a57600080fd5b8063374901f61161017a57806370a082311161014957806370a0823114610362578063715018a6146103985780638452436c146103ad5780638462a452146103c757600080fd5b8063374901f6146102d557806339509351146102dd5780633bdef865146102fd57806360f162791461032a57600080fd5b806318160ddd116101b657806318160ddd1461024d57806323b872dd1461026c5780632b4b4d9b1461028c578063313ce567146102b957600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a6ddbdb14610238575b600080fd5b3480156101e957600080fd5b506101f26105bb565b6040516101ff9190611554565b60405180910390f35b34801561021457600080fd5b506102286102233660046114bf565b61064d565b60405190151581526020016101ff565b61024b610246366004611506565b610663565b005b34801561025957600080fd5b506002545b6040519081526020016101ff565b34801561027857600080fd5b50610228610287366004611449565b6106ab565b34801561029857600080fd5b5061025e6102a73660046113d6565b600b6020526000908152604090205481565b3480156102c557600080fd5b50604051601281526020016101ff565b61024b610755565b3480156102e957600080fd5b506102286102f83660046114bf565b6107c4565b34801561030957600080fd5b5061025e6103183660046113d6565b600a6020526000908152604090205481565b34801561033657600080fd5b5060065461034a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561036e57600080fd5b5061025e61037d3660046113d6565b6001600160a01b031660009081526020819052604090205490565b3480156103a457600080fd5b5061024b610800565b3480156103b957600080fd5b506009546102289060ff1681565b3480156103d357600080fd5b506102286103e23660046113d6565b600c6020526000908152604090205460ff1681565b34801561040357600080fd5b5061025e6104123660046113d6565b610836565b34801561042357600080fd5b506005546001600160a01b031661034a565b34801561044157600080fd5b506101f261086a565b61024b6104583660046114bf565b610879565b61024b61046b36600461148a565b6108b2565b34801561047c57600080fd5b5061025e60085481565b34801561049257600080fd5b506102286104a13660046114bf565b610907565b3480156104b257600080fd5b506102286104c13660046114bf565b6109a0565b61024b6104d4366004611522565b6109ad565b3480156104e557600080fd5b5061024b6104f4366004611410565b6109dc565b61024b6105073660046113d6565b610c18565b34801561051857600080fd5b5061025e60075481565b61024b6105303660046114eb565b610c64565b34801561054157600080fd5b5061025e6105503660046113d6565b610ca1565b34801561056157600080fd5b5061025e610570366004611410565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a757600080fd5b5061024b6105b63660046113d6565b610cac565b6060600380546105ca9061167d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f69061167d565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065a338484610d47565b50600192915050565b6005546001600160a01b031633146106965760405162461bcd60e51b815260040161068d906115a9565b60405180910390fd5b81156106a25760075550565b426007555b5050565b60006106b8848484610e6c565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561073d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068d565b61074a8533858403610d47565b506001949350505050565b60095460ff166107775760405162461bcd60e51b815260040161068d906115de565b6107a3336107843361103b565b336000908152600a602052604090205461079e919061160d565b61114a565b336000908152600a60209081526040808320839055600b9091529020429055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161065a9185906107fb90869061160d565b610d47565b6005546001600160a01b0316331461082a5760405162461bcd60e51b815260040161068d906115a9565b6108346000611229565b565b60006108418261103b565b6001600160a01b0383166000908152600a6020526040902054610864919061160d565b92915050565b6060600480546105ca9061167d565b336000908152600c602052604090205460ff166108a85760405162461bcd60e51b815260040161068d906115de565b6106a7828261127b565b6005546001600160a01b031633146108dc5760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161068d565b6109963385858403610d47565b5060019392505050565b600061065a338484610e6c565b6005546001600160a01b031633146109d75760405162461bcd60e51b815260040161068d906115a9565b600855565b336000908152600c602052604090205460ff16610a0b5760405162461bcd60e51b815260040161068d906115de565b6001600160a01b03821615801590610aba5750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6c57600080fd5b505afa158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa491906113f3565b6001600160a01b0316826001600160a01b031614155b15610b1157610ac88261103b565b6001600160a01b0383166000908152600a602052604081208054909190610af090849061160d565b90915550506001600160a01b0382166000908152600b602052604090204290555b6001600160a01b03811615801590610bc05750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906113f3565b6001600160a01b0316816001600160a01b031614155b156106a757610bce8161103b565b6001600160a01b0382166000908152600a602052604081208054909190610bf690849061160d565b90915550506001600160a01b03166000908152600b6020526040902042905550565b6005546001600160a01b03163314610c425760405162461bcd60e51b815260040161068d906115a9565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161068d906115a9565b6009805460ff1916911515919091179055565b60006108648261103b565b6005546001600160a01b03163314610cd65760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b038116610d3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068d565b610d4481611229565b50565b6001600160a01b038316610da95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610e0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ed05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610f325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b6001600160a01b03831660009081526020819052604090205481811015610faa5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161068d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610fe190849061160d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161102d91815260200190565b60405180910390a350505050565b6008546006546040516370a0823160e01b81526001600160a01b038481166004830152600093849390929116906370a082319060240160206040518083038186803b15801561108957600080fd5b505afa15801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c1919061153b565b6110cb9190611647565b6007546001600160a01b0385166000908152600b602052604090205491925011611132576001600160a01b0383166000908152600b602052604090205462015180906111179042611666565b6111219083611647565b61112b9190611625565b9392505050565b62015180600754426111179190611666565b50919050565b6001600160a01b0382166111a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068d565b80600260008282546111b2919061160d565b90915550506001600160a01b038216600090815260208190526040812080548392906111df90849061160d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166112db5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161068d565b6001600160a01b0382166000908152602081905260409020548181101561134f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161068d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061137e908490611666565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e5f565b803580151581146113d157600080fd5b919050565b6000602082840312156113e857600080fd5b813561112b816116c8565b60006020828403121561140557600080fd5b815161112b816116c8565b6000806040838503121561142357600080fd5b823561142e816116c8565b9150602083013561143e816116c8565b809150509250929050565b60008060006060848603121561145e57600080fd5b8335611469816116c8565b92506020840135611479816116c8565b929592945050506040919091013590565b6000806040838503121561149d57600080fd5b82356114a8816116c8565b91506114b6602084016113c1565b90509250929050565b600080604083850312156114d257600080fd5b82356114dd816116c8565b946020939093013593505050565b6000602082840312156114fd57600080fd5b61112b826113c1565b6000806040838503121561151957600080fd5b6114dd836113c1565b60006020828403121561153457600080fd5b5035919050565b60006020828403121561154d57600080fd5b5051919050565b600060208083528351808285015260005b8181101561158157858101830151858201604001528201611565565b81811115611593576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260159082015274596f7520616e67657265642074686520676f64732160581b604082015260600190565b60008219821115611620576116206116b2565b500190565b60008261164257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611661576116616116b2565b500290565b600082821015611678576116786116b2565b500390565b600181811c9082168061169157607f821691505b6020821081141561114457634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d4457600080fdfea26469706673582212203dfe29b4a7d169e1e0b461507152098fc8cdc8c1352ec189117495728bf9d53564736f6c63430008070033

Deployed Bytecode Sourcemap

8019:5571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2888:169;;;;;;;;;;-1:-1:-1;2888:169:0;;;;;:::i;:::-;;:::i;:::-;;;3366:14:1;;3359:22;3341:41;;3329:2;3314:18;2888:169:0;3201:187:1;10027:221:0;;;;;;:::i;:::-;;:::i;:::-;;2295:108;;;;;;;;;;-1:-1:-1;2383:12:0;;2295:108;;;9498:25:1;;;9486:2;9471:18;2295:108:0;9352:177:1;3065:492:0;;;;;;;;;;-1:-1:-1;3065:492:0;;;;;:::i;:::-;;:::i;8645:57::-;;;;;;;;;;-1:-1:-1;8645:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;2194:93;;;;;;;;;;-1:-1:-1;2194:93:0;;2277:2;9676:36:1;;9664:2;9649:18;2194:93:0;9534:184:1;12638:265:0;;;:::i;3565:215::-;;;;;;;;;;-1:-1:-1;3565:215:0;;;;;:::i;:::-;;:::i;8539:48::-;;;;;;;;;;-1:-1:-1;8539:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;8059:41;;;;;;;;;;-1:-1:-1;8059:41:0;;;;-1:-1:-1;;;;;8059:41:0;;;;;;-1:-1:-1;;;;;3157:32:1;;;3139:51;;3127:2;3112:18;8059:41:0;2993:203:1;2411:127:0;;;;;;;;;;-1:-1:-1;2411:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2512:18:0;2485:7;2512:18;;;;;;;;;;;;2411:127;7062:94;;;;;;;;;;;;;:::i;8421:42::-;;;;;;;;;;-1:-1:-1;8421:42:0;;;;;;;;8812:50;;;;;;;;;;-1:-1:-1;8812:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12079:155;;;;;;;;;;-1:-1:-1;12079:155:0;;;;;:::i;:::-;;:::i;6839:87::-;;;;;;;;;;-1:-1:-1;6912:6:0;;-1:-1:-1;;;;;6912:6:0;6839:87;;2082:104;;;;;;;;;;;;;:::i;12360:127::-;;;;;;:::i;:::-;;:::i;10947:155::-;;;;;;:::i;:::-;;:::i;8248:45::-;;;;;;;;;;;;;;;;3788:413;;;;;;;;;;-1:-1:-1;3788:413:0;;;;;:::i;:::-;;:::i;2546:175::-;;;;;;;;;;-1:-1:-1;2546:175:0;;;;;:::i;:::-;;:::i;10383:120::-;;;;;;:::i;:::-;;:::i;13077:510::-;;;;;;;;;;-1:-1:-1;13077:510:0;;;;;:::i;:::-;;:::i;10632:158::-;;;;;;:::i;:::-;;:::i;8109:38::-;;;;;;;;;;;;;;;;9783:116;;;;;;:::i;:::-;;:::i;11819:131::-;;;;;;;;;;-1:-1:-1;11819:131:0;;;;;:::i;:::-;;:::i;2729:151::-;;;;;;;;;;-1:-1:-1;2729:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2845:18:0;;;2818:7;2845:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2729:151;7164:192;;;;;;;;;;-1:-1:-1;7164:192:0;;;;;:::i;:::-;;:::i;1974:100::-;2028:13;2061:5;2054:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:100;:::o;2888:169::-;2971:4;2988:39;1434:10;3011:7;3020:6;2988:8;:39::i;:::-;-1:-1:-1;3045:4:0;2888:169;;;;:::o;10027:221::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;;;;;;;;;10121:6:::1;10117:124;;;10144:13;:21:::0;-1:-1:-1;10027:221:0:o;10117:124::-:1;10214:15;10198:13;:31:::0;10117:124:::1;10027:221:::0;;:::o;3065:492::-;3205:4;3222:36;3232:6;3240:9;3251:6;3222:9;:36::i;:::-;-1:-1:-1;;;;;3298:19:0;;3271:24;3298:19;;;:11;:19;;;;;;;;1434:10;3298:33;;;;;;;;3350:26;;;;3342:79;;;;-1:-1:-1;;;3342:79:0;;6455:2:1;3342:79:0;;;6437:21:1;6494:2;6474:18;;;6467:30;6533:34;6513:18;;;6506:62;-1:-1:-1;;;6584:18:1;;;6577:38;6632:19;;3342:79:0;6253:404:1;3342:79:0;3457:57;3466:6;1434:10;3507:6;3488:16;:25;3457:8;:57::i;:::-;-1:-1:-1;3545:4:0;;3065:492;-1:-1:-1;;;;3065:492:0:o;12638:265::-;9543:19;;;;9535:53;;;;-1:-1:-1;;;9535:53:0;;;;;;;:::i;:::-;12716:74:::1;12722:10;12762:27;12778:10;12762:15;:27::i;:::-;12748:10;12734:25;::::0;;;:13:::1;:25;::::0;;;;;:55:::1;::::0;;::::1;:::i;:::-;12716:5;:74::i;:::-;12817:10;12831:1;12803:25:::0;;;:13:::1;:25;::::0;;;;;;;:29;;;12843:22:::1;:34:::0;;;;;12880:15:::1;12843:52:::0;;12638:265::o;3565:215::-;1434:10;3653:4;3702:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3702:34:0;;;;;;;;;;3653:4;;3670:80;;3693:7;;3702:47;;3739:10;;3702:47;:::i;:::-;3670:8;:80::i;7062:94::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;7127:21:::1;7145:1;7127:9;:21::i;:::-;7062:94::o:0;12079:155::-;12144:7;12199:27;12215:10;12199:15;:27::i;:::-;-1:-1:-1;;;;;12171:25:0;;;;;;:13;:25;;;;;;:55;;;;:::i;:::-;12164:62;12079:155;-1:-1:-1;;12079:155:0:o;2082:104::-;2138:13;2171:7;2164:14;;;;;:::i;12360:127::-;9285:10;9269:27;;;;:15;:27;;;;;;;;9261:61;;;;-1:-1:-1;;;9261:61:0;;;;;;;:::i;:::-;12456:23:::1;12462:10;12474:4;12456:5;:23::i;10947:155::-:0;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11051:32:0;;;::::1;;::::0;;;:15:::1;:32;::::0;;;;:43;;-1:-1:-1;;11051:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10947:155::o;3788:413::-;1434:10;3881:4;3925:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3925:34:0;;;;;;;;;;3978:35;;;;3970:85;;;;-1:-1:-1;;;3970:85:0;;8788:2:1;3970:85:0;;;8770:21:1;8827:2;8807:18;;;8800:30;8866:34;8846:18;;;8839:62;-1:-1:-1;;;8917:18:1;;;8910:35;8962:19;;3970:85:0;8586:401:1;3970:85:0;4091:67;1434:10;4114:7;4142:15;4123:16;:34;4091:8;:67::i;:::-;-1:-1:-1;4189:4:0;;3788:413;-1:-1:-1;;;3788:413:0:o;2546:175::-;2632:4;2649:42;1434:10;2673:9;2684:6;2649:9;:42::i;10383:120::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;10467:11:::1;:28:::0;10383:120::o;13077:510::-;9285:10;9269:27;;;;:15;:27;;;;;;;;9261:61;;;;-1:-1:-1;;;9261:61:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13168:18:0;::::1;::::0;;::::1;::::0;:60:::1;;;13198:15;;;;;;;;;-1:-1:-1::0;;;;;13198:15:0::1;-1:-1:-1::0;;;;;13198:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13190:38:0::1;:4;-1:-1:-1::0;;;;;13190:38:0::1;;;13168:60;13164:207;;;13277:21;13293:4;13277:15;:21::i;:::-;-1:-1:-1::0;;;;;13245:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;:53;;:19;;;:53:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13313:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;13344:15:::1;13313:46:::0;;13164:207:::1;-1:-1:-1::0;;;;;13387:16:0;::::1;::::0;;::::1;::::0;:56:::1;;;13413:15;;;;;;;;;-1:-1:-1::0;;;;;13413:15:0::1;-1:-1:-1::0;;;;;13413:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13407:36:0::1;:2;-1:-1:-1::0;;;;;13407:36:0::1;;;13387:56;13383:197;;;13490:19;13506:2;13490:15;:19::i;:::-;-1:-1:-1::0;;;;;13460:17:0;::::1;;::::0;;;:13:::1;:17;::::0;;;;:49;;:17;;;:49:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13524:26:0::1;;::::0;;;:22:::1;:26;::::0;;;;13553:15:::1;13524:44:::0;;-1:-1:-1;13077:510:0:o;10632:158::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;10729:15:::1;:53:::0;;-1:-1:-1;;;;;;10729:53:0::1;-1:-1:-1::0;;;;;10729:53:0;;;::::1;::::0;;;::::1;::::0;;10632:158::o;9783:116::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;9861:19:::1;:30:::0;;-1:-1:-1;;9861:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9783:116::o;11819:131::-;11888:7;11915:27;11931:10;11915:15;:27::i;7164:192::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7253:22:0;::::1;7245:73;;;::::0;-1:-1:-1;;;7245:73:0;;5238:2:1;7245:73:0::1;::::0;::::1;5220:21:1::0;5277:2;5257:18;;;5250:30;5316:34;5296:18;;;5289:62;-1:-1:-1;;;5367:18:1;;;5360:36;5413:19;;7245:73:0::1;5036:402:1::0;7245:73:0::1;7329:19;7339:8;7329:9;:19::i;:::-;7164:192:::0;:::o;5956:380::-;-1:-1:-1;;;;;6092:19:0;;6084:68;;;;-1:-1:-1;;;6084:68:0;;8383:2:1;6084:68:0;;;8365:21:1;8422:2;8402:18;;;8395:30;8461:34;8441:18;;;8434:62;-1:-1:-1;;;8512:18:1;;;8505:34;8556:19;;6084:68:0;8181:400:1;6084:68:0;-1:-1:-1;;;;;6171:21:0;;6163:68;;;;-1:-1:-1;;;6163:68:0;;5645:2:1;6163:68:0;;;5627:21:1;5684:2;5664:18;;;5657:30;5723:34;5703:18;;;5696:62;-1:-1:-1;;;5774:18:1;;;5767:32;5816:19;;6163:68:0;5443:398:1;6163:68:0;-1:-1:-1;;;;;6244:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6296:32;;9498:25:1;;;6296:32:0;;9471:18:1;6296:32:0;;;;;;;;5956:380;;;:::o;4209:733::-;-1:-1:-1;;;;;4349:20:0;;4341:70;;;;-1:-1:-1;;;4341:70:0;;7977:2:1;4341:70:0;;;7959:21:1;8016:2;7996:18;;;7989:30;8055:34;8035:18;;;8028:62;-1:-1:-1;;;8106:18:1;;;8099:35;8151:19;;4341:70:0;7775:401:1;4341:70:0;-1:-1:-1;;;;;4430:23:0;;4422:71;;;;-1:-1:-1;;;4422:71:0;;4431:2:1;4422:71:0;;;4413:21:1;4470:2;4450:18;;;4443:30;4509:34;4489:18;;;4482:62;-1:-1:-1;;;4560:18:1;;;4553:33;4603:19;;4422:71:0;4229:399:1;4422:71:0;-1:-1:-1;;;;;4590:17:0;;4566:21;4590:17;;;;;;;;;;;4626:23;;;;4618:74;;;;-1:-1:-1;;;4618:74:0;;6048:2:1;4618:74:0;;;6030:21:1;6087:2;6067:18;;;6060:30;6126:34;6106:18;;;6099:62;-1:-1:-1;;;6177:18:1;;;6170:36;6223:19;;4618:74:0;5846:402:1;4618:74:0;-1:-1:-1;;;;;4728:17:0;;;:9;:17;;;;;;;;;;;4748:22;;;4728:42;;4792:20;;;;;;;;:30;;4764:6;;4728:9;4792:30;;4764:6;;4792:30;:::i;:::-;;;;;;;;4857:9;-1:-1:-1;;;;;4840:35:0;4849:6;-1:-1:-1;;;;;4840:35:0;;4868:6;4840:35;;;;9498:25:1;;9486:2;9471:18;;9352:177;4840:35:0;;;;;;;;4330:612;4209:733;;;:::o;11258:443::-;11406:11;;11366:15;;:37;;-1:-1:-1;;;11366:37:0;;-1:-1:-1;;;;;3157:32:1;;;11366:37:0;;;3139:51:1;11325:7:0;;;;11406:11;;11366:15;;;:25;;3112:18:1;;11366:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;11472:13;;-1:-1:-1;;;;;11434:34:0;;;;;;:22;:34;;;;;;11345:72;;-1:-1:-1;;11430:264:0;;-1:-1:-1;;;;;11542:34:0;;;;;;:22;:34;;;;;;11581:5;;11524:52;;:15;:52;:::i;:::-;11509:69;;:10;:69;:::i;:::-;:77;;;;:::i;:::-;11502:84;11258:443;-1:-1:-1;;;11258:443:0:o;11430:264::-;11677:5;11659:13;;11641:15;:31;;;;:::i;11430:264::-;11334:367;11258:443;;;:::o;4950:399::-;-1:-1:-1;;;;;5034:21:0;;5026:65;;;;-1:-1:-1;;;5026:65:0;;9194:2:1;5026:65:0;;;9176:21:1;9233:2;9213:18;;;9206:30;9272:33;9252:18;;;9245:61;9323:18;;5026:65:0;8992:355:1;5026:65:0;5182:6;5166:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5199:18:0;;:9;:18;;;;;;;;;;:28;;5221:6;;5199:9;:28;;5221:6;;5199:28;:::i;:::-;;;;-1:-1:-1;;5243:37:0;;9498:25:1;;;-1:-1:-1;;;;;5243:37:0;;;5260:1;;5243:37;;9486:2:1;9471:18;5243:37:0;;;;;;;10027:221;;:::o;7364:173::-;7439:6;;;-1:-1:-1;;;;;7456:17:0;;;-1:-1:-1;;;;;;7456:17:0;;;;;;;7489:40;;7439:6;;;7456:17;7439:6;;7489:40;;7420:16;;7489:40;7409:128;7364:173;:::o;5357:591::-;-1:-1:-1;;;;;5441:21:0;;5433:67;;;;-1:-1:-1;;;5433:67:0;;7225:2:1;5433:67:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:34;7283:18;;;7276:62;-1:-1:-1;;;7354:18:1;;;7347:31;7395:19;;5433:67:0;7023:397:1;5433:67:0;-1:-1:-1;;;;;5600:18:0;;5575:22;5600:18;;;;;;;;;;;5637:24;;;;5629:71;;;;-1:-1:-1;;;5629:71:0;;4835:2:1;5629:71:0;;;4817:21:1;4874:2;4854:18;;;4847:30;4913:34;4893:18;;;4886:62;-1:-1:-1;;;4964:18:1;;;4957:32;5006:19;;5629:71:0;4633:398:1;5629:71:0;-1:-1:-1;;;;;5736:18:0;;:9;:18;;;;;;;;;;5757:23;;;5736:44;;5802:12;:22;;5774:6;;5736:9;5802:22;;5774:6;;5802:22;:::i;:::-;;;;-1:-1:-1;;5842:37:0;;9498:25:1;;;5868:1:0;;-1:-1:-1;;;;;5842:37:0;;;;;9486:2:1;9471:18;5842:37:0;9352:177:1;14:160;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:248::-;2431:6;2439;2492:2;2480:9;2471:7;2467:23;2463:32;2460:52;;;2508:1;2505;2498:12;2460:52;2531:26;2547:9;2531:26;:::i;2619:180::-;2678:6;2731:2;2719:9;2710:7;2706:23;2702:32;2699:52;;;2747:1;2744;2737:12;2699:52;-1:-1:-1;2770:23:1;;2619:180;-1:-1:-1;2619:180:1:o;2804:184::-;2874:6;2927:2;2915:9;2906:7;2902:23;2898:32;2895:52;;;2943:1;2940;2933:12;2895:52;-1:-1:-1;2966:16:1;;2804:184;-1:-1:-1;2804:184:1:o;3627:597::-;3739:4;3768:2;3797;3786:9;3779:21;3829:6;3823:13;3872:6;3867:2;3856:9;3852:18;3845:34;3897:1;3907:140;3921:6;3918:1;3915:13;3907:140;;;4016:14;;;4012:23;;4006:30;3982:17;;;4001:2;3978:26;3971:66;3936:10;;3907:140;;;4065:6;4062:1;4059:13;4056:91;;;4135:1;4130:2;4121:6;4110:9;4106:22;4102:31;4095:42;4056:91;-1:-1:-1;4208:2:1;4187:15;-1:-1:-1;;4183:29:1;4168:45;;;;4215:2;4164:54;;3627:597;-1:-1:-1;;;3627:597:1:o;6662:356::-;6864:2;6846:21;;;6883:18;;;6876:30;6942:34;6937:2;6922:18;;6915:62;7009:2;6994:18;;6662:356::o;7425:345::-;7627:2;7609:21;;;7666:2;7646:18;;;7639:30;-1:-1:-1;;;7700:2:1;7685:18;;7678:51;7761:2;7746:18;;7425:345::o;9723:128::-;9763:3;9794:1;9790:6;9787:1;9784:13;9781:39;;;9800:18;;:::i;:::-;-1:-1:-1;9836:9:1;;9723:128::o;9856:217::-;9896:1;9922;9912:132;;9966:10;9961:3;9957:20;9954:1;9947:31;10001:4;9998:1;9991:15;10029:4;10026:1;10019:15;9912:132;-1:-1:-1;10058:9:1;;9856:217::o;10078:168::-;10118:7;10184:1;10180;10176:6;10172:14;10169:1;10166:21;10161:1;10154:9;10147:17;10143:45;10140:71;;;10191:18;;:::i;:::-;-1:-1:-1;10231:9:1;;10078:168::o;10251:125::-;10291:4;10319:1;10316;10313:8;10310:34;;;10324:18;;:::i;:::-;-1:-1:-1;10361:9:1;;10251:125::o;10381:380::-;10460:1;10456:12;;;;10503;;;10524:61;;10578:4;10570:6;10566:17;10556:27;;10524:61;10631:2;10623:6;10620:14;10600:18;10597:38;10594:161;;;10677:10;10672:3;10668:20;10665:1;10658:31;10712:4;10709:1;10702:15;10740:4;10737:1;10730:15;10766:127;10827:10;10822:3;10818:20;10815:1;10808:31;10858:4;10855:1;10848:15;10882:4;10879:1;10872:15;10898:131;-1:-1:-1;;;;;10973:31:1;;10963:42;;10953:70;;11019:1;11016;11009:12

Swarm Source

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