ETH Price: $3,078.50 (+1.12%)
Gas: 20 Gwei

Token

TecraCoin (TCR)
 

Overview

Max Total Supply

414,895.47517714 TCR

Holders

236 (0.00%)

Market

Price

$0.04 @ 0.000013 ETH

Onchain Market Cap

$16,687.34

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 8 Decimals)

Balance
0 TCR

Value
$0.00
0x6653d9bcbc28fc5a2f5fb5650af8f2b2e1695a15
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Tecra ecosystem consists of three projects - TecraCoin's proprietary currency, the crowdfunding platform for Tecra Space's R&D projects and the Tecra DEX decentralised exchange that is being created.

Market

Volume (24H):$23,782.00
Market Capitalization:$0.00
Circulating Supply:0.00 TCR
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TcrToken

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.2;

// interface need to claim rouge tokens from contract and handle upgraded functions
abstract contract IERC20 {
    function balanceOf(address owner) public view virtual returns (uint256);

    function transfer(address to, uint256 amount) public virtual;

    function allowance(address owner, address spender)
        public
        view
        virtual
        returns (uint256);

    function totalSupply() public view virtual returns (uint256);
}

// interface to potential future upgraded contract,
// only essential write functions that need check that this contract is caller
abstract contract IUpgradedToken {
    function transferByLegacy(
        address sender,
        address to,
        uint256 amount
    ) public virtual returns (bool);

    function transferFromByLegacy(
        address sender,
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool);

    function approveByLegacy(
        address sender,
        address spender,
        uint256 amount
    ) public virtual;
}

//
// The ultimate ERC20 token contract for TecraCoin project
//
contract TcrToken {
    //
    // ERC20 basic information
    //
    uint8 public constant decimals = 8;
    string public constant name = "TecraCoin";
    string public constant symbol = "TCR";
    uint256 private _totalSupply;
    uint256 public constant maxSupply = 21000000000000000;

    string public constant version = "1";
    uint256 public immutable getChainId;

    //
    // other flags, data and constants
    //
    address public owner;
    address public newOwner;

    bool public paused;

    bool public deprecated;
    address public upgradedAddress;

    bytes32 public immutable DOMAIN_SEPARATOR;

    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH =
        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;

    string private constant ERROR_DAS = "Different array sizes";
    string private constant ERROR_BTL = "Balance too low";
    string private constant ERROR_ATL = "Allowance too low";
    string private constant ERROR_OO = "Only Owner";

    //
    // events
    //
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Paused();
    event Unpaused();

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    event AddedToBlacklist(address indexed account);
    event RemovedFromBlacklist(address indexed account);

    //
    // data stores
    //
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _balances;

    mapping(address => bool) public isBlacklisted;

    mapping(address => bool) public isBlacklistAdmin;
    mapping(address => bool) public isMinter;
    mapping(address => bool) public isPauser;

    mapping(address => uint256) public nonces;

    //
    // contract constructor
    //
    constructor() {
        owner = msg.sender;
        getChainId = block.chainid;
        // EIP712 Domain
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256(
                    "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                ),
                keccak256(bytes(name)),
                keccak256(bytes(version)),
                block.chainid,
                address(this)
            )
        );
    }

    //
    // "approve"
    //
    function approve(address spender, uint256 amount) external {
        if (deprecated) {
            return
                IUpgradedToken(upgradedAddress).approveByLegacy(
                    msg.sender,
                    spender,
                    amount
                );
        }
        _approve(msg.sender, spender, amount);
    }

    //
    // "burnable"
    //
    function burn(uint256 amount) external {
        require(_balances[msg.sender] >= amount, ERROR_BTL);
        _burn(msg.sender, amount);
    }

    function burnFrom(address from, uint256 amount) external {
        require(_allowances[msg.sender][from] >= amount, ERROR_ATL);
        require(_balances[from] >= amount, ERROR_BTL);
        _approve(msg.sender, from, _allowances[msg.sender][from] - amount);
        _burn(from, amount);
    }

    //
    // "transfer"
    //
    function transfer(address to, uint256 amount) external returns (bool) {
        if (deprecated) {
            return
                IUpgradedToken(upgradedAddress).transferByLegacy(
                    msg.sender,
                    to,
                    amount
                );
        }
        require(_balances[msg.sender] >= amount, ERROR_BTL);
        _transfer(msg.sender, to, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool) {
        if (deprecated) {
            return
                IUpgradedToken(upgradedAddress).transferFromByLegacy(
                    msg.sender,
                    from,
                    to,
                    amount
                );
        }
        _allowanceTransfer(msg.sender, from, to, amount);
        return true;
    }

    //
    // non-ERC20 functionality
    //
    // Rouge tokens and ETH withdrawal
    function acquire(address token) external onlyOwner {
        if (token == address(0)) {
            payable(owner).transfer(address(this).balance);
        } else {
            uint256 amount = IERC20(token).balanceOf(address(this));
            require(amount > 0, ERROR_BTL);
            IERC20(token).transfer(owner, amount);
        }
    }

    //
    // "blacklist"
    //
    function addBlacklister(address user) external onlyOwner {
        isBlacklistAdmin[user] = true;
    }

    function removeBlacklister(address user) external onlyOwner {
        isBlacklistAdmin[user] = false;
    }

    modifier onlyBlacklister {
        require(isBlacklistAdmin[msg.sender], "Not a Blacklister");
        _;
    }

    modifier notOnBlacklist(address user) {
        require(!isBlacklisted[user], "Address on blacklist");
        _;
    }

    function addBlacklist(address user) external onlyBlacklister {
        isBlacklisted[user] = true;
        emit AddedToBlacklist(user);
    }

    function removeBlacklist(address user) external onlyBlacklister {
        isBlacklisted[user] = false;
        emit RemovedFromBlacklist(user);
    }

    function burnBlackFunds(address user) external onlyOwner {
        require(isBlacklisted[user], "Address not on blacklist");
        _burn(user, _balances[user]);
    }

    //
    // "bulk transfer"
    //
    // transfer to list of address-amount
    function bulkTransfer(address[] calldata to, uint256[] calldata amount)
        external
        returns (bool)
    {
        require(to.length == amount.length, ERROR_DAS);
        for (uint256 i = 0; i < to.length; i++) {
            require(_balances[msg.sender] >= amount[i], ERROR_BTL);
            _transfer(msg.sender, to[i], amount[i]);
        }
        return true;
    }

    // transferFrom to list of address-amount
    function bulkTransferFrom(
        address from,
        address[] calldata to,
        uint256[] calldata amount
    ) external returns (bool) {
        require(to.length == amount.length, ERROR_DAS);
        for (uint256 i = 0; i < to.length; i++) {
            _allowanceTransfer(msg.sender, from, to[i], amount[i]);
        }
        return true;
    }

    // send same amount to multiple addresses
    function bulkTransfer(address[] calldata to, uint256 amount)
        external
        returns (bool)
    {
        require(_balances[msg.sender] >= amount * to.length, ERROR_BTL);
        for (uint256 i = 0; i < to.length; i++) {
            _transfer(msg.sender, to[i], amount);
        }
        return true;
    }

    // send same amount to multiple addresses by allowance
    function bulkTransferFrom(
        address from,
        address[] calldata to,
        uint256 amount
    ) external returns (bool) {
        require(_balances[from] >= amount * to.length, ERROR_BTL);
        for (uint256 i = 0; i < to.length; i++) {
            _allowanceTransfer(msg.sender, from, to[i], amount);
        }
        return true;
    }

    //
    // "mint"
    //
    modifier onlyMinter {
        require(isMinter[msg.sender], "Not a Minter");
        _;
    }

    function addMinter(address user) external onlyOwner {
        isMinter[user] = true;
    }

    function removeMinter(address user) external onlyOwner {
        isMinter[user] = false;
    }

    function mint(address to, uint256 amount) external onlyMinter {
        _balances[to] += amount;
        _totalSupply += amount;
        require(_totalSupply < maxSupply, "You can not mine that much");
        emit Transfer(address(0), to, amount);
    }

    //
    // "ownable"
    //
    modifier onlyOwner {
        require(msg.sender == owner, ERROR_OO);
        _;
    }

    function giveOwnership(address _newOwner) external onlyOwner {
        newOwner = _newOwner;
    }

    function acceptOwnership() external {
        require(msg.sender == newOwner, ERROR_OO);
        newOwner = address(0);
        owner = msg.sender;
    }

    //
    // "pausable"
    //
    function addPauser(address user) external onlyOwner {
        isPauser[user] = true;
    }

    function removePauser(address user) external onlyOwner {
        isPauser[user] = false;
    }

    modifier onlyPauser {
        require(isPauser[msg.sender], "Not a Pauser");
        _;
    }

    modifier notPaused {
        require(!paused, "Contract is paused");
        _;
    }

    function pause() external onlyPauser notPaused {
        paused = true;
        emit Paused();
    }

    function unpause() external onlyPauser {
        require(paused, "Contract not paused");
        paused = false;
        emit Unpaused();
    }

    //
    // "permit"
    // Uniswap integration EIP-2612
    //
    function permit(
        address user,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        require(deadline >= block.timestamp, "permit: EXPIRED");
        bytes32 digest =
            keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR,
                    keccak256(
                        abi.encode(
                            PERMIT_TYPEHASH,
                            user,
                            spender,
                            value,
                            nonces[user]++,
                            deadline
                        )
                    )
                )
            );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(
            recoveredAddress != address(0) && recoveredAddress == user,
            "permit: INVALID_SIGNATURE"
        );
        _approve(user, spender, value);
    }

    //
    // upgrade contract
    //
    function upgrade(address token) external onlyOwner {
        deprecated = true;
        upgradedAddress = token;
    }

    //
    // ERC20 view functions
    //
    function balanceOf(address account) external view returns (uint256) {
        if (deprecated) {
            return IERC20(upgradedAddress).balanceOf(account);
        }
        return _balances[account];
    }

    function allowance(address account, address spender)
        external
        view
        returns (uint256)
    {
        if (deprecated) {
            return IERC20(upgradedAddress).allowance(account, spender);
        }
        return _allowances[account][spender];
    }

    function totalSupply() external view returns (uint256) {
        if (deprecated) {
            return IERC20(upgradedAddress).totalSupply();
        }
        return _totalSupply;
    }

    //
    // internal functions
    //
    function _approve(
        address account,
        address spender,
        uint256 amount
    ) private notOnBlacklist(account) notOnBlacklist(spender) notPaused {
        _allowances[account][spender] = amount;
        emit Approval(account, spender, amount);
    }

    function _allowanceTransfer(
        address spender,
        address from,
        address to,
        uint256 amount
    ) private {
        require(_allowances[from][spender] >= amount, ERROR_ATL);
        require(_balances[from] >= amount, ERROR_BTL);

        // exception for Uniswap "approve forever"
        if (_allowances[from][spender] != type(uint256).max) {
            _approve(from, spender, _allowances[from][spender] - amount);
        }

        _transfer(from, to, amount);
    }

    function _burn(address from, uint256 amount) private notPaused {
        _balances[from] -= amount;
        _totalSupply -= amount;
        emit Transfer(from, address(0), amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private notOnBlacklist(from) notOnBlacklist(to) notPaused {
        require(to != address(0), "Use burn instead");
        require(from != address(0), "What a Terrible Failure");
        _balances[from] -= amount;
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }
}

// rav3n_pl was here

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AddedToBlacklist","type":"event"},{"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":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"RemovedFromBlacklist","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"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"acquire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addBlacklister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":[],"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":"to","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"bulkTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bulkTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bulkTransferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"bulkTransferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"burnBlackFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deprecated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"giveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeBlacklister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removePauser","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b50600180546001600160a01b0319163317815546608081815260408051808201825260098152682a32b1b930a1b7b4b760b91b60209182015281518083018352948552603160f81b9481019490945280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f948101949094527f462771d905e5db91670b50288da7ef8af73b5139c788d30cb43e6664bc2f5bf4908401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401528201523060a082015260c00160408051601f19818403018152919052805160209091012060a05260805160a0516127a86101276000396000818161042e01526118950152600061040701526127a86000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c806379ba5097116101675780639fcf1007116100ce578063d50f49d311610087578063d50f49d31461067a578063d5abeb011461068d578063dd62ed3e1461069b578063e3a0a148146106ae578063eb91e651146106c1578063fe575a87146106d457610295565b80639fcf1007146105f8578063a9059cbb1461060b578063aa271e1a1461061e578063ba7b52e014610641578063d4ee1d9014610654578063d505accf1461066757610295565b80638456cb59116101205780638456cb59146105825780638da5cb5b1461058a578063944f78311461059d57806395d89b41146105b0578063983b2d56146105d25780639cfe42da146105e557610295565b806379ba50971461050e57806379cc6790146105165780637bb06eea146105295780637ecebe001461053c578063800c03841461055c57806382dc1ec41461056f57610295565b8063313ce5671161020b57806346fbf68e116101c457806346fbf68e1461047e5780634ca64b3a146104a157806354fd4d50146104b45780635c975abb146104d45780636b2c0f55146104e857806370a08231146104fb57610295565b8063313ce567146103e85780633408e470146104025780633644e515146104295780633f4ba83a1461045057806340c10f191461045857806342966c681461046b57610295565b806316d2e6501161025d57806316d2e6501461033757806318160ddd1461035a57806323b872dd1461037057806326976e3f146103835780633092afd5146103ae57806330adf81f146103c157610295565b806306fdde031461029a5780630900f010146102d8578063095ea7b3146102ed5780630e136b1914610300578063153a1f3e14610324575b600080fd5b6102c2604051806040016040528060098152602001682a32b1b930a1b7b4b760b91b81525081565b6040516102cf9190612646565b60405180910390f35b6102eb6102e636600461234c565b6106f7565b005b6102eb6102fb36600461251a565b610784565b60025461031490600160a81b900460ff1681565b60405190151581526020016102cf565b610314610332366004612543565b610816565b61031461034536600461234c565b60076020526000908152604090205460ff1681565b61036261098a565b6040519081526020016102cf565b61031461037e366004612398565b610a34565b600354610396906001600160a01b031681565b6040516001600160a01b0390911681526020016102cf565b6102eb6103bc36600461234c565b610afb565b6103627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103f0600881565b60405160ff90911681526020016102cf565b6103627f000000000000000000000000000000000000000000000000000000000000000081565b6103627f000000000000000000000000000000000000000000000000000000000000000081565b6102eb610b6a565b6102eb61046636600461251a565b610c3f565b6102eb610479366004612616565b610d70565b61031461048c36600461234c565b60096020526000908152604090205460ff1681565b6103146104af3660046125ac565b610dd8565b6102c2604051806040016040528060018152602001603160f81b81525081565b60025461031490600160a01b900460ff1681565b6102eb6104f636600461234c565b610eba565b61036261050936600461234c565b610f29565b6102eb610fe2565b6102eb61052436600461251a565b611050565b6102eb61053736600461234c565b611173565b61036261054a36600461234c565b600a6020526000908152604090205481565b6102eb61056a36600461234c565b6111e5565b6102eb61057d36600461234c565b6112bf565b6102eb611331565b600154610396906001600160a01b031681565b6103146105ab3660046124c2565b6113e7565b6102c2604051806040016040528060038152602001622a21a960e91b81525081565b6102eb6105e036600461234c565b6114bf565b6102eb6105f336600461234c565b611531565b6102eb61060636600461234c565b6115d0565b61031461061936600461251a565b61163f565b61031461062c36600461234c565b60086020526000908152604090205460ff1681565b61031461064f366004612444565b611757565b600254610396906001600160a01b031681565b6102eb6106753660046123d3565b611837565b6102eb61068836600461234c565b611a63565b610362664a9b638448800081565b6103626106a9366004612366565b611c2f565b6102eb6106bc36600461234c565b611cf5565b6102eb6106cf36600461234c565b611d65565b6103146106e236600461234c565b60066020526000908152604090205460ff1681565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461074d5760405162461bcd60e51b81526004016107449190612646565b60405180910390fd5b506002805460ff60a81b1916600160a81b179055600380546001600160a01b039092166001600160a01b0319909216919091179055565b600254600160a81b900460ff16156108075760035460405163aee92d3360e01b81523360048201526001600160a01b038481166024830152604482018490529091169063aee92d3390606401600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610812565b610812338383611e01565b5050565b604080518082019091526015815274446966666572656e742061727261792073697a657360581b60208201526000908483146108655760405162461bcd60e51b81526004016107449190612646565b5060005b8481101561097e5783838281811061089157634e487b7160e01b600052603260045260246000fd5b9050602002013560056000336001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b815250906109065760405162461bcd60e51b81526004016107449190612646565b5061096c3387878481811061092b57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610940919061234c565b86868581811061096057634e487b7160e01b600052603260045260246000fd5b90506020020135611f05565b8061097681612741565b915050610869565b50600195945050505050565b600254600090600160a81b900460ff1615610a2c57600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ed57600080fd5b505afa158015610a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a25919061262e565b9050610a31565b506000545b90565b600254600090600160a81b900460ff1615610ae457600354604051638b477adb60e01b81523360048201526001600160a01b03868116602483015285811660448301526064820185905290911690638b477adb90608401602060405180830381600087803b158015610aa557600080fd5b505af1158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add91906125f6565b9050610af4565b610af0338585856120e5565b5060015b9392505050565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314610b485760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600860205260409020805460ff19169055565b3360009081526009602052604090205460ff16610bb85760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030902830bab9b2b960a11b6044820152606401610744565b600254600160a01b900460ff16610c075760405162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081b9bdd081c185d5cd959606a1b6044820152606401610744565b6002805460ff60a01b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b3360009081526008602052604090205460ff16610c8d5760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309026b4b73a32b960a11b6044820152606401610744565b6001600160a01b03821660009081526005602052604081208054839290610cb59084906126f3565b9250508190555080600080828254610ccd91906126f3565b9091555050600054664a9b638448800011610d2a5760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e206e6f74206d696e652074686174206d7563680000000000006044820152606401610744565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b33600090815260056020908152604091829020548251808401909352600f83526e42616c616e636520746f6f206c6f7760881b91830191909152821115610dca5760405162461bcd60e51b81526004016107449190612646565b50610dd5338261223f565b50565b6000610de4838361270b565b60056000336001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b81525090610e525760405162461bcd60e51b81526004016107449190612646565b5060005b83811015610eaf57610e9d33868684818110610e8257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610e97919061234c565b85611f05565b80610ea781612741565b915050610e56565b506001949350505050565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314610f075760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600960205260409020805460ff19169055565b600254600090600160a81b900460ff1615610fc2576003546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a082319060240160206040518083038186803b158015610f8357600080fd5b505afa158015610f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbb919061262e565b9050610fdd565b506001600160a01b0381166000908152600560205260409020545b919050565b60025460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461102f5760405162461bcd60e51b81526004016107449190612646565b50600280546001600160a01b03199081169091556001805490911633179055565b3360009081526004602090815260408083206001600160a01b03861684528252918290205482518084019093526011835270416c6c6f77616e636520746f6f206c6f7760781b918301919091528211156110bd5760405162461bcd60e51b81526004016107449190612646565b508060056000846001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b8152509061112d5760405162461bcd60e51b81526004016107449190612646565b503360008181526004602090815260408083206001600160a01b03871684529091529020546111699190849061116490859061272a565b611e01565b610812828261223f565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b031633146111c05760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600760205260409020805460ff19166001179055565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b031633146112325760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03811660009081526006602052604090205460ff1661129b5760405162461bcd60e51b815260206004820152601860248201527f41646472657373206e6f74206f6e20626c61636b6c69737400000000000000006044820152606401610744565b6001600160a01b038116600090815260056020526040902054610dd590829061223f565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461130c5760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600960205260409020805460ff19166001179055565b3360009081526009602052604090205460ff1661137f5760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030902830bab9b2b960a11b6044820152606401610744565b600254600160a01b900460ff16156113a95760405162461bcd60e51b8152600401610744906126c7565b6002805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b60006113f3838361270b565b60056000876001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b815250906114615760405162461bcd60e51b81526004016107449190612646565b5060005b8381101561097e576114ad338787878581811061149257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114a7919061234c565b866120e5565b806114b781612741565b915050611465565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461150c5760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600860205260409020805460ff19166001179055565b3360009081526007602052604090205460ff166115845760405162461bcd60e51b81526020600482015260116024820152702737ba103090213630b1b5b634b9ba32b960791b6044820152606401610744565b6001600160a01b038116600081815260066020526040808220805460ff19166001179055517ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed6279190a250565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461161d5760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600760205260409020805460ff19169055565b600254600090600160a81b900460ff16156116e75760035460405163370c4c0560e11b81523360048201526001600160a01b0385811660248301526044820185905290911690636e18980a90606401602060405180830381600087803b1580156116a857600080fd5b505af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e091906125f6565b9050611751565b33600090815260056020908152604091829020548251808401909352600f83526e42616c616e636520746f6f206c6f7760881b918301919091528311156117415760405162461bcd60e51b81526004016107449190612646565b5061174d338484611f05565b5060015b92915050565b604080518082019091526015815274446966666572656e742061727261792073697a657360581b60208201526000908483146117a65760405162461bcd60e51b81526004016107449190612646565b5060005b8481101561182a5761181833888888858181106117d757634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117ec919061234c565b87878681811061180c57634e487b7160e01b600052603260045260246000fd5b905060200201356120e5565b8061182281612741565b9150506117aa565b5060019695505050505050565b428410156118795760405162461bcd60e51b815260206004820152600f60248201526e1c195c9b5a5d0e8811561412549151608a1b6044820152606401610744565b6001600160a01b0387166000908152600a6020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91876118e783612741565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161196092919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156119cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611a015750886001600160a01b0316816001600160a01b0316145b611a4d5760405162461bcd60e51b815260206004820152601960248201527f7065726d69743a20494e56414c49445f5349474e4154555245000000000000006044820152606401610744565b611a58898989611e01565b505050505050505050565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314611ab05760405162461bcd60e51b81526004016107449190612646565b506001600160a01b038116611afe576001546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611af8573d6000803e3d6000fd5b50610dd5565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015611b4057600080fd5b505afa158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b78919061262e565b9050600081116040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b81525090611bc45760405162461bcd60e51b81526004016107449190612646565b5060015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b505050505050565b600254600090600160a81b900460ff1615611cc957600354604051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529091169063dd62ed3e9060440160206040518083038186803b158015611c9157600080fd5b505afa158015611ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e0919061262e565b506001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314611d425760405162461bcd60e51b81526004016107449190612646565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526007602052604090205460ff16611db85760405162461bcd60e51b81526020600482015260116024820152702737ba103090213630b1b5b634b9ba32b960791b6044820152606401610744565b6001600160a01b038116600081815260066020526040808220805460ff19169055517f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d49190a250565b6001600160a01b038316600090815260066020526040902054839060ff1615611e3c5760405162461bcd60e51b815260040161074490612699565b6001600160a01b038316600090815260066020526040902054839060ff1615611e775760405162461bcd60e51b815260040161074490612699565b600254600160a01b900460ff1615611ea15760405162461bcd60e51b8152600401610744906126c7565b6001600160a01b0385811660008181526004602090815260408083209489168084529482529182902087905590518681527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35050505050565b6001600160a01b038316600090815260066020526040902054839060ff1615611f405760405162461bcd60e51b815260040161074490612699565b6001600160a01b038316600090815260066020526040902054839060ff1615611f7b5760405162461bcd60e51b815260040161074490612699565b600254600160a01b900460ff1615611fa55760405162461bcd60e51b8152600401610744906126c7565b6001600160a01b038416611fee5760405162461bcd60e51b815260206004820152601060248201526f155cd948189d5c9b881a5b9cdd19585960821b6044820152606401610744565b6001600160a01b0385166120445760405162461bcd60e51b815260206004820152601760248201527f576861742061205465727269626c65204661696c7572650000000000000000006044820152606401610744565b6001600160a01b0385166000908152600560205260408120805485929061206c90849061272a565b90915550506001600160a01b038416600090815260056020526040812080548592906120999084906126f3565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ef691815260200190565b6001600160a01b0380841660009081526004602090815260408083209388168352928152908290205482518084019093526011835270416c6c6f77616e636520746f6f206c6f7760781b918301919091528211156121565760405162461bcd60e51b81526004016107449190612646565b508060056000856001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b815250906121c65760405162461bcd60e51b81526004016107449190612646565b506001600160a01b038084166000908152600460209081526040808320938816835292905220546000191461222e576001600160a01b0380841660009081526004602090815260408083209388168352929052205461222e908490869061116490859061272a565b612239838383611f05565b50505050565b600254600160a01b900460ff16156122695760405162461bcd60e51b8152600401610744906126c7565b6001600160a01b0382166000908152600560205260408120805483929061229190849061272a565b92505081905550806000808282546122a9919061272a565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d64565b80356001600160a01b0381168114610fdd57600080fd5b60008083601f840112612314578182fd5b50813567ffffffffffffffff81111561232b578182fd5b602083019150836020808302850101111561234557600080fd5b9250929050565b60006020828403121561235d578081fd5b610af4826122ec565b60008060408385031215612378578081fd5b612381836122ec565b915061238f602084016122ec565b90509250929050565b6000806000606084860312156123ac578081fd5b6123b5846122ec565b92506123c3602085016122ec565b9150604084013590509250925092565b600080600080600080600060e0888a0312156123ed578283fd5b6123f6886122ec565b9650612404602089016122ec565b95506040880135945060608801359350608088013560ff81168114612427578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060008060006060868803121561245b578081fd5b612464866122ec565b9450602086013567ffffffffffffffff80821115612480578283fd5b61248c89838a01612303565b909650945060408801359150808211156124a4578283fd5b506124b188828901612303565b969995985093965092949392505050565b600080600080606085870312156124d7578384fd5b6124e0856122ec565b9350602085013567ffffffffffffffff8111156124fb578384fd5b61250787828801612303565b9598909750949560400135949350505050565b6000806040838503121561252c578182fd5b612535836122ec565b946020939093013593505050565b60008060008060408587031215612558578384fd5b843567ffffffffffffffff8082111561256f578586fd5b61257b88838901612303565b90965094506020870135915080821115612593578384fd5b506125a087828801612303565b95989497509550505050565b6000806000604084860312156125c0578283fd5b833567ffffffffffffffff8111156125d6578384fd5b6125e286828701612303565b909790965060209590950135949350505050565b600060208284031215612607578081fd5b81518015158114610af4578182fd5b600060208284031215612627578081fd5b5035919050565b60006020828403121561263f578081fd5b5051919050565b6000602080835283518082850152825b8181101561267257858101830151858201604001528201612656565b818111156126835783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601490820152731059191c995cdcc81bdb88189b1858dadb1a5cdd60621b604082015260600190565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b600082198211156127065761270661275c565b500190565b60008160001904831182151516156127255761272561275c565b500290565b60008282101561273c5761273c61275c565b500390565b60006000198214156127555761275561275c565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220c43ae7a63fd8169f79a352397f807aba50009ac72867eabcdaeeeced082457e064736f6c63430008020033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102955760003560e01c806379ba5097116101675780639fcf1007116100ce578063d50f49d311610087578063d50f49d31461067a578063d5abeb011461068d578063dd62ed3e1461069b578063e3a0a148146106ae578063eb91e651146106c1578063fe575a87146106d457610295565b80639fcf1007146105f8578063a9059cbb1461060b578063aa271e1a1461061e578063ba7b52e014610641578063d4ee1d9014610654578063d505accf1461066757610295565b80638456cb59116101205780638456cb59146105825780638da5cb5b1461058a578063944f78311461059d57806395d89b41146105b0578063983b2d56146105d25780639cfe42da146105e557610295565b806379ba50971461050e57806379cc6790146105165780637bb06eea146105295780637ecebe001461053c578063800c03841461055c57806382dc1ec41461056f57610295565b8063313ce5671161020b57806346fbf68e116101c457806346fbf68e1461047e5780634ca64b3a146104a157806354fd4d50146104b45780635c975abb146104d45780636b2c0f55146104e857806370a08231146104fb57610295565b8063313ce567146103e85780633408e470146104025780633644e515146104295780633f4ba83a1461045057806340c10f191461045857806342966c681461046b57610295565b806316d2e6501161025d57806316d2e6501461033757806318160ddd1461035a57806323b872dd1461037057806326976e3f146103835780633092afd5146103ae57806330adf81f146103c157610295565b806306fdde031461029a5780630900f010146102d8578063095ea7b3146102ed5780630e136b1914610300578063153a1f3e14610324575b600080fd5b6102c2604051806040016040528060098152602001682a32b1b930a1b7b4b760b91b81525081565b6040516102cf9190612646565b60405180910390f35b6102eb6102e636600461234c565b6106f7565b005b6102eb6102fb36600461251a565b610784565b60025461031490600160a81b900460ff1681565b60405190151581526020016102cf565b610314610332366004612543565b610816565b61031461034536600461234c565b60076020526000908152604090205460ff1681565b61036261098a565b6040519081526020016102cf565b61031461037e366004612398565b610a34565b600354610396906001600160a01b031681565b6040516001600160a01b0390911681526020016102cf565b6102eb6103bc36600461234c565b610afb565b6103627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103f0600881565b60405160ff90911681526020016102cf565b6103627f000000000000000000000000000000000000000000000000000000000000000181565b6103627f4d803abeb2b7d24aa2a6864e7c7c11ce2d9a7f2a42f0f284c17c2c9fc5f6d62481565b6102eb610b6a565b6102eb61046636600461251a565b610c3f565b6102eb610479366004612616565b610d70565b61031461048c36600461234c565b60096020526000908152604090205460ff1681565b6103146104af3660046125ac565b610dd8565b6102c2604051806040016040528060018152602001603160f81b81525081565b60025461031490600160a01b900460ff1681565b6102eb6104f636600461234c565b610eba565b61036261050936600461234c565b610f29565b6102eb610fe2565b6102eb61052436600461251a565b611050565b6102eb61053736600461234c565b611173565b61036261054a36600461234c565b600a6020526000908152604090205481565b6102eb61056a36600461234c565b6111e5565b6102eb61057d36600461234c565b6112bf565b6102eb611331565b600154610396906001600160a01b031681565b6103146105ab3660046124c2565b6113e7565b6102c2604051806040016040528060038152602001622a21a960e91b81525081565b6102eb6105e036600461234c565b6114bf565b6102eb6105f336600461234c565b611531565b6102eb61060636600461234c565b6115d0565b61031461061936600461251a565b61163f565b61031461062c36600461234c565b60086020526000908152604090205460ff1681565b61031461064f366004612444565b611757565b600254610396906001600160a01b031681565b6102eb6106753660046123d3565b611837565b6102eb61068836600461234c565b611a63565b610362664a9b638448800081565b6103626106a9366004612366565b611c2f565b6102eb6106bc36600461234c565b611cf5565b6102eb6106cf36600461234c565b611d65565b6103146106e236600461234c565b60066020526000908152604090205460ff1681565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461074d5760405162461bcd60e51b81526004016107449190612646565b60405180910390fd5b506002805460ff60a81b1916600160a81b179055600380546001600160a01b039092166001600160a01b0319909216919091179055565b600254600160a81b900460ff16156108075760035460405163aee92d3360e01b81523360048201526001600160a01b038481166024830152604482018490529091169063aee92d3390606401600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610812565b610812338383611e01565b5050565b604080518082019091526015815274446966666572656e742061727261792073697a657360581b60208201526000908483146108655760405162461bcd60e51b81526004016107449190612646565b5060005b8481101561097e5783838281811061089157634e487b7160e01b600052603260045260246000fd5b9050602002013560056000336001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b815250906109065760405162461bcd60e51b81526004016107449190612646565b5061096c3387878481811061092b57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610940919061234c565b86868581811061096057634e487b7160e01b600052603260045260246000fd5b90506020020135611f05565b8061097681612741565b915050610869565b50600195945050505050565b600254600090600160a81b900460ff1615610a2c57600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ed57600080fd5b505afa158015610a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a25919061262e565b9050610a31565b506000545b90565b600254600090600160a81b900460ff1615610ae457600354604051638b477adb60e01b81523360048201526001600160a01b03868116602483015285811660448301526064820185905290911690638b477adb90608401602060405180830381600087803b158015610aa557600080fd5b505af1158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add91906125f6565b9050610af4565b610af0338585856120e5565b5060015b9392505050565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314610b485760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600860205260409020805460ff19169055565b3360009081526009602052604090205460ff16610bb85760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030902830bab9b2b960a11b6044820152606401610744565b600254600160a01b900460ff16610c075760405162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081b9bdd081c185d5cd959606a1b6044820152606401610744565b6002805460ff60a01b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b3360009081526008602052604090205460ff16610c8d5760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309026b4b73a32b960a11b6044820152606401610744565b6001600160a01b03821660009081526005602052604081208054839290610cb59084906126f3565b9250508190555080600080828254610ccd91906126f3565b9091555050600054664a9b638448800011610d2a5760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e206e6f74206d696e652074686174206d7563680000000000006044820152606401610744565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b33600090815260056020908152604091829020548251808401909352600f83526e42616c616e636520746f6f206c6f7760881b91830191909152821115610dca5760405162461bcd60e51b81526004016107449190612646565b50610dd5338261223f565b50565b6000610de4838361270b565b60056000336001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b81525090610e525760405162461bcd60e51b81526004016107449190612646565b5060005b83811015610eaf57610e9d33868684818110610e8257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610e97919061234c565b85611f05565b80610ea781612741565b915050610e56565b506001949350505050565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314610f075760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600960205260409020805460ff19169055565b600254600090600160a81b900460ff1615610fc2576003546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a082319060240160206040518083038186803b158015610f8357600080fd5b505afa158015610f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbb919061262e565b9050610fdd565b506001600160a01b0381166000908152600560205260409020545b919050565b60025460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461102f5760405162461bcd60e51b81526004016107449190612646565b50600280546001600160a01b03199081169091556001805490911633179055565b3360009081526004602090815260408083206001600160a01b03861684528252918290205482518084019093526011835270416c6c6f77616e636520746f6f206c6f7760781b918301919091528211156110bd5760405162461bcd60e51b81526004016107449190612646565b508060056000846001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b8152509061112d5760405162461bcd60e51b81526004016107449190612646565b503360008181526004602090815260408083206001600160a01b03871684529091529020546111699190849061116490859061272a565b611e01565b610812828261223f565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b031633146111c05760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600760205260409020805460ff19166001179055565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b031633146112325760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03811660009081526006602052604090205460ff1661129b5760405162461bcd60e51b815260206004820152601860248201527f41646472657373206e6f74206f6e20626c61636b6c69737400000000000000006044820152606401610744565b6001600160a01b038116600090815260056020526040902054610dd590829061223f565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461130c5760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600960205260409020805460ff19166001179055565b3360009081526009602052604090205460ff1661137f5760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030902830bab9b2b960a11b6044820152606401610744565b600254600160a01b900460ff16156113a95760405162461bcd60e51b8152600401610744906126c7565b6002805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b60006113f3838361270b565b60056000876001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b815250906114615760405162461bcd60e51b81526004016107449190612646565b5060005b8381101561097e576114ad338787878581811061149257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114a7919061234c565b866120e5565b806114b781612741565b915050611465565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461150c5760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600860205260409020805460ff19166001179055565b3360009081526007602052604090205460ff166115845760405162461bcd60e51b81526020600482015260116024820152702737ba103090213630b1b5b634b9ba32b960791b6044820152606401610744565b6001600160a01b038116600081815260066020526040808220805460ff19166001179055517ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed6279190a250565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b0316331461161d5760405162461bcd60e51b81526004016107449190612646565b506001600160a01b03166000908152600760205260409020805460ff19169055565b600254600090600160a81b900460ff16156116e75760035460405163370c4c0560e11b81523360048201526001600160a01b0385811660248301526044820185905290911690636e18980a90606401602060405180830381600087803b1580156116a857600080fd5b505af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e091906125f6565b9050611751565b33600090815260056020908152604091829020548251808401909352600f83526e42616c616e636520746f6f206c6f7760881b918301919091528311156117415760405162461bcd60e51b81526004016107449190612646565b5061174d338484611f05565b5060015b92915050565b604080518082019091526015815274446966666572656e742061727261792073697a657360581b60208201526000908483146117a65760405162461bcd60e51b81526004016107449190612646565b5060005b8481101561182a5761181833888888858181106117d757634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117ec919061234c565b87878681811061180c57634e487b7160e01b600052603260045260246000fd5b905060200201356120e5565b8061182281612741565b9150506117aa565b5060019695505050505050565b428410156118795760405162461bcd60e51b815260206004820152600f60248201526e1c195c9b5a5d0e8811561412549151608a1b6044820152606401610744565b6001600160a01b0387166000908152600a6020526040812080547f4d803abeb2b7d24aa2a6864e7c7c11ce2d9a7f2a42f0f284c17c2c9fc5f6d624917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91876118e783612741565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161196092919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156119cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611a015750886001600160a01b0316816001600160a01b0316145b611a4d5760405162461bcd60e51b815260206004820152601960248201527f7065726d69743a20494e56414c49445f5349474e4154555245000000000000006044820152606401610744565b611a58898989611e01565b505050505050505050565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314611ab05760405162461bcd60e51b81526004016107449190612646565b506001600160a01b038116611afe576001546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611af8573d6000803e3d6000fd5b50610dd5565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015611b4057600080fd5b505afa158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b78919061262e565b9050600081116040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b81525090611bc45760405162461bcd60e51b81526004016107449190612646565b5060015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b505050505050565b600254600090600160a81b900460ff1615611cc957600354604051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529091169063dd62ed3e9060440160206040518083038186803b158015611c9157600080fd5b505afa158015611ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e0919061262e565b506001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b60015460408051808201909152600a81526927b7363c9027bbb732b960b11b6020820152906001600160a01b03163314611d425760405162461bcd60e51b81526004016107449190612646565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526007602052604090205460ff16611db85760405162461bcd60e51b81526020600482015260116024820152702737ba103090213630b1b5b634b9ba32b960791b6044820152606401610744565b6001600160a01b038116600081815260066020526040808220805460ff19169055517f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d49190a250565b6001600160a01b038316600090815260066020526040902054839060ff1615611e3c5760405162461bcd60e51b815260040161074490612699565b6001600160a01b038316600090815260066020526040902054839060ff1615611e775760405162461bcd60e51b815260040161074490612699565b600254600160a01b900460ff1615611ea15760405162461bcd60e51b8152600401610744906126c7565b6001600160a01b0385811660008181526004602090815260408083209489168084529482529182902087905590518681527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35050505050565b6001600160a01b038316600090815260066020526040902054839060ff1615611f405760405162461bcd60e51b815260040161074490612699565b6001600160a01b038316600090815260066020526040902054839060ff1615611f7b5760405162461bcd60e51b815260040161074490612699565b600254600160a01b900460ff1615611fa55760405162461bcd60e51b8152600401610744906126c7565b6001600160a01b038416611fee5760405162461bcd60e51b815260206004820152601060248201526f155cd948189d5c9b881a5b9cdd19585960821b6044820152606401610744565b6001600160a01b0385166120445760405162461bcd60e51b815260206004820152601760248201527f576861742061205465727269626c65204661696c7572650000000000000000006044820152606401610744565b6001600160a01b0385166000908152600560205260408120805485929061206c90849061272a565b90915550506001600160a01b038416600090815260056020526040812080548592906120999084906126f3565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ef691815260200190565b6001600160a01b0380841660009081526004602090815260408083209388168352928152908290205482518084019093526011835270416c6c6f77616e636520746f6f206c6f7760781b918301919091528211156121565760405162461bcd60e51b81526004016107449190612646565b508060056000856001600160a01b03166001600160a01b031681526020019081526020016000205410156040518060400160405280600f81526020016e42616c616e636520746f6f206c6f7760881b815250906121c65760405162461bcd60e51b81526004016107449190612646565b506001600160a01b038084166000908152600460209081526040808320938816835292905220546000191461222e576001600160a01b0380841660009081526004602090815260408083209388168352929052205461222e908490869061116490859061272a565b612239838383611f05565b50505050565b600254600160a01b900460ff16156122695760405162461bcd60e51b8152600401610744906126c7565b6001600160a01b0382166000908152600560205260408120805483929061229190849061272a565b92505081905550806000808282546122a9919061272a565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d64565b80356001600160a01b0381168114610fdd57600080fd5b60008083601f840112612314578182fd5b50813567ffffffffffffffff81111561232b578182fd5b602083019150836020808302850101111561234557600080fd5b9250929050565b60006020828403121561235d578081fd5b610af4826122ec565b60008060408385031215612378578081fd5b612381836122ec565b915061238f602084016122ec565b90509250929050565b6000806000606084860312156123ac578081fd5b6123b5846122ec565b92506123c3602085016122ec565b9150604084013590509250925092565b600080600080600080600060e0888a0312156123ed578283fd5b6123f6886122ec565b9650612404602089016122ec565b95506040880135945060608801359350608088013560ff81168114612427578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060008060006060868803121561245b578081fd5b612464866122ec565b9450602086013567ffffffffffffffff80821115612480578283fd5b61248c89838a01612303565b909650945060408801359150808211156124a4578283fd5b506124b188828901612303565b969995985093965092949392505050565b600080600080606085870312156124d7578384fd5b6124e0856122ec565b9350602085013567ffffffffffffffff8111156124fb578384fd5b61250787828801612303565b9598909750949560400135949350505050565b6000806040838503121561252c578182fd5b612535836122ec565b946020939093013593505050565b60008060008060408587031215612558578384fd5b843567ffffffffffffffff8082111561256f578586fd5b61257b88838901612303565b90965094506020870135915080821115612593578384fd5b506125a087828801612303565b95989497509550505050565b6000806000604084860312156125c0578283fd5b833567ffffffffffffffff8111156125d6578384fd5b6125e286828701612303565b909790965060209590950135949350505050565b600060208284031215612607578081fd5b81518015158114610af4578182fd5b600060208284031215612627578081fd5b5035919050565b60006020828403121561263f578081fd5b5051919050565b6000602080835283518082850152825b8181101561267257858101830151858201604001528201612656565b818111156126835783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601490820152731059191c995cdcc81bdb88189b1858dadb1a5cdd60621b604082015260600190565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b600082198211156127065761270661275c565b500190565b60008160001904831182151516156127255761272561275c565b500290565b60008282101561273c5761273c61275c565b500390565b60006000198214156127555761275561275c565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220c43ae7a63fd8169f79a352397f807aba50009ac72867eabcdaeeeced082457e064736f6c63430008020033

Deployed Bytecode Sourcemap

1214:12735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:41;;;;;;;;;;;;;;;-1:-1:-1;;;1328:41:0;;;;;;;;;;;;:::i;:::-;;;;;;;;11622:121;;;;;;:::i;:::-;;:::i;:::-;;3743:350;;;;;;:::i;:::-;;:::i;1746:22::-;;;;;-1:-1:-1;;;1746:22:0;;;;;;;;;8120:14:1;;8113:22;8095:41;;8083:2;8068:18;1746:22:0;8050:92:1;7096:391:0;;;;;;:::i;:::-;;:::i;2948:48::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12309:190;;;:::i;:::-;;;8293:25:1;;;8281:2;8266:18;12309:190:0;8248:76:1;5075:473:0;;;;;;:::i;:::-;;:::i;1775:30::-;;;;;-1:-1:-1;;;;;1775:30:0;;;;;;-1:-1:-1;;;;;6482:32:1;;;6464:51;;6452:2;6437:18;1775:30:0;6419:102:1;8962:96:0;;;;;;:::i;:::-;;:::i;1969:117::-;;2020:66;1969:117;;1287:34;;1320:1;1287:34;;;;;14465:4:1;14453:17;;;14435:36;;14423:2;14408:18;1287:34:0;14390:87:1;1560:35:0;;;;;1814:41;;;;;10286:147;;;:::i;9066:259::-;;;;;;:::i;:::-;;:::i;4136:145::-;;;;;;:::i;:::-;;:::i;3050:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7963:325;;;;;;:::i;:::-;;:::i;1517:36::-;;;;;;;;;;;;;;;-1:-1:-1;;;1517:36:0;;;;;1719:18;;;;;-1:-1:-1;;;1719:18:0;;;;;;9871:96;;;;;;:::i;:::-;;:::i;11796:214::-;;;;;;:::i;:::-;;:::i;9571:157::-;;;:::i;4289:298::-;;;;;;:::i;:::-;;:::i;6040:105::-;;;;;;:::i;:::-;;:::i;3099:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;6834:171;;;;;;:::i;:::-;;:::i;9771:92::-;;;;;;:::i;:::-;;:::i;10175:103::-;;;:::i;1660:20::-;;;;;-1:-1:-1;;;;;1660:20:0;;;8356:363;;;;;;:::i;:::-;;:::i;1376:37::-;;;;;;;;;;;;;;;-1:-1:-1;;;1376:37:0;;;;;8862:92;;;;;;:::i;:::-;;:::i;6522:144::-;;;;;;:::i;:::-;;:::i;6153:109::-;;;;;;:::i;:::-;;:::i;4630:437::-;;;;;;:::i;:::-;;:::i;3003:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7542:366;;;;;;:::i;:::-;;:::i;1687:23::-;;;;;-1:-1:-1;;;;;1687:23:0;;;10511:1062;;;;;;:::i;:::-;;:::i;5644:352::-;;;;;;:::i;:::-;;:::i;1455:53::-;;1491:17;1455:53;;12018:283;;;;;;:::i;:::-;;:::i;9463:100::-;;;;;;:::i;:::-;;:::i;6674:152::-;;;;;;:::i;:::-;;:::i;2894:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11622:121;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;11684:10:0::1;:17:::0;;-1:-1:-1;;;;11684:17:0::1;-1:-1:-1::0;;;11684:17:0::1;::::0;;11712:15:::1;:23:::0;;-1:-1:-1;;;;;11712:23:0;;::::1;-1:-1:-1::0;;;;;;11712:23:0;;::::1;::::0;;;::::1;::::0;;11622:121::o;3743:350::-;3817:10;;-1:-1:-1;;;3817:10:0;;;;3813:225;;;3883:15;;3868:158;;-1:-1:-1;;;3868:158:0;;3938:10;3868:158;;;7536:34:1;-1:-1:-1;;;;;7606:15:1;;;7586:18;;;7579:43;7638:18;;;7631:34;;;3883:15:0;;;;3868:47;;7471:18:1;;3868:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3844:182;;3813:225;4048:37;4057:10;4069:7;4078:6;4048:8;:37::i;:::-;3743:350;;:::o;7096:391::-;7262:9;;;;;;;;;;;;-1:-1:-1;;;7262:9:0;;;;7204:4;;7234:26;;;7226:46;;;;-1:-1:-1;;;7226:46:0;;;;;;;;:::i;:::-;;7288:9;7283:175;7303:13;;;7283:175;;;7371:6;;7378:1;7371:9;;;;;-1:-1:-1;;;7371:9:0;;;;;;;;;;;;;;;7346;:21;7356:10;-1:-1:-1;;;;;7346:21:0;-1:-1:-1;;;;;7346:21:0;;;;;;;;;;;;;:34;;7382:9;;;;;;;;;;;;;-1:-1:-1;;;7382:9:0;;;7338:54;;;;;-1:-1:-1;;;7338:54:0;;;;;;;;:::i;:::-;;7407:39;7417:10;7429:2;;7432:1;7429:5;;;;;-1:-1:-1;;;7429:5:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7436:6;;7443:1;7436:9;;;;;-1:-1:-1;;;7436:9:0;;;;;;;;;;;;;;;7407;:39::i;:::-;7318:3;;;;:::i;:::-;;;;7283:175;;;-1:-1:-1;7475:4:0;;7096:391;-1:-1:-1;;;;;7096:391:0:o;12309:190::-;12379:10;;12355:7;;-1:-1:-1;;;12379:10:0;;;;12375:87;;;12420:15;;;;;;;;;-1:-1:-1;;;;;12420:15:0;-1:-1:-1;;;;;12413:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12406:44;;;;12375:87;-1:-1:-1;12479:12:0;;12309:190;;:::o;5075:473::-;5212:10;;5191:4;;-1:-1:-1;;;5212:10:0;;;;5208:252;;;5278:15;;5263:185;;-1:-1:-1;;;5263:185:0;;5338:10;5263:185;;;7104:34:1;-1:-1:-1;;;;;7174:15:1;;;7154:18;;;7147:43;7226:15;;;7206:18;;;7199:43;7258:18;;;7251:34;;;5278:15:0;;;;5263:52;;7038:19:1;;5263:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5239:209;;;;5208:252;5470:48;5489:10;5501:4;5507:2;5511:6;5470:18;:48::i;:::-;-1:-1:-1;5536:4:0;5075:473;;;;;;:::o;8962:96::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9028:14:0::1;9045:5;9028:14:::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;9028:22:0::1;::::0;;8962:96::o;10286:147::-;10023:10;10014:20;;;;:8;:20;;;;;;;;10006:45;;;;-1:-1:-1;;;10006:45:0;;13276:2:1;10006:45:0;;;13258:21:1;13315:2;13295:18;;;13288:30;-1:-1:-1;;;13334:18:1;;;13327:42;13386:18;;10006:45:0;13248:162:1;10006:45:0;10344:6:::1;::::0;-1:-1:-1;;;10344:6:0;::::1;;;10336:38;;;::::0;-1:-1:-1;;;10336:38:0;;12576:2:1;10336:38:0::1;::::0;::::1;12558:21:1::0;12615:2;12595:18;;;12588:30;-1:-1:-1;;;12634:18:1;;;12627:49;12693:18;;10336:38:0::1;12548:169:1::0;10336:38:0::1;10385:6;:14:::0;;-1:-1:-1;;;;10385:14:0::1;::::0;;10415:10:::1;::::0;::::1;::::0;10394:5:::1;::::0;10415:10:::1;10286:147::o:0;9066:259::-;8806:10;8797:20;;;;:8;:20;;;;;;;;8789:45;;;;-1:-1:-1;;;8789:45:0;;10484:2:1;8789:45:0;;;10466:21:1;10523:2;10503:18;;;10496:30;-1:-1:-1;;;10542:18:1;;;10535:42;10594:18;;8789:45:0;10456:162:1;8789:45:0;-1:-1:-1;;;;;9139:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;:23;;9156:6;;9139:13;:23:::1;::::0;9156:6;;9139:23:::1;:::i;:::-;;;;;;;;9189:6;9173:12;::::0;:22:::1;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;9214:12:0::1;::::0;1491:17:::1;-1:-1:-1::0;9206:63:0::1;;;::::0;-1:-1:-1;;;9206:63:0;;11532:2:1;9206:63:0::1;::::0;::::1;11514:21:1::0;11571:2;11551:18;;;11544:30;11610:28;11590:18;;;11583:56;11656:18;;9206:63:0::1;11504:176:1::0;9206:63:0::1;9285:32;::::0;8293:25:1;;;-1:-1:-1;;;;;9285:32:0;::::1;::::0;9302:1:::1;::::0;9285:32:::1;::::0;8281:2:1;8266:18;9285:32:0::1;;;;;;;;9066:259:::0;;:::o;4136:145::-;4204:10;4194:21;;;;:9;:21;;;;;;;;;;4227:9;;;;;;;;;;;-1:-1:-1;;;4227:9:0;;;;;;;4194:31;-1:-1:-1;4194:31:0;4186:51;;;;-1:-1:-1;;;4186:51:0;;;;;;;;:::i;:::-;;4248:25;4254:10;4266:6;4248:5;:25::i;:::-;4136:145;:::o;7963:325::-;8060:4;8115:18;8124:2;8115:6;:18;:::i;:::-;8090:9;:21;8100:10;-1:-1:-1;;;;;8090:21:0;-1:-1:-1;;;;;8090:21:0;;;;;;;;;;;;;:43;;8135:9;;;;;;;;;;;;;-1:-1:-1;;;8135:9:0;;;8082:63;;;;;-1:-1:-1;;;8082:63:0;;;;;;;;:::i;:::-;;8161:9;8156:103;8176:13;;;8156:103;;;8211:36;8221:10;8233:2;;8236:1;8233:5;;;;;-1:-1:-1;;;8233:5:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8240:6;8211:9;:36::i;:::-;8191:3;;;;:::i;:::-;;;;8156:103;;;-1:-1:-1;8276:4:0;;7963:325;-1:-1:-1;;;;7963:325:0:o;9871:96::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9937:14:0::1;9954:5;9937:14:::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;9937:22:0::1;::::0;;9871:96::o;11796:214::-;11879:10;;11855:7;;-1:-1:-1;;;11879:10:0;;;;11875:92;;;11920:15;;11913:42;;-1:-1:-1;;;11913:42:0;;-1:-1:-1;;;;;6482:32:1;;;11913:42:0;;;6464:51:1;11920:15:0;;;;11913:33;;6437:18:1;;11913:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11906:49;;;;11875:92;-1:-1:-1;;;;;;11984:18:0;;;;;;:9;:18;;;;;;11796:214;;;;:::o;9571:157::-;9640:8;;9650;;;;;;;;;;;;-1:-1:-1;;;9650:8:0;;;;;-1:-1:-1;;;;;9640:8:0;9626:10;:22;9618:41;;;;-1:-1:-1;;;9618:41:0;;;;;;;;:::i;:::-;-1:-1:-1;9670:8:0;:21;;-1:-1:-1;;;;;;9670:21:0;;;;;;;9702:18;;;;;9710:10;9702:18;;;9571:157::o;4289:298::-;4377:10;4365:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4365:29:0;;;;;;;;;;;4406:9;;;;;;;;;;;-1:-1:-1;;;4406:9:0;;;;;;;4365:39;-1:-1:-1;4365:39:0;4357:59;;;;-1:-1:-1;;;4357:59:0;;;;;;;;:::i;:::-;;4454:6;4435:9;:15;4445:4;-1:-1:-1;;;;;4435:15:0;-1:-1:-1;;;;;4435:15:0;;;;;;;;;;;;;:25;;4462:9;;;;;;;;;;;;;-1:-1:-1;;;4462:9:0;;;4427:45;;;;;-1:-1:-1;;;4427:45:0;;;;;;;;:::i;:::-;-1:-1:-1;4492:10:0;4510:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4510:29:0;;;;;;;;;;4483:66;;4492:10;4504:4;;4510:38;;4542:6;;4510:38;:::i;:::-;4483:8;:66::i;:::-;4560:19;4566:4;4572:6;4560:5;:19::i;6040:105::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6108:22:0::1;;::::0;;;:16:::1;:22;::::0;;;;:29;;-1:-1:-1;;6108:29:0::1;6133:4;6108:29;::::0;;6040:105::o;6834:171::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6910:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;::::1;;6902:56;;;::::0;-1:-1:-1;;;6902:56:0;;11179:2:1;6902:56:0::1;::::0;::::1;11161:21:1::0;11218:2;11198:18;;;11191:30;11257:26;11237:18;;;11230:54;11301:18;;6902:56:0::1;11151:174:1::0;6902:56:0::1;-1:-1:-1::0;;;;;6981:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;6969:28:::1;::::0;6975:4;;6969:5:::1;:28::i;9771:92::-:0;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9834:14:0::1;;::::0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;9834:21:0::1;9851:4;9834:21;::::0;;9771:92::o;10175:103::-;10023:10;10014:20;;;;:8;:20;;;;;;;;10006:45;;;;-1:-1:-1;;;10006:45:0;;13276:2:1;10006:45:0;;;13258:21:1;13315:2;13295:18;;;13288:30;-1:-1:-1;;;13334:18:1;;;13327:42;13386:18;;10006:45:0;13248:162:1;10006:45:0;10118:6:::1;::::0;-1:-1:-1;;;10118:6:0;::::1;;;10117:7;10109:38;;;;-1:-1:-1::0;;;10109:38:0::1;;;;;;;:::i;:::-;10233:6:::2;:13:::0;;-1:-1:-1;;;;10233:13:0::2;-1:-1:-1::0;;;10233:13:0::2;::::0;;10262:8:::2;::::0;::::2;::::0;10233:13;;10262:8:::2;10175:103::o:0;8356:363::-;8487:4;8531:18;8540:2;8531:6;:18;:::i;:::-;8512:9;:15;8522:4;-1:-1:-1;;;;;8512:15:0;-1:-1:-1;;;;;8512:15:0;;;;;;;;;;;;;:37;;8551:9;;;;;;;;;;;;;-1:-1:-1;;;8551:9:0;;;8504:57;;;;;-1:-1:-1;;;8504:57:0;;;;;;;;:::i;:::-;;8577:9;8572:118;8592:13;;;8572:118;;;8627:51;8646:10;8658:4;8664:2;;8667:1;8664:5;;;;;-1:-1:-1;;;8664:5:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8671:6;8627:18;:51::i;:::-;8607:3;;;;:::i;:::-;;;;8572:118;;8862:92;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;8925:14:0::1;;::::0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;8925:21:0::1;8942:4;8925:21;::::0;;8862:92::o;6522:144::-;6331:10;6314:28;;;;:16;:28;;;;;;;;6306:58;;;;-1:-1:-1;;;6306:58:0;;10138:2:1;6306:58:0;;;10120:21:1;10177:2;10157:18;;;10150:30;-1:-1:-1;;;10196:18:1;;;10189:47;10253:18;;6306:58:0;10110:167:1;6306:58:0;-1:-1:-1;;;;;6594:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;:26;;-1:-1:-1;;6594:26:0::1;6616:4;6594:26;::::0;;6636:22;::::1;::::0;6594:19;6636:22:::1;6522:144:::0;:::o;6153:109::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6224:22:0::1;6249:5;6224:22:::0;;;:16:::1;:22;::::0;;;;:30;;-1:-1:-1;;6224:30:0::1;::::0;;6153:109::o;4630:437::-;4715:10;;4694:4;;-1:-1:-1;;;4715:10:0;;;;4711:221;;;4781:15;;4766:154;;-1:-1:-1;;;4766:154:0;;4837:10;4766:154;;;7536:34:1;-1:-1:-1;;;;;7606:15:1;;;7586:18;;;7579:43;7638:18;;;7631:34;;;4781:15:0;;;;4766:48;;7471:18:1;;4766:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4742:178;;;;4711:221;4960:10;4950:21;;;;:9;:21;;;;;;;;;;4983:9;;;;;;;;;;;-1:-1:-1;;;4983:9:0;;;;;;;4950:31;-1:-1:-1;4950:31:0;4942:51;;;;-1:-1:-1;;;4942:51:0;;;;;;;;:::i;:::-;;5004:33;5014:10;5026:2;5030:6;5004:9;:33::i;:::-;-1:-1:-1;5055:4:0;4630:437;;;;;:::o;7542:366::-;7737:9;;;;;;;;;;;;-1:-1:-1;;;7737:9:0;;;;7684:4;;7709:26;;;7701:46;;;;-1:-1:-1;;;7701:46:0;;;;;;;;:::i;:::-;;7763:9;7758:121;7778:13;;;7758:121;;;7813:54;7832:10;7844:4;7850:2;;7853:1;7850:5;;;;;-1:-1:-1;;;7850:5:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7857:6;;7864:1;7857:9;;;;;-1:-1:-1;;;7857:9:0;;;;;;;;;;;;;;;7813:18;:54::i;:::-;7793:3;;;;:::i;:::-;;;;7758:121;;;-1:-1:-1;7896:4:0;;7542:366;-1:-1:-1;;;;;;7542:366:0:o;10511:1062::-;10732:15;10720:8;:27;;10712:55;;;;-1:-1:-1;;;10712:55:0;;11887:2:1;10712:55:0;;;11869:21:1;11926:2;11906:18;;;11899:30;-1:-1:-1;;;11945:18:1;;;11938:45;12000:18;;10712:55:0;11859:165:1;10712:55:0;-1:-1:-1;;;;;11179:12:0;;10778:14;11179:12;;;:6;:12;;;;;:14;;10908:16;;2020:66;;11070:4;;11105:7;;11143:5;;10778:14;11179;;;:::i;:::-;;;;-1:-1:-1;10983:276:0;;;;;;8616:25:1;;;;-1:-1:-1;;;;;8715:15:1;;;8695:18;;;8688:43;8767:15;;;;8747:18;;;8740:43;8799:18;;;8792:34;8842:19;;;8835:35;8886:19;;;8879:35;;;8588:19;;10983:276:0;;;;;;;;;;;;10947:335;;;;;;10836:465;;;;;;;;-1:-1:-1;;;6179:27:1;;6231:1;6222:11;;6215:27;;;;6267:2;6258:12;;6251:28;6304:2;6295:12;;6169:144;10836:465:0;;;;-1:-1:-1;;10836:465:0;;;;;;;;;10808:508;;10836:465;10808:508;;;;11327:24;11354:26;;;;;;;;;9152:25:1;;;9225:4;9213:17;;9193:18;;;9186:45;;;;9247:18;;;9240:34;;;9290:18;;;9283:34;;;10808:508:0;;-1:-1:-1;11327:24:0;11354:26;;9124:19:1;;11354:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11354:26:0;;-1:-1:-1;;11354:26:0;;;-1:-1:-1;;;;;;;11413:30:0;;;;;;:58;;;11467:4;-1:-1:-1;;;;;11447:24:0;:16;-1:-1:-1;;;;;11447:24:0;;11413:58;11391:133;;;;-1:-1:-1;;;11391:133:0;;10825:2:1;11391:133:0;;;10807:21:1;10864:2;10844:18;;;10837:30;10903:27;10883:18;;;10876:55;10948:18;;11391:133:0;10797:175:1;11391:133:0;11535:30;11544:4;11550:7;11559:5;11535:8;:30::i;:::-;10511:1062;;;;;;;;;:::o;5644:352::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5710:19:0;::::1;5706:283;;5754:5;::::0;5746:46:::1;::::0;-1:-1:-1;;;;;5754:5:0;;::::1;::::0;5770:21:::1;5746:46:::0;::::1;;;::::0;5754:5:::1;5746:46:::0;5754:5;5746:46;5770:21;5754:5;5746:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5706:283;;;5842:38;::::0;-1:-1:-1;;;5842:38:0;;5874:4:::1;5842:38;::::0;::::1;6464:51:1::0;5825:14:0::1;::::0;-1:-1:-1;;;;;5842:23:0;::::1;::::0;::::1;::::0;6437:18:1;;5842:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5825:55;;5912:1;5903:6;:10;5915:9;;;;;;;;;;;;;-1:-1:-1::0;;;5915:9:0::1;;::::0;5895:30:::1;;;;;-1:-1:-1::0;;;5895:30:0::1;;;;;;;;:::i;:::-;-1:-1:-1::0;5963:5:0::1;::::0;5940:37:::1;::::0;-1:-1:-1;;;5940:37:0;;-1:-1:-1;;;;;5963:5:0;;::::1;5940:37;::::0;::::1;7850:51:1::0;7917:18;;;7910:34;;;5940:22:0;;::::1;::::0;::::1;::::0;7823:18:1;;5940:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5706:283;5644:352:::0;:::o;12018:283::-;12150:10;;12121:7;;-1:-1:-1;;;12150:10:0;;;;12146:101;;;12191:15;;12184:51;;-1:-1:-1;;;12184:51:0;;-1:-1:-1;;;;;6756:15:1;;;12184:51:0;;;6738:34:1;6808:15;;;6788:18;;;6781:43;12191:15:0;;;;12184:33;;6673:18:1;;12184:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12146:101::-;-1:-1:-1;;;;;;12264:20:0;;;;;;;:11;:20;;;;;;;;:29;;;;;;;;;;;;;12018:283::o;9463:100::-;9419:5;;9426:8;;;;;;;;;;;;-1:-1:-1;;;9426:8:0;;;;;-1:-1:-1;;;;;9419:5:0;9405:10;:19;9397:38;;;;-1:-1:-1;;;9397:38:0;;;;;;;;:::i;:::-;-1:-1:-1;9535:8:0::1;:20:::0;;-1:-1:-1;;;;;;9535:20:0::1;-1:-1:-1::0;;;;;9535:20:0;;;::::1;::::0;;;::::1;::::0;;9463:100::o;6674:152::-;6331:10;6314:28;;;;:16;:28;;;;;;;;6306:58;;;;-1:-1:-1;;;6306:58:0;;10138:2:1;6306:58:0;;;10120:21:1;10177:2;10157:18;;;10150:30;-1:-1:-1;;;10196:18:1;;;10189:47;10253:18;;6306:58:0;10110:167:1;6306:58:0;-1:-1:-1;;;;;6749:19:0;::::1;6771:5;6749:19:::0;;;:13:::1;:19;::::0;;;;;:27;;-1:-1:-1;;6749:27:0::1;::::0;;6792:26;::::1;::::0;6771:5;6792:26:::1;6674:152:::0;:::o;12550:275::-;-1:-1:-1;;;;;6450:19:0;;;;;;:13;:19;;;;;;12675:7;;6450:19;;6449:20;6441:53;;;;-1:-1:-1;;;6441:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6450:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;12699:7;;6450:19:::1;;6449:20;6441:53;;;;-1:-1:-1::0;;;6441:53:0::1;;;;;;;:::i;:::-;10118:6:::2;::::0;-1:-1:-1;;;10118:6:0;::::2;;;10117:7;10109:38;;;;-1:-1:-1::0;;;10109:38:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12729:20:0;;::::3;;::::0;;;:11:::3;:20;::::0;;;;;;;:29;;::::3;::::0;;;;;;;;;;:38;;;12783:34;;8293:25:1;;;12783:34:0::3;::::0;8266:18:1;12783:34:0::3;;;;;;;;6505:1:::1;12550:275:::0;;;;:::o;13552:394::-;-1:-1:-1;;;;;6450:19:0;;;;;;:13;:19;;;;;;13670:4;;6450:19;;6449:20;6441:53;;;;-1:-1:-1;;;6441:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6450:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;13691:2;;6450:19:::1;;6449:20;6441:53;;;;-1:-1:-1::0;;;6441:53:0::1;;;;;;;:::i;:::-;10118:6:::2;::::0;-1:-1:-1;;;10118:6:0;::::2;;;10117:7;10109:38;;;;-1:-1:-1::0;;;10109:38:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13724:16:0;::::3;13716:45;;;::::0;-1:-1:-1;;;13716:45:0;;12231:2:1;13716:45:0::3;::::0;::::3;12213:21:1::0;12270:2;12250:18;;;12243:30;-1:-1:-1;;;12289:18:1;;;12282:46;12345:18;;13716:45:0::3;12203:166:1::0;13716:45:0::3;-1:-1:-1::0;;;;;13780:18:0;::::3;13772:54;;;::::0;-1:-1:-1;;;13772:54:0;;12924:2:1;13772:54:0::3;::::0;::::3;12906:21:1::0;12963:2;12943:18;;;12936:30;13002:25;12982:18;;;12975:53;13045:18;;13772:54:0::3;12896:173:1::0;13772:54:0::3;-1:-1:-1::0;;;;;13837:15:0;::::3;;::::0;;;:9:::3;:15;::::0;;;;:25;;13856:6;;13837:15;:25:::3;::::0;13856:6;;13837:25:::3;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13873:13:0;::::3;;::::0;;;:9:::3;:13;::::0;;;;:23;;13890:6;;13873:13;:23:::3;::::0;13890:6;;13873:23:::3;:::i;:::-;;;;;;;;13927:2;-1:-1:-1::0;;;;;13912:26:0::3;13921:4;-1:-1:-1::0;;;;;13912:26:0::3;;13931:6;13912:26;;;;8293:25:1::0;;8281:2;8266:18;;8248:76;12833:513:0;-1:-1:-1;;;;;12990:17:0;;;;;;;:11;:17;;;;;;;;:26;;;;;;;;;;;;;13028:9;;;;;;;;;;;-1:-1:-1;;;13028:9:0;;;;;;;12990:36;-1:-1:-1;12990:36:0;12982:56;;;;-1:-1:-1;;;12982:56:0;;;;;;;;:::i;:::-;;13076:6;13057:9;:15;13067:4;-1:-1:-1;;;;;13057:15:0;-1:-1:-1;;;;;13057:15:0;;;;;;;;;;;;;:25;;13084:9;;;;;;;;;;;;;-1:-1:-1;;;13084:9:0;;;13049:45;;;;;-1:-1:-1;;;13049:45:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13163:17:0;;;;;;;:11;:17;;;;;;;;:26;;;;;;;;;;-1:-1:-1;;13163:47:0;13159:140;;-1:-1:-1;;;;;13251:17:0;;;;;;;:11;:17;;;;;;;;:26;;;;;;;;;;13227:60;;13236:4;;13242:7;;13251:35;;13280:6;;13251:35;:::i;13227:60::-;13311:27;13321:4;13327:2;13331:6;13311:9;:27::i;:::-;12833:513;;;;:::o;13354:190::-;10118:6;;-1:-1:-1;;;10118:6:0;;;;10117:7;10109:38;;;;-1:-1:-1;;;10109:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13428:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;:25;;13447:6;;13428:15;:25:::1;::::0;13447:6;;13428:25:::1;:::i;:::-;;;;;;;;13480:6;13464:12;::::0;:22:::1;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13502:34:0::1;::::0;8293:25:1;;;13525:1:0::1;::::0;-1:-1:-1;;;;;13502:34:0;::::1;::::0;::::1;::::0;8281:2:1;8266:18;13502:34:0::1;8248:76:1::0;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:398;;;319:3;312:4;304:6;300:17;296:27;286:2;;344:8;334;327:26;286:2;-1:-1:-1;374:20:1;;417:18;406:30;;403:2;;;456:8;446;439:26;403:2;500:4;492:6;488:17;476:29;;563:3;556:4;548;540:6;536:17;528:6;524:30;520:41;517:50;514:2;;;580:1;577;570:12;514:2;276:314;;;;;:::o;595:196::-;;707:2;695:9;686:7;682:23;678:32;675:2;;;728:6;720;713:22;675:2;756:29;775:9;756:29;:::i;796:270::-;;;925:2;913:9;904:7;900:23;896:32;893:2;;;946:6;938;931:22;893:2;974:29;993:9;974:29;:::i;:::-;964:39;;1022:38;1056:2;1045:9;1041:18;1022:38;:::i;:::-;1012:48;;883:183;;;;;:::o;1071:338::-;;;;1217:2;1205:9;1196:7;1192:23;1188:32;1185:2;;;1238:6;1230;1223:22;1185:2;1266:29;1285:9;1266:29;:::i;:::-;1256:39;;1314:38;1348:2;1337:9;1333:18;1314:38;:::i;:::-;1304:48;;1399:2;1388:9;1384:18;1371:32;1361:42;;1175:234;;;;;:::o;1414:713::-;;;;;;;;1626:3;1614:9;1605:7;1601:23;1597:33;1594:2;;;1648:6;1640;1633:22;1594:2;1676:29;1695:9;1676:29;:::i;:::-;1666:39;;1724:38;1758:2;1747:9;1743:18;1724:38;:::i;:::-;1714:48;;1809:2;1798:9;1794:18;1781:32;1771:42;;1860:2;1849:9;1845:18;1832:32;1822:42;;1914:3;1903:9;1899:19;1886:33;1959:4;1952:5;1948:16;1941:5;1938:27;1928:2;;1984:6;1976;1969:22;1928:2;1584:543;;;;-1:-1:-1;1584:543:1;;;;2012:5;2064:3;2049:19;;2036:33;;-1:-1:-1;2116:3:1;2101:19;;;2088:33;;1584:543;-1:-1:-1;;1584:543:1:o;2132:877::-;;;;;;2348:2;2336:9;2327:7;2323:23;2319:32;2316:2;;;2369:6;2361;2354:22;2316:2;2397:29;2416:9;2397:29;:::i;:::-;2387:39;;2477:2;2466:9;2462:18;2449:32;2500:18;2541:2;2533:6;2530:14;2527:2;;;2562:6;2554;2547:22;2527:2;2606:70;2668:7;2659:6;2648:9;2644:22;2606:70;:::i;:::-;2695:8;;-1:-1:-1;2580:96:1;-1:-1:-1;2783:2:1;2768:18;;2755:32;;-1:-1:-1;2799:16:1;;;2796:2;;;2833:6;2825;2818:22;2796:2;;2877:72;2941:7;2930:8;2919:9;2915:24;2877:72;:::i;:::-;2306:703;;;;-1:-1:-1;2306:703:1;;-1:-1:-1;2968:8:1;;2851:98;2306:703;-1:-1:-1;;;2306:703:1:o;3014:599::-;;;;;3195:2;3183:9;3174:7;3170:23;3166:32;3163:2;;;3216:6;3208;3201:22;3163:2;3244:29;3263:9;3244:29;:::i;:::-;3234:39;;3324:2;3313:9;3309:18;3296:32;3351:18;3343:6;3340:30;3337:2;;;3388:6;3380;3373:22;3337:2;3432:70;3494:7;3485:6;3474:9;3470:22;3432:70;:::i;:::-;3153:460;;3521:8;;-1:-1:-1;3406:96:1;;3603:2;3588:18;3575:32;;3153:460;-1:-1:-1;;;;3153:460:1:o;3618:264::-;;;3747:2;3735:9;3726:7;3722:23;3718:32;3715:2;;;3768:6;3760;3753:22;3715:2;3796:29;3815:9;3796:29;:::i;:::-;3786:39;3872:2;3857:18;;;;3844:32;;-1:-1:-1;;;3705:177:1:o;3887:803::-;;;;;4086:2;4074:9;4065:7;4061:23;4057:32;4054:2;;;4107:6;4099;4092:22;4054:2;4152:9;4139:23;4181:18;4222:2;4214:6;4211:14;4208:2;;;4243:6;4235;4228:22;4208:2;4287:70;4349:7;4340:6;4329:9;4325:22;4287:70;:::i;:::-;4376:8;;-1:-1:-1;4261:96:1;-1:-1:-1;4464:2:1;4449:18;;4436:32;;-1:-1:-1;4480:16:1;;;4477:2;;;4514:6;4506;4499:22;4477:2;;4558:72;4622:7;4611:8;4600:9;4596:24;4558:72;:::i;:::-;4044:646;;;;-1:-1:-1;4649:8:1;-1:-1:-1;;;;4044:646:1:o;4695:525::-;;;;4859:2;4847:9;4838:7;4834:23;4830:32;4827:2;;;4880:6;4872;4865:22;4827:2;4925:9;4912:23;4958:18;4950:6;4947:30;4944:2;;;4995:6;4987;4980:22;4944:2;5039:70;5101:7;5092:6;5081:9;5077:22;5039:70;:::i;:::-;5128:8;;5013:96;;-1:-1:-1;5210:2:1;5195:18;;;;5182:32;;4817:403;-1:-1:-1;;;;4817:403:1:o;5225:297::-;;5345:2;5333:9;5324:7;5320:23;5316:32;5313:2;;;5366:6;5358;5351:22;5313:2;5403:9;5397:16;5456:5;5449:13;5442:21;5435:5;5432:32;5422:2;;5483:6;5475;5468:22;5527:190;;5639:2;5627:9;5618:7;5614:23;5610:32;5607:2;;;5660:6;5652;5645:22;5607:2;-1:-1:-1;5688:23:1;;5597:120;-1:-1:-1;5597:120:1:o;5722:194::-;;5845:2;5833:9;5824:7;5820:23;5816:32;5813:2;;;5866:6;5858;5851:22;5813:2;-1:-1:-1;5894:16:1;;5803:113;-1:-1:-1;5803:113:1:o;9328:603::-;;9469:2;9498;9487:9;9480:21;9530:6;9524:13;9573:6;9568:2;9557:9;9553:18;9546:34;9598:4;9611:140;9625:6;9622:1;9619:13;9611:140;;;9720:14;;;9716:23;;9710:30;9686:17;;;9705:2;9682:26;9675:66;9640:10;;9611:140;;;9769:6;9766:1;9763:13;9760:2;;;9839:4;9834:2;9825:6;9814:9;9810:22;9806:31;9799:45;9760:2;-1:-1:-1;9915:2:1;9894:15;-1:-1:-1;;9890:29:1;9875:45;;;;9922:2;9871:54;;9449:482;-1:-1:-1;;;9449:482:1:o;13415:344::-;13617:2;13599:21;;;13656:2;13636:18;;;13629:30;-1:-1:-1;;;13690:2:1;13675:18;;13668:50;13750:2;13735:18;;13589:170::o;13764:342::-;13966:2;13948:21;;;14005:2;13985:18;;;13978:30;-1:-1:-1;;;14039:2:1;14024:18;;14017:48;14097:2;14082:18;;13938:168::o;14482:128::-;;14553:1;14549:6;14546:1;14543:13;14540:2;;;14559:18;;:::i;:::-;-1:-1:-1;14595:9:1;;14530:80::o;14615:168::-;;14721:1;14717;14713:6;14709:14;14706:1;14703:21;14698:1;14691:9;14684:17;14680:45;14677:2;;;14728:18;;:::i;:::-;-1:-1:-1;14768:9:1;;14667:116::o;14788:125::-;;14856:1;14853;14850:8;14847:2;;;14861:18;;:::i;:::-;-1:-1:-1;14898:9:1;;14837:76::o;14918:135::-;;-1:-1:-1;;14978:17:1;;14975:2;;;14998:18;;:::i;:::-;-1:-1:-1;15045:1:1;15034:13;;14965:88::o;15058:127::-;15119:10;15114:3;15110:20;15107:1;15100:31;15150:4;15147:1;15140:15;15174:4;15171:1;15164:15

Swarm Source

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