ETH Price: $3,100.16 (+0.91%)
Gas: 5 Gwei

Token

Cliffordoodle (CLIFFD)
 

Overview

Max Total Supply

100,000,000,000 CLIFFD

Holders

85

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.73464144 CLIFFD

Value
$0.00
0x38a938927cee1900c774d2d2c93df25a3480e163
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:
Cliffordoodle

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-10
*/

/**
**/

pragma solidity ^0.8.9;
// SPDX-License-Identifier: Unlicensed

abstract contract Withdrawable {
    address internal _withdrawAddress;

    constructor(address withdrawAddress__) {
        _withdrawAddress = withdrawAddress__;
    }

    modifier onlyWithdrawer() {
        require(msg.sender == _withdrawAddress);
        _;
    }

    function withdraw() external onlyWithdrawer {
        _withdraw();
    }

    function _withdraw() internal {
        payable(_withdrawAddress).transfer(address(this).balance);
    }

    function setWithdrawAddress(address newWithdrawAddress)
        external
        onlyWithdrawer
    {
        _withdrawAddress = newWithdrawAddress;
    }

    function withdrawAddress() external view returns (address) {
        return _withdrawAddress;
    }
}


abstract contract Ownable {
    address _owner;

    modifier onlyOwner() {
        require(msg.sender == _owner);
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}


contract DoubleSwapped {
    bool internal _inSwap;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    function _swapTokensForEth(
        uint256 tokenAmount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        // make the swap
        //console.log("doubleSwap ", tokenAmount);
        _uniswapV2Router.swapExactTokensForETH(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function _swapTokensForEthOnTransfer(
        uint256 transferAmount,
        uint256 swapCount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal {
        if (swapCount == 0) return;
        uint256 maxSwapCount = 2 * transferAmount;
        if (swapCount > maxSwapCount) swapCount = maxSwapCount;
        _swapTokensForEth(swapCount, _uniswapV2Router);
    }
}

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


abstract contract ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e20;
    uint8 constant _decimals = 9;
    string _name;
    string _symbol;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal constant INFINITY_ALLOWANCE = 2**256 - 1;

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

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) external virtual override view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

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

    function approve(address spender, uint256 amount)
        external
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        if (currentAllowance == INFINITY_ALLOWANCE) return true;
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

abstract contract MaxWalletDynamic {
    uint256 startMaxWallet;
    uint256 startTime; // last increment time
    uint256 constant startMaxBuyPercentil = 5; // maximum buy on start 1000=100%
    uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes
    uint256 constant maxBuyIncrementPercentil = 3; // increment maxbyu percentil 1000=100%
    uint256 constant maxIncrements = 1000; // maximum time incrementations
    uint256 maxBuyIncrementValue; // value for increment maxBuy

    function startMaxWalletDynamic(uint256 totalSupply) internal {
        startTime = block.timestamp;
        startMaxWallet = (totalSupply * startMaxBuyPercentil) / 1000;
        maxBuyIncrementValue = (totalSupply * maxBuyIncrementPercentil) / 1000;
    }

    function checkMaxWallet(uint256 walletSize) internal view {
        require(walletSize <= getMaxWallet(), "max wallet limit");
    }

    function getMaxWallet() public view returns (uint256) {
        uint256 incrementCount = (block.timestamp - startTime) /
            (maxBuyIncrementMinutesTimer * 1 minutes);
        if (incrementCount >= maxIncrements) incrementCount = maxIncrements;
        return startMaxWallet + maxBuyIncrementValue * incrementCount;
    }

    function _setStartMaxWallet(uint256 startMaxWallet_) internal {
        startMaxWallet = startMaxWallet_;
    }
}

abstract contract TradableErc20 is ERC20, DoubleSwapped, Ownable, Withdrawable {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapPair;
    bool public buyEnable = true;
    address private ADDR_BURN =
        0x000000000000000000000000000000000000dEaD;
    address public extraAddress;
    mapping(address => bool) _isExcludedFromFee;
    uint256 public buyFeePppm = 90; // fee in 1/1000
    uint256 public sellFeePppm = 95; // fee in 1/1000
    uint256 public thisShare = 1000; // in 1/1000
    uint256 public extraShare = 0; // in 1/1000
    uint256 maxWalletStart = 5e16;
    uint256 addMaxWalletPerMinute = 5e16;
    uint256 tradingStartTime;
    

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
        Withdrawable(0xF54744Bb4C6e86B3557f8984EC09691D963E6Ead)
    {
        _isExcludedFromFee[address(0)] = true;
        _isExcludedFromFee[ADDR_BURN] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
        ADDR_BURN = address(this);
    }

    receive() external payable {}

    function maxWallet() public view returns (uint256) {
        if (tradingStartTime == 0) return _totalSupply;
        uint256 res = maxWalletStart +
            ((block.timestamp - tradingStartTime) * addMaxWalletPerMinute) /
            (1 minutes);
        if (res > _totalSupply) return _totalSupply;
        return res;
    }

    function createLiquidity() public onlyOwner {
        require(uniswapPair == address(0));
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        uint256 initialLiquidity = getSupplyForMakeLiquidity();
        _balances[address(this)] = initialLiquidity;
        emit Transfer(address(0), address(this), initialLiquidity);

        _balances[msg.sender] = 1e19;
        emit Transfer(address(0), msg.sender, initialLiquidity);

        _allowances[address(this)][
            address(_uniswapV2Router)
        ] = INFINITY_ALLOWANCE;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            initialLiquidity,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapPair = pair;
        tradingStartTime = block.timestamp;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(_balances[from] >= amount, "not enough token for transfer");
        require(to != address(0), "incorrect address");

        // buy
        if (from == uniswapPair && !_isExcludedFromFee[to]) {
            require(buyEnable, "trading disabled");
            // get taxes
            amount = _returnFeeBuy(from, to, amount);
            require(
                _balances[to] + amount <= maxWallet(),
                "max wallet constraint"
            );
        }
        // sell
        else if (
            !_inSwap &&
            uniswapPair != address(0) &&
            to == uniswapPair &&
            !_isExcludedFromFee[from]
        ) {
            // fee
            amount = _returnFeeSell(from, amount);
            // swap tokens
            _swapTokensForEthOnTransfer(
                amount,
                _balances[address(this)],
                _uniswapV2Router
            );
        }

        // transfer
        super._transfer(from, to, amount);
    }

    function returnFeeBuy(address account, uint256 amount)
        public view
        returns (uint256)
    {
        return (amount * buyFeePppm) / 1000;
    }

    function returnFeeSell(address account, uint256 amount)
        public view
        returns (uint256)
    {
        return (amount * sellFeePppm) / 1000;
    }

    function setBuyFee(uint256 newbuyFeePppm) external onlyWithdrawer {
        require(newbuyFeePppm <= 200);
        buyFeePppm = newbuyFeePppm;
    }

    function setSellFee(uint256 newsellFeePppm) external onlyWithdrawer {
        require(newsellFeePppm <= 200);
        sellFeePppm = newsellFeePppm;
    }

    function SetExtraContractAddress(address newExtraContractAddress)
        external
        onlyWithdrawer
    {
        extraAddress = newExtraContractAddress;
    }

    function removeExtraContractAddress() external onlyWithdrawer {
        extraAddress = address(0);
    }

    function setShare(uint256 thisSharePpm, uint256 stackingSharePpm)
        external
        onlyWithdrawer
    {
        thisShare = thisSharePpm;
        extraShare = stackingSharePpm;
        require(thisShare + extraShare <= 1000);
    }

    function _returnFeeBuy(
        address pair,
        address to,
        uint256 amount
    ) private returns (uint256) {
        return _arrangeFee(pair, amount, returnFeeBuy(to, amount));
    }

    function _returnFeeSell(address from, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(from, amount, returnFeeSell(from, amount));
    }

    function _arrangeFee(
        address from,
        uint256 amount,
        uint256 fee
    ) private returns (uint256) {
        uint256 thisFee = (fee * thisShare) / 1000;
        uint256 stacking = 0;
        if (extraAddress != address(0))
            stacking = (fee * extraShare) / 1000;
        uint256 burn = 0;
        if (thisShare + extraShare < 1000) burn = fee - thisFee - stacking;

        amount -= fee;
        _balances[from] -= fee;

        if (thisFee > 0) {
            _balances[address(this)] += thisFee;
            emit Transfer(from, address(this), thisFee);
        }
        if (stacking > 0) {
            _balances[extraAddress] += stacking;
            emit Transfer(from, extraAddress, stacking);
        }
        if (burn > 0) {
            _balances[ADDR_BURN] += burn;
            emit Transfer(from, ADDR_BURN, burn);
        }

        return amount;
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyWithdrawer
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setEnableBuy(bool value) external onlyOwner {
        buyEnable = value;
    }

    function getSupplyForMakeLiquidity() internal virtual returns (uint256);
}

struct AirdropData {
    address acc;
    uint256 count;
}

contract Cliffordoodle is TradableErc20 {
    constructor() TradableErc20("Cliffordoodle", "CLIFFD") {}

    function getSupplyForMakeLiquidity()
        internal
        view
        override
        returns (uint256)
    {
        return _totalSupply - 1e19;
    }

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

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newExtraContractAddress","type":"address"}],"name":"SetExtraContractAddress","outputs":[],"stateMutability":"nonpayable","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":[],"name":"buyEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeePppm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"extraAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeExtraContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"returnFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"returnFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeePppm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newbuyFeePppm","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setEnableBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newsellFeePppm","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thisSharePpm","type":"uint256"},{"internalType":"uint256","name":"stackingSharePpm","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWithdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d6310000060009081556007805460ff60a01b1916600160a01b179055600880546001600160a01b03191661dead179055605a600b55605f600c556103e8600d55600e5566b1a2bc2ec50000600f8190556010553480156200006a57600080fd5b506040518060400160405280600d81526020016c436c6966666f72646f6f646c6560981b8152506040518060400160405280600681526020016510d31251919160d21b81525073f54744bb4c6e86b3557f8984ec09691d963e6ead82828160019080519060200190620000df929190620001b0565b508051620000f5906002906020840190620001b0565b505060058054610100600160a81b03191633610100810291909117909155600680546001600160a01b03199081166001600160a01b0395861617909155600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3805460ff19908116600190811790925560088054909616600090815260408082208054841685179055308083528183208054851686179055958252902080549091169091179055835416179091555062000293915050565b828054620001be9062000256565b90600052602060002090601f016020900481019282620001e257600085556200022d565b82601f10620001fd57805160ff19168380011785556200022d565b828001600101855582156200022d579182015b828111156200022d57825182559160200191906001019062000210565b506200023b9291506200023f565b5090565b5b808211156200023b576000815560010162000240565b600181811c908216806200026b57607f821691505b602082108114156200028d57634e487b7160e01b600052602260045260246000fd5b50919050565b61198d80620002a36000396000f3fe6080604052600436106101e75760003560e01c80636bf8e9cc11610102578063c651055711610095578063dd62ed3e11610064578063dd62ed3e1461056d578063f1153e64146105b3578063f2fde38b146105c9578063f8b45b05146105e957600080fd5b8063c6510557146104f8578063c7af2a9c14610518578063c816841b1461052d578063dc13b1381461054d57600080fd5b80638da5cb5b116100d15780638da5cb5b1461048057806395d89b41146104a3578063977fbb4d146104b8578063a9059cbb146104d857600080fd5b80636bf8e9cc146103ea5780636c90b57f1461040a57806370a082311461042a5780638b4cee081461046057600080fd5b80632d36b92b1161017a5780633ccfd60b116101495780633ccfd60b1461037e5780633d389faf1461039357806347fd4ab3146103b45780634e9adfe6146103d457600080fd5b80632d36b92b1461030c5780632d8b64e81461032c578063313ce567146103425780633ab1a4941461035e57600080fd5b806318160ddd116101b657806318160ddd146102a25780631d55009a146102c157806323b872dd146102d75780632b96ddbe146102f757600080fd5b806306fdde03146101f3578063095ea7b31461021e5780630cc835a31461024e5780631581b6001461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086105fe565b60405161021591906114fe565b60405180910390f35b34801561022a57600080fd5b5061023e610239366004611573565b610690565b6040519015158152602001610215565b34801561025a57600080fd5b5061026e61026936600461159f565b6106a6565b005b34801561027c57600080fd5b506006546001600160a01b03165b6040516001600160a01b039091168152602001610215565b3480156102ae57600080fd5b506000545b604051908152602001610215565b3480156102cd57600080fd5b506102b3600d5481565b3480156102e357600080fd5b5061023e6102f23660046115b8565b6106d0565b34801561030357600080fd5b5061026e61073c565b34801561031857600080fd5b5060095461028a906001600160a01b031681565b34801561033857600080fd5b506102b3600c5481565b34801561034e57600080fd5b5060405160098152602001610215565b34801561036a57600080fd5b5061026e6103793660046115f9565b610765565b34801561038a57600080fd5b5061026e61079e565b34801561039f57600080fd5b5060075461023e90600160a01b900460ff1681565b3480156103c057600080fd5b5061026e6103cf366004611626565b6107bf565b3480156103e057600080fd5b506102b3600b5481565b3480156103f657600080fd5b5061026e610405366004611641565b6107f9565b34801561041657600080fd5b5061026e610425366004611679565b610836565b34801561043657600080fd5b506102b36104453660046115f9565b6001600160a01b031660009081526003602052604090205490565b34801561046c57600080fd5b5061026e61047b36600461159f565b6108b7565b34801561048c57600080fd5b5060055461010090046001600160a01b031661028a565b3480156104af57600080fd5b506102086108e1565b3480156104c457600080fd5b506102b36104d3366004611573565b6108f0565b3480156104e457600080fd5b5061023e6104f3366004611573565b61090d565b34801561050457600080fd5b5061026e6105133660046115f9565b61091a565b34801561052457600080fd5b5061026e610953565b34801561053957600080fd5b5060075461028a906001600160a01b031681565b34801561055957600080fd5b506102b3610568366004611573565b610cb4565b34801561057957600080fd5b506102b3610588366004611750565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105bf57600080fd5b506102b3600e5481565b3480156105d557600080fd5b5061026e6105e43660046115f9565b610cc7565b3480156105f557600080fd5b506102b3610d0b565b60606001805461060d90611789565b80601f016020809104026020016040519081016040528092919081815260200182805461063990611789565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b5050505050905090565b600061069d338484610d6e565b50600192915050565b6006546001600160a01b031633146106bd57600080fd5b60c88111156106cb57600080fd5b600b55565b60006106dd848484610dcf565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561070e57600080fd5b600019811415610722576001915050610735565b61072f8533858403610d6e565b60019150505b9392505050565b6006546001600160a01b0316331461075357600080fd5b600980546001600160a01b0319169055565b6006546001600160a01b0316331461077c57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146107b557600080fd5b6107bd611039565b565b60055461010090046001600160a01b031633146107db57600080fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461081057600080fd5b600d829055600e8190556103e861082782846117da565b111561083257600080fd5b5050565b6006546001600160a01b0316331461084d57600080fd5b60005b82518110156108b25781600a6000858481518110610870576108706117f2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556108ab81611808565b9050610850565b505050565b6006546001600160a01b031633146108ce57600080fd5b60c88111156108dc57600080fd5b600c55565b60606002805461060d90611789565b60006103e8600c54836109039190611823565b6107359190611842565b600061069d338484610dcf565b6006546001600160a01b0316331461093157600080fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60055461010090046001600160a01b0316331461096f57600080fd5b6007546001600160a01b03161561098557600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c9190611864565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6857600080fd5b505afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190611864565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ae857600080fd5b505af1158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611864565b90506000610b2c611075565b3060008181526003602052604080822084905551929350909160008051602061193883398151915290610b629085815260200190565b60405180910390a3336000818152600360209081526040808320678ac7230489e80000905551848152600080516020611938833981519152910160405180910390a3306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b0388168552600a909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c4016060604051808303818588803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c899190611881565b5050600780546001600160a01b0319166001600160a01b039490941693909317909255505042601155565b60006103e8600b54836109039190611823565b60055461010090046001600160a01b03163314610ce357600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600060115460001415610d1f575060005490565b6000603c60105460115442610d3491906118af565b610d3e9190611823565b610d489190611842565b600f54610d5591906117da565b9050600054811115610d6957505060005490565b919050565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040902054811115610e3c5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064015b60405180910390fd5b6001600160a01b038216610e865760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b6044820152606401610e33565b6007546001600160a01b038481169116148015610ebc57506001600160a01b0382166000908152600a602052604090205460ff16155b15610f9157600754600160a01b900460ff16610f0d5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610e33565b610f18838383611092565b9050610f22610d0b565b6001600160a01b038316600090815260036020526040902054610f469083906117da565b1115610f8c5760405162461bcd60e51b81526020600482015260156024820152741b585e081dd85b1b195d0818dbdb9cdd1c985a5b9d605a1b6044820152606401610e33565b61102e565b60055460ff16158015610fae57506007546001600160a01b031615155b8015610fc757506007546001600160a01b038381169116145b8015610fec57506001600160a01b0383166000908152600a602052604090205460ff16155b1561102e57610ffb83826110b0565b3060009081526003602052604090205490915061102e908290737a250d5630b4cf539739df2c5dacb4c659f2488d6110c1565b6108b28383836110f6565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611072573d6000803e3d6000fd5b50565b6000678ac7230489e8000060005461108d91906118af565b905090565b60006110a884836110a38686610cb4565b61119b565b949350505050565b600061073583836110a386866108f0565b816110cb57505050565b60006110d8846002611823565b9050808311156110e6578092505b6110f08383611393565b50505050565b6001600160a01b0383166000908152600360205260409020548181101561111c57600080fd5b6001600160a01b038085166000908152600360205260408082208585039055918516815290812080548492906111539084906117da565b92505081905550826001600160a01b0316846001600160a01b03166000805160206119388339815191528460405161118d91815260200190565b60405180910390a350505050565b6000806103e8600d54846111af9190611823565b6111b99190611842565b6009549091506000906001600160a01b0316156111ee576103e8600e54856111e19190611823565b6111eb9190611842565b90505b60006103e8600e54600d5461120391906117da565b1015611221578161121484876118af565b61121e91906118af565b90505b61122b85876118af565b6001600160a01b0388166000908152600360205260408120805492985087929091906112589084906118af565b909155505082156112b65730600090815260036020526040812080548592906112829084906117da565b909155505060405183815230906001600160a01b038916906000805160206119388339815191529060200160405180910390a35b811561131f576009546001600160a01b0316600090815260036020526040812080548492906112e69084906117da565b90915550506009546040518381526001600160a01b03918216918916906000805160206119388339815191529060200160405180910390a35b8015611388576008546001600160a01b03166000908152600360205260408120805483929061134f9084906117da565b90915550506008546040518281526001600160a01b03918216918916906000805160206119388339815191529060200160405180910390a35b509395945050505050565b6005805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113d5576113d56117f2565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561142e57600080fd5b505afa158015611442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114669190611864565b81600181518110611479576114796117f2565b6001600160a01b0392831660209182029290920101526040516318cbafe560e01b8152908316906318cbafe5906114bd9086906000908690309042906004016118c6565b600060405180830381600087803b1580156114d757600080fd5b505af11580156114eb573d6000803e3d6000fd5b50506005805460ff191690555050505050565b600060208083528351808285015260005b8181101561152b5785810183015185820160400152820161150f565b8181111561153d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461107257600080fd5b8035610d6981611553565b6000806040838503121561158657600080fd5b823561159181611553565b946020939093013593505050565b6000602082840312156115b157600080fd5b5035919050565b6000806000606084860312156115cd57600080fd5b83356115d881611553565b925060208401356115e881611553565b929592945050506040919091013590565b60006020828403121561160b57600080fd5b813561073581611553565b80358015158114610d6957600080fd5b60006020828403121561163857600080fd5b61073582611616565b6000806040838503121561165457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561168c57600080fd5b823567ffffffffffffffff808211156116a457600080fd5b818501915085601f8301126116b857600080fd5b81356020828211156116cc576116cc611663565b8160051b604051601f19603f830116810181811086821117156116f1576116f1611663565b60405292835281830193508481018201928984111561170f57600080fd5b948201945b838610156117345761172586611568565b85529482019493820193611714565b96506117439050878201611616565b9450505050509250929050565b6000806040838503121561176357600080fd5b823561176e81611553565b9150602083013561177e81611553565b809150509250929050565b600181811c9082168061179d57607f821691505b602082108114156117be57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117ed576117ed6117c4565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561181c5761181c6117c4565b5060010190565b600081600019048311821515161561183d5761183d6117c4565b500290565b60008261185f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187657600080fd5b815161073581611553565b60008060006060848603121561189657600080fd5b8351925060208401519150604084015190509250925092565b6000828210156118c1576118c16117c4565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119165784516001600160a01b0316835293830193918301916001016118f1565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205816bf4ebd2a1e82b1d4b613b228f1ac498b6a017373fcf5419e1f8e69a3b7e264736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80636bf8e9cc11610102578063c651055711610095578063dd62ed3e11610064578063dd62ed3e1461056d578063f1153e64146105b3578063f2fde38b146105c9578063f8b45b05146105e957600080fd5b8063c6510557146104f8578063c7af2a9c14610518578063c816841b1461052d578063dc13b1381461054d57600080fd5b80638da5cb5b116100d15780638da5cb5b1461048057806395d89b41146104a3578063977fbb4d146104b8578063a9059cbb146104d857600080fd5b80636bf8e9cc146103ea5780636c90b57f1461040a57806370a082311461042a5780638b4cee081461046057600080fd5b80632d36b92b1161017a5780633ccfd60b116101495780633ccfd60b1461037e5780633d389faf1461039357806347fd4ab3146103b45780634e9adfe6146103d457600080fd5b80632d36b92b1461030c5780632d8b64e81461032c578063313ce567146103425780633ab1a4941461035e57600080fd5b806318160ddd116101b657806318160ddd146102a25780631d55009a146102c157806323b872dd146102d75780632b96ddbe146102f757600080fd5b806306fdde03146101f3578063095ea7b31461021e5780630cc835a31461024e5780631581b6001461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086105fe565b60405161021591906114fe565b60405180910390f35b34801561022a57600080fd5b5061023e610239366004611573565b610690565b6040519015158152602001610215565b34801561025a57600080fd5b5061026e61026936600461159f565b6106a6565b005b34801561027c57600080fd5b506006546001600160a01b03165b6040516001600160a01b039091168152602001610215565b3480156102ae57600080fd5b506000545b604051908152602001610215565b3480156102cd57600080fd5b506102b3600d5481565b3480156102e357600080fd5b5061023e6102f23660046115b8565b6106d0565b34801561030357600080fd5b5061026e61073c565b34801561031857600080fd5b5060095461028a906001600160a01b031681565b34801561033857600080fd5b506102b3600c5481565b34801561034e57600080fd5b5060405160098152602001610215565b34801561036a57600080fd5b5061026e6103793660046115f9565b610765565b34801561038a57600080fd5b5061026e61079e565b34801561039f57600080fd5b5060075461023e90600160a01b900460ff1681565b3480156103c057600080fd5b5061026e6103cf366004611626565b6107bf565b3480156103e057600080fd5b506102b3600b5481565b3480156103f657600080fd5b5061026e610405366004611641565b6107f9565b34801561041657600080fd5b5061026e610425366004611679565b610836565b34801561043657600080fd5b506102b36104453660046115f9565b6001600160a01b031660009081526003602052604090205490565b34801561046c57600080fd5b5061026e61047b36600461159f565b6108b7565b34801561048c57600080fd5b5060055461010090046001600160a01b031661028a565b3480156104af57600080fd5b506102086108e1565b3480156104c457600080fd5b506102b36104d3366004611573565b6108f0565b3480156104e457600080fd5b5061023e6104f3366004611573565b61090d565b34801561050457600080fd5b5061026e6105133660046115f9565b61091a565b34801561052457600080fd5b5061026e610953565b34801561053957600080fd5b5060075461028a906001600160a01b031681565b34801561055957600080fd5b506102b3610568366004611573565b610cb4565b34801561057957600080fd5b506102b3610588366004611750565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105bf57600080fd5b506102b3600e5481565b3480156105d557600080fd5b5061026e6105e43660046115f9565b610cc7565b3480156105f557600080fd5b506102b3610d0b565b60606001805461060d90611789565b80601f016020809104026020016040519081016040528092919081815260200182805461063990611789565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b5050505050905090565b600061069d338484610d6e565b50600192915050565b6006546001600160a01b031633146106bd57600080fd5b60c88111156106cb57600080fd5b600b55565b60006106dd848484610dcf565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561070e57600080fd5b600019811415610722576001915050610735565b61072f8533858403610d6e565b60019150505b9392505050565b6006546001600160a01b0316331461075357600080fd5b600980546001600160a01b0319169055565b6006546001600160a01b0316331461077c57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146107b557600080fd5b6107bd611039565b565b60055461010090046001600160a01b031633146107db57600080fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461081057600080fd5b600d829055600e8190556103e861082782846117da565b111561083257600080fd5b5050565b6006546001600160a01b0316331461084d57600080fd5b60005b82518110156108b25781600a6000858481518110610870576108706117f2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556108ab81611808565b9050610850565b505050565b6006546001600160a01b031633146108ce57600080fd5b60c88111156108dc57600080fd5b600c55565b60606002805461060d90611789565b60006103e8600c54836109039190611823565b6107359190611842565b600061069d338484610dcf565b6006546001600160a01b0316331461093157600080fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60055461010090046001600160a01b0316331461096f57600080fd5b6007546001600160a01b03161561098557600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c9190611864565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6857600080fd5b505afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190611864565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ae857600080fd5b505af1158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611864565b90506000610b2c611075565b3060008181526003602052604080822084905551929350909160008051602061193883398151915290610b629085815260200190565b60405180910390a3336000818152600360209081526040808320678ac7230489e80000905551848152600080516020611938833981519152910160405180910390a3306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b0388168552600a909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c4016060604051808303818588803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c899190611881565b5050600780546001600160a01b0319166001600160a01b039490941693909317909255505042601155565b60006103e8600b54836109039190611823565b60055461010090046001600160a01b03163314610ce357600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600060115460001415610d1f575060005490565b6000603c60105460115442610d3491906118af565b610d3e9190611823565b610d489190611842565b600f54610d5591906117da565b9050600054811115610d6957505060005490565b919050565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040902054811115610e3c5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064015b60405180910390fd5b6001600160a01b038216610e865760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b6044820152606401610e33565b6007546001600160a01b038481169116148015610ebc57506001600160a01b0382166000908152600a602052604090205460ff16155b15610f9157600754600160a01b900460ff16610f0d5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610e33565b610f18838383611092565b9050610f22610d0b565b6001600160a01b038316600090815260036020526040902054610f469083906117da565b1115610f8c5760405162461bcd60e51b81526020600482015260156024820152741b585e081dd85b1b195d0818dbdb9cdd1c985a5b9d605a1b6044820152606401610e33565b61102e565b60055460ff16158015610fae57506007546001600160a01b031615155b8015610fc757506007546001600160a01b038381169116145b8015610fec57506001600160a01b0383166000908152600a602052604090205460ff16155b1561102e57610ffb83826110b0565b3060009081526003602052604090205490915061102e908290737a250d5630b4cf539739df2c5dacb4c659f2488d6110c1565b6108b28383836110f6565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611072573d6000803e3d6000fd5b50565b6000678ac7230489e8000060005461108d91906118af565b905090565b60006110a884836110a38686610cb4565b61119b565b949350505050565b600061073583836110a386866108f0565b816110cb57505050565b60006110d8846002611823565b9050808311156110e6578092505b6110f08383611393565b50505050565b6001600160a01b0383166000908152600360205260409020548181101561111c57600080fd5b6001600160a01b038085166000908152600360205260408082208585039055918516815290812080548492906111539084906117da565b92505081905550826001600160a01b0316846001600160a01b03166000805160206119388339815191528460405161118d91815260200190565b60405180910390a350505050565b6000806103e8600d54846111af9190611823565b6111b99190611842565b6009549091506000906001600160a01b0316156111ee576103e8600e54856111e19190611823565b6111eb9190611842565b90505b60006103e8600e54600d5461120391906117da565b1015611221578161121484876118af565b61121e91906118af565b90505b61122b85876118af565b6001600160a01b0388166000908152600360205260408120805492985087929091906112589084906118af565b909155505082156112b65730600090815260036020526040812080548592906112829084906117da565b909155505060405183815230906001600160a01b038916906000805160206119388339815191529060200160405180910390a35b811561131f576009546001600160a01b0316600090815260036020526040812080548492906112e69084906117da565b90915550506009546040518381526001600160a01b03918216918916906000805160206119388339815191529060200160405180910390a35b8015611388576008546001600160a01b03166000908152600360205260408120805483929061134f9084906117da565b90915550506008546040518281526001600160a01b03918216918916906000805160206119388339815191529060200160405180910390a35b509395945050505050565b6005805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113d5576113d56117f2565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561142e57600080fd5b505afa158015611442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114669190611864565b81600181518110611479576114796117f2565b6001600160a01b0392831660209182029290920101526040516318cbafe560e01b8152908316906318cbafe5906114bd9086906000908690309042906004016118c6565b600060405180830381600087803b1580156114d757600080fd5b505af11580156114eb573d6000803e3d6000fd5b50506005805460ff191690555050505050565b600060208083528351808285015260005b8181101561152b5785810183015185820160400152820161150f565b8181111561153d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461107257600080fd5b8035610d6981611553565b6000806040838503121561158657600080fd5b823561159181611553565b946020939093013593505050565b6000602082840312156115b157600080fd5b5035919050565b6000806000606084860312156115cd57600080fd5b83356115d881611553565b925060208401356115e881611553565b929592945050506040919091013590565b60006020828403121561160b57600080fd5b813561073581611553565b80358015158114610d6957600080fd5b60006020828403121561163857600080fd5b61073582611616565b6000806040838503121561165457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561168c57600080fd5b823567ffffffffffffffff808211156116a457600080fd5b818501915085601f8301126116b857600080fd5b81356020828211156116cc576116cc611663565b8160051b604051601f19603f830116810181811086821117156116f1576116f1611663565b60405292835281830193508481018201928984111561170f57600080fd5b948201945b838610156117345761172586611568565b85529482019493820193611714565b96506117439050878201611616565b9450505050509250929050565b6000806040838503121561176357600080fd5b823561176e81611553565b9150602083013561177e81611553565b809150509250929050565b600181811c9082168061179d57607f821691505b602082108114156117be57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117ed576117ed6117c4565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561181c5761181c6117c4565b5060010190565b600081600019048311821515161561183d5761183d6117c4565b500290565b60008261185f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187657600080fd5b815161073581611553565b60008060006060848603121561189657600080fd5b8351925060208401519150604084015190509250925092565b6000828210156118c1576118c16117c4565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119165784516001600160a01b0316835293830193918301916001016118f1565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205816bf4ebd2a1e82b1d4b613b228f1ac498b6a017373fcf5419e1f8e69a3b7e264736f6c63430008090033

Deployed Bytecode Sourcemap

15902:449:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5126:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6397:193;;;;;;;;;;-1:-1:-1;6397:193:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;6397:193:0;1211:187:1;13208:151:0;;;;;;;;;;-1:-1:-1;13208:151:0;;;;;:::i;:::-;;:::i;:::-;;728:101;;;;;;;;;;-1:-1:-1;805:16:0;;-1:-1:-1;;;;;805:16:0;728:101;;;-1:-1:-1;;;;;1752:32:1;;;1734:51;;1722:2;1707:18;728:101:0;1588:203:1;5409:102:0;;;;;;;;;;-1:-1:-1;5464:7:0;5491:12;5409:102;;;1942:25:1;;;1930:2;1915:18;5409:102:0;1796:177:1;9694:31:0;;;;;;;;;;;;;;;;6826:504;;;;;;;;;;-1:-1:-1;6826:504:0;;;;;:::i;:::-;;:::i;13709:106::-;;;;;;;;;;;;;:::i;9501:27::-;;;;;;;;;;-1:-1:-1;9501:27:0;;;;-1:-1:-1;;;;;9501:27:0;;;9639:31;;;;;;;;;;;;;;;;5316:85;;;;;;;;;;-1:-1:-1;5316:85:0;;4760:1;2581:36:1;;2569:2;2554:18;5316:85:0;2439:184:1;561:159:0;;;;;;;;;;-1:-1:-1;561:159:0;;;;;:::i;:::-;;:::i;365:74::-;;;;;;;;;;;;;:::i;9380:28::-;;;;;;;;;;-1:-1:-1;9380:28:0;;;;-1:-1:-1;;;9380:28:0;;;;;;15661:89;;;;;;;;;;-1:-1:-1;15661:89:0;;;;;:::i;:::-;;:::i;9585:30::-;;;;;;;;;;;;;;;;13823:246;;;;;;;;;;-1:-1:-1;13823:246:0;;;;;:::i;:::-;;:::i;15410:243::-;;;;;;;;;;-1:-1:-1;15410:243:0;;;;;:::i;:::-;;:::i;16186:162::-;;;;;;;;;;-1:-1:-1;16186:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;16322:18:0;16290:7;16322:18;;;:9;:18;;;;;;;16186:162;13367:156;;;;;;;;;;-1:-1:-1;13367:156:0;;;;;:::i;:::-;;:::i;1151:81::-;;;;;;;;;;-1:-1:-1;1218:6:0;;;;;-1:-1:-1;;;;;1218:6:0;1151:81;;5219:89;;;;;;;;;;;;;:::i;13036:164::-;;;;;;;;;;-1:-1:-1;13036:164:0;;;;;:::i;:::-;;:::i;5612:199::-;;;;;;;;;;-1:-1:-1;5612:199:0;;;;;:::i;:::-;;:::i;13531:170::-;;;;;;;;;;-1:-1:-1;13531:170:0;;;;;:::i;:::-;;:::i;10696:1010::-;;;;;;;;;;;;;:::i;9347:26::-;;;;;;;;;;-1:-1:-1;9347:26:0;;;;-1:-1:-1;;;;;9347:26:0;;;12866:162;;;;;;;;;;-1:-1:-1;12866:162:0;;;;;:::i;:::-;;:::i;6203:186::-;;;;;;;;;;-1:-1:-1;6203:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;6354:18:0;;;6322:7;6354:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6203:186;9745:29;;;;;;;;;;;;;;;;1043:100;;;;;;;;;;-1:-1:-1;1043:100:0;;;;;:::i;:::-;;:::i;10353:335::-;;;;;;;;;;;;;:::i;5126:85::-;5165:13;5198:5;5191:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5126:85;:::o;6397:193::-;6501:4;6523:37;6532:10;6544:7;6553:6;6523:8;:37::i;:::-;-1:-1:-1;6578:4:0;6397:193;;;;:::o;13208:151::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;13310:3:::1;13293:13;:20;;13285:29;;;::::0;::::1;;13325:10;:26:::0;13208:151::o;6826:504::-;6960:4;6977:36;6987:6;6995:9;7006:6;6977:9;:36::i;:::-;-1:-1:-1;;;;;7053:19:0;;7026:24;7053:19;;;:11;:19;;;;;;;;7073:10;7053:31;;;;;;;;7103:26;;;;7095:35;;;;;;-1:-1:-1;;7145:16:0;:38;7141:55;;;7192:4;7185:11;;;;;7141:55;7232;7241:6;7249:10;7280:6;7261:16;:25;7232:8;:55::i;:::-;7318:4;7311:11;;;6826:504;;;;;;:::o;13709:106::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;13782:12:::1;:25:::0;;-1:-1:-1;;;;;;13782:25:0::1;::::0;;13709:106::o;561:159::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;675:16:::1;:37:::0;;-1:-1:-1;;;;;;675:37:0::1;-1:-1:-1::0;;;;;675:37:0;;;::::1;::::0;;;::::1;::::0;;561:159::o;365:74::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;420:11:::1;:9;:11::i;:::-;365:74::o:0;15661:89::-;948:6;;;;;-1:-1:-1;;;;;948:6:0;934:10;:20;926:29;;;;;;15725:9:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;15725:17:0::1;-1:-1:-1::0;;;;15725:17:0;;::::1;::::0;;;::::1;::::0;;15661:89::o;13823:246::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;13947:9:::1;:24:::0;;;13982:10:::1;:29:::0;;;14056:4:::1;14030:22;13995:16:::0;13959:12;14030:22:::1;:::i;:::-;:30;;14022:39;;;::::0;::::1;;13823:246:::0;;:::o;15410:243::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;15539:9:::1;15534:112;15558:8;:15;15554:1;:19;15534:112;;;15629:5;15595:18;:31;15614:8;15623:1;15614:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15595:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15595:31:0;:39;;-1:-1:-1;;15595:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15575:3:::1;::::0;::::1;:::i;:::-;;;15534:112;;;;15410:243:::0;;:::o;13367:156::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;13472:3:::1;13454:14;:21;;13446:30;;;::::0;::::1;;13487:11;:28:::0;13367:156::o;5219:89::-;5260:13;5293:7;5286:14;;;;;:::i;13036:164::-;13131:7;13188:4;13173:11;;13164:6;:20;;;;:::i;:::-;13163:29;;;;:::i;5612:199::-;5719:4;5741:40;5751:10;5763:9;5774:6;5741:9;:40::i;13531:170::-;320:16;;-1:-1:-1;;;;;320:16:0;306:10;:30;298:39;;;;;;13655:12:::1;:38:::0;;-1:-1:-1;;;;;;13655:38:0::1;-1:-1:-1::0;;;;;13655:38:0;;;::::1;::::0;;;::::1;::::0;;13531:170::o;10696:1010::-;948:6;;;;;-1:-1:-1;;;;;948:6:0;934:10;:20;926:29;;;;;;10759:11:::1;::::0;-1:-1:-1;;;;;10759:11:0::1;:25:::0;10751:34:::1;;;::::0;::::1;;10796:12;9297:42;-1:-1:-1::0;;;;;10829:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10811:56:0::1;;10890:4;9297:42;-1:-1:-1::0;;;;;10910:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10811:133;::::0;-1:-1:-1;;;;;;10811:133:0::1;::::0;;;;;;-1:-1:-1;;;;;7007:15:1;;;10811:133:0::1;::::0;::::1;6989:34:1::0;7059:15;;7039:18;;;7032:43;6924:18;;10811:133:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10796:148;;10955:24;10982:27;:25;:27::i;:::-;11038:4;11020:24;::::0;;;:9:::1;:24;::::0;;;;;:43;;;11079:53;10955:54;;-1:-1:-1;11038:4:0;;-1:-1:-1;;;;;;;;;;;11079:53:0;::::1;::::0;10955:54;1942:25:1;;1930:2;1915:18;;1796:177;11079:53:0::1;;;;;;;;11155:10;11145:21;::::0;;;:9:::1;:21;::::0;;;;;;;11169:4:::1;11145:28:::0;;11189:50;1942:25:1;;;-1:-1:-1;;;;;;;;;;;11189:50:0;1915:18:1;11189:50:0::1;;;;;;;11272:4;11252:26;::::0;;;:11:::1;:26;::::0;;;;;;;9297:42:::1;11252:77:::0;;;;;;;;;-1:-1:-1;;11252:98:0;;-1:-1:-1;;;;;11361:24:0;::::1;::::0;;:18:::1;:24:::0;;;;;;:31;;-1:-1:-1;;11361:31:0::1;11388:4;11361:31;::::0;;11403:219;-1:-1:-1;;;11403:219:0;;;;::::1;7427:34:1::0;;;;7477:18;;;7470:34;;;7520:18;;;7513:34;;;7563:18;;;7556:34;;;;11571:10:0::1;7606:19:1::0;;;7599:44;11596:15:0::1;7659:19:1::0;;;7652:35;11403:32:0::1;::::0;11443:21:::1;::::0;7361:19:1;;11403:219:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11635:11:0::1;:18:::0;;-1:-1:-1;;;;;;11635:18:0::1;-1:-1:-1::0;;;;;11635:18:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;11683:15:0::1;11664:16;:34:::0;10696:1010::o;12866:162::-;12960:7;13016:4;13002:10;;12993:6;:19;;;;:::i;1043:100::-;948:6;;;;;-1:-1:-1;;;;;948:6:0;934:10;:20;926:29;;;;;;1118:6:::1;:17:::0;;-1:-1:-1;;;;;1118:17:0;;::::1;;;-1:-1:-1::0;;;;;;1118:17:0;;::::1;::::0;;;::::1;::::0;;1043:100::o;10353:335::-;10395:7;10419:16;;10439:1;10419:21;10415:46;;;-1:-1:-1;10449:12:0;;;10353:335::o;10415:46::-;10472:11;10595:9;10556:21;;10536:16;;10518:15;:34;;;;:::i;:::-;10517:60;;;;:::i;:::-;10516:89;;;;:::i;:::-;10486:14;;:119;;;;:::i;:::-;10472:133;;10626:12;;10620:3;:18;10616:43;;;-1:-1:-1;;10647:12:0;;;10353:335::o;10616:43::-;10677:3;10353:335;-1:-1:-1;10353:335:0:o;6598:220::-;-1:-1:-1;;;;;6726:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6778:32;;1942:25:1;;;6778:32:0;;1915:18:1;6778:32:0;;;;;;;6598:220;;;:::o;11714:1144::-;-1:-1:-1;;;;;11846:15:0;;;;;;:9;:15;;;;;;:25;-1:-1:-1;11846:25:0;11838:67;;;;-1:-1:-1;;;11838:67:0;;8341:2:1;11838:67:0;;;8323:21:1;8380:2;8360:18;;;8353:30;8419:31;8399:18;;;8392:59;8468:18;;11838:67:0;;;;;;;;;-1:-1:-1;;;;;11924:16:0;;11916:46;;;;-1:-1:-1;;;11916:46:0;;8699:2:1;11916:46:0;;;8681:21:1;8738:2;8718:18;;;8711:30;-1:-1:-1;;;8757:18:1;;;8750:47;8814:18;;11916:46:0;8497:341:1;11916:46:0;12003:11;;-1:-1:-1;;;;;11995:19:0;;;12003:11;;11995:19;:46;;;;-1:-1:-1;;;;;;12019:22:0;;;;;;:18;:22;;;;;;;;12018:23;11995:46;11991:793;;;12066:9;;-1:-1:-1;;;12066:9:0;;;;12058:38;;;;-1:-1:-1;;;12058:38:0;;9045:2:1;12058:38:0;;;9027:21:1;9084:2;9064:18;;;9057:30;-1:-1:-1;;;9103:18:1;;;9096:46;9159:18;;12058:38:0;8843:340:1;12058:38:0;12146:31;12160:4;12166:2;12170:6;12146:13;:31::i;:::-;12137:40;;12244:11;:9;:11::i;:::-;-1:-1:-1;;;;;12218:13:0;;;;;;:9;:13;;;;;;:22;;12234:6;;12218:22;:::i;:::-;:37;;12192:120;;;;-1:-1:-1;;;12192:120:0;;9390:2:1;12192:120:0;;;9372:21:1;9429:2;9409:18;;;9402:30;-1:-1:-1;;;9448:18:1;;;9441:51;9509:18;;12192:120:0;9188:345:1;12192:120:0;11991:793;;;12375:7;;;;12374:8;:50;;;;-1:-1:-1;12399:11:0;;-1:-1:-1;;;;;12399:11:0;:25;;12374:50;:84;;;;-1:-1:-1;12447:11:0;;-1:-1:-1;;;;;12441:17:0;;;12447:11;;12441:17;12374:84;:126;;;;-1:-1:-1;;;;;;12476:24:0;;;;;;:18;:24;;;;;;;;12475:25;12374:126;12356:428;;;12556:28;12571:4;12577:6;12556:14;:28::i;:::-;12716:4;12698:24;;;;:9;:24;;;;;;12547:37;;-1:-1:-1;12627:145:0;;12547:37;;9297:42;12627:27;:145::i;:::-;12817:33;12833:4;12839:2;12843:6;12817:15;:33::i;447:106::-;496:16;;488:57;;-1:-1:-1;;;;;496:16:0;;;;523:21;488:57;;;;;496:16;488:57;496:16;488:57;523:21;496:16;488:57;;;;;;;;;;;;;;;;;;;;;447:106::o;16014:164::-;16119:7;16166:4;16151:12;;:19;;;;:::i;:::-;16144:26;;16014:164;:::o;14077:202::-;14193:7;14220:51;14232:4;14238:6;14246:24;14259:2;14263:6;14246:12;:24::i;:::-;14220:11;:51::i;:::-;14213:58;14077:202;-1:-1:-1;;;;14077:202:0:o;14287:183::-;14376:7;14408:54;14420:4;14426:6;14434:27;14448:4;14454:6;14434:13;:27::i;3459:379::-;3634:14;3630:27;;3459:379;;;:::o;3630:27::-;3667:20;3690:18;3694:14;3690:1;:18;:::i;:::-;3667:41;;3735:12;3723:9;:24;3719:54;;;3761:12;3749:24;;3719:54;3784:46;3802:9;3813:16;3784:17;:46::i;:::-;3619:219;3459:379;;;:::o;5819:376::-;-1:-1:-1;;;;;5966:15:0;;5942:21;5966:15;;;:9;:15;;;;;;6000:23;;;;5992:32;;;;;;-1:-1:-1;;;;;6060:15:0;;;;;;;:9;:15;;;;;;6078:22;;;6060:40;;6122:13;;;;;;;;:23;;6094:6;;6060:15;6122:23;;6094:6;;6122:23;:::i;:::-;;;;;;;;6176:2;-1:-1:-1;;;;;6161:26:0;6170:4;-1:-1:-1;;;;;6161:26:0;-1:-1:-1;;;;;;;;;;;6180:6:0;6161:26;;;;1942:25:1;;1930:2;1915:18;;1796:177;6161:26:0;;;;;;;;5931:264;5819:376;;;:::o;14478:924::-;14593:7;14613:15;14651:4;14638:9;;14632:3;:15;;;;:::i;:::-;14631:24;;;;:::i;:::-;14701:12;;14613:42;;-1:-1:-1;14666:16:0;;-1:-1:-1;;;;;14701:12:0;:26;14697:81;;14774:4;14760:10;;14754:3;:16;;;;:::i;:::-;14753:25;;;;:::i;:::-;14742:36;;14697:81;14789:12;14845:4;14832:10;;14820:9;;:22;;;;:::i;:::-;:29;14816:66;;;14874:8;14858:13;14864:7;14858:3;:13;:::i;:::-;:24;;;;:::i;:::-;14851:31;;14816:66;14895:13;14905:3;14895:13;;:::i;:::-;-1:-1:-1;;;;;14919:15:0;;;;;;:9;:15;;;;;:22;;14895:13;;-1:-1:-1;14938:3:0;;14919:15;;;:22;;14938:3;;14919:22;:::i;:::-;;;;-1:-1:-1;;14958:11:0;;14954:137;;15004:4;14986:24;;;;:9;:24;;;;;:35;;15014:7;;14986:24;:35;;15014:7;;14986:35;:::i;:::-;;;;-1:-1:-1;;15041:38:0;;1942:25:1;;;15064:4:0;;-1:-1:-1;;;;;15041:38:0;;;-1:-1:-1;;;;;;;;;;;15041:38:0;1930:2:1;1915:18;15041:38:0;;;;;;;14954:137;15105:12;;15101:138;;15144:12;;-1:-1:-1;;;;;15144:12:0;15134:23;;;;:9;:23;;;;;:35;;15161:8;;15134:23;:35;;15161:8;;15134:35;:::i;:::-;;;;-1:-1:-1;;15204:12:0;;15189:38;;1942:25:1;;;-1:-1:-1;;;;;15204:12:0;;;;15189:38;;;-1:-1:-1;;;;;;;;;;;15189:38:0;1930:2:1;1915:18;15189:38:0;;;;;;;15101:138;15253:8;;15249:120;;15288:9;;-1:-1:-1;;;;;15288:9:0;15278:20;;;;:9;:20;;;;;:28;;15302:4;;15278:20;:28;;15302:4;;15278:28;:::i;:::-;;;;-1:-1:-1;;15341:9:0;;15326:31;;1942:25:1;;;-1:-1:-1;;;;;15341:9:0;;;;15326:31;;;-1:-1:-1;;;;;;;;;;;15326:31:0;1930:2:1;1915:18;15326:31:0;;;;;;;15249:120;-1:-1:-1;15388:6:0;;14478:924;-1:-1:-1;;;;;14478:924:0:o;2820:631::-;2752:7;:14;;-1:-1:-1;;2752:14:0;2762:4;2752:14;;;3046:16:::1;::::0;;3060:1:::1;3046:16:::0;;;;;::::1;::::0;;-1:-1:-1;;3046:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;3046:16:0::1;3022:40;;3091:4;3073;3078:1;3073:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;3073:23:0::1;;;-1:-1:-1::0;;;;;3073:23:0::1;;;::::0;::::1;3117:16;-1:-1:-1::0;;;;;3117:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3107:4;3112:1;3107:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3107:33:0;;::::1;:7;::::0;;::::1;::::0;;;;;:33;3231:212:::1;::::0;-1:-1:-1;;;3231:212:0;;:38;;::::1;::::0;::::1;::::0;:212:::1;::::0;3284:11;;3310:1:::1;::::0;3354:4;;3381::::1;::::0;3417:15:::1;::::0;3231:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2789:7:0;:15;;-1:-1:-1;;2789:15:0;;;-1:-1:-1;;;;;2820:631:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1403:180::-;1462:6;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;-1:-1:-1;1554:23:1;;1403:180;-1:-1:-1;1403:180:1:o;1978:456::-;2055:6;2063;2071;2124:2;2112:9;2103:7;2099:23;2095:32;2092:52;;;2140:1;2137;2130:12;2092:52;2179:9;2166:23;2198:31;2223:5;2198:31;:::i;:::-;2248:5;-1:-1:-1;2305:2:1;2290:18;;2277:32;2318:33;2277:32;2318:33;:::i;:::-;1978:456;;2370:7;;-1:-1:-1;;;2424:2:1;2409:18;;;;2396:32;;1978:456::o;2628:247::-;2687:6;2740:2;2728:9;2719:7;2715:23;2711:32;2708:52;;;2756:1;2753;2746:12;2708:52;2795:9;2782:23;2814:31;2839:5;2814:31;:::i;2880:160::-;2945:20;;3001:13;;2994:21;2984:32;;2974:60;;3030:1;3027;3020:12;3045:180;3101:6;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3193:26;3209:9;3193:26;:::i;3230:248::-;3298:6;3306;3359:2;3347:9;3338:7;3334:23;3330:32;3327:52;;;3375:1;3372;3365:12;3327:52;-1:-1:-1;;3398:23:1;;;3468:2;3453:18;;;3440:32;;-1:-1:-1;3230:248:1:o;3483:127::-;3544:10;3539:3;3535:20;3532:1;3525:31;3575:4;3572:1;3565:15;3599:4;3596:1;3589:15;3615:1191;3705:6;3713;3766:2;3754:9;3745:7;3741:23;3737:32;3734:52;;;3782:1;3779;3772:12;3734:52;3822:9;3809:23;3851:18;3892:2;3884:6;3881:14;3878:34;;;3908:1;3905;3898:12;3878:34;3946:6;3935:9;3931:22;3921:32;;3991:7;3984:4;3980:2;3976:13;3972:27;3962:55;;4013:1;4010;4003:12;3962:55;4049:2;4036:16;4071:4;4094:2;4090;4087:10;4084:36;;;4100:18;;:::i;:::-;4146:2;4143:1;4139:10;4178:2;4172:9;4241:2;4237:7;4232:2;4228;4224:11;4220:25;4212:6;4208:38;4296:6;4284:10;4281:22;4276:2;4264:10;4261:18;4258:46;4255:72;;;4307:18;;:::i;:::-;4343:2;4336:22;4393:18;;;4427:15;;;;-1:-1:-1;4469:11:1;;;4465:20;;;4497:19;;;4494:39;;;4529:1;4526;4519:12;4494:39;4553:11;;;;4573:148;4589:6;4584:3;4581:15;4573:148;;;4655:23;4674:3;4655:23;:::i;:::-;4643:36;;4606:12;;;;4699;;;;4573:148;;;4740:6;-1:-1:-1;4765:35:1;;-1:-1:-1;4781:18:1;;;4765:35;:::i;:::-;4755:45;;;;;;3615:1191;;;;;:::o;4811:388::-;4879:6;4887;4940:2;4928:9;4919:7;4915:23;4911:32;4908:52;;;4956:1;4953;4946:12;4908:52;4995:9;4982:23;5014:31;5039:5;5014:31;:::i;:::-;5064:5;-1:-1:-1;5121:2:1;5106:18;;5093:32;5134:33;5093:32;5134:33;:::i;:::-;5186:7;5176:17;;;4811:388;;;;;:::o;5204:380::-;5283:1;5279:12;;;;5326;;;5347:61;;5401:4;5393:6;5389:17;5379:27;;5347:61;5454:2;5446:6;5443:14;5423:18;5420:38;5417:161;;;5500:10;5495:3;5491:20;5488:1;5481:31;5535:4;5532:1;5525:15;5563:4;5560:1;5553:15;5417:161;;5204:380;;;:::o;5589:127::-;5650:10;5645:3;5641:20;5638:1;5631:31;5681:4;5678:1;5671:15;5705:4;5702:1;5695:15;5721:128;5761:3;5792:1;5788:6;5785:1;5782:13;5779:39;;;5798:18;;:::i;:::-;-1:-1:-1;5834:9:1;;5721:128::o;5854:127::-;5915:10;5910:3;5906:20;5903:1;5896:31;5946:4;5943:1;5936:15;5970:4;5967:1;5960:15;5986:135;6025:3;-1:-1:-1;;6046:17:1;;6043:43;;;6066:18;;:::i;:::-;-1:-1:-1;6113:1:1;6102:13;;5986:135::o;6126:168::-;6166:7;6232:1;6228;6224:6;6220:14;6217:1;6214:21;6209:1;6202:9;6195:17;6191:45;6188:71;;;6239:18;;:::i;:::-;-1:-1:-1;6279:9:1;;6126:168::o;6299:217::-;6339:1;6365;6355:132;;6409:10;6404:3;6400:20;6397:1;6390:31;6444:4;6441:1;6434:15;6472:4;6469:1;6462:15;6355:132;-1:-1:-1;6501:9:1;;6299:217::o;6521:251::-;6591:6;6644:2;6632:9;6623:7;6619:23;6615:32;6612:52;;;6660:1;6657;6650:12;6612:52;6692:9;6686:16;6711:31;6736:5;6711:31;:::i;7698:306::-;7786:6;7794;7802;7855:2;7843:9;7834:7;7830:23;7826:32;7823:52;;;7871:1;7868;7861:12;7823:52;7900:9;7894:16;7884:26;;7950:2;7939:9;7935:18;7929:25;7919:35;;7994:2;7983:9;7979:18;7973:25;7963:35;;7698:306;;;;;:::o;8009:125::-;8049:4;8077:1;8074;8071:8;8068:34;;;8082:18;;:::i;:::-;-1:-1:-1;8119:9:1;;8009:125::o;9538:980::-;9800:4;9848:3;9837:9;9833:19;9879:6;9868:9;9861:25;9905:2;9943:6;9938:2;9927:9;9923:18;9916:34;9986:3;9981:2;9970:9;9966:18;9959:31;10010:6;10045;10039:13;10076:6;10068;10061:22;10114:3;10103:9;10099:19;10092:26;;10153:2;10145:6;10141:15;10127:29;;10174:1;10184:195;10198:6;10195:1;10192:13;10184:195;;;10263:13;;-1:-1:-1;;;;;10259:39:1;10247:52;;10354:15;;;;10319:12;;;;10295:1;10213:9;10184:195;;;-1:-1:-1;;;;;;;10435:32:1;;;;10430:2;10415:18;;10408:60;-1:-1:-1;;;10499:3:1;10484:19;10477:35;10396:3;9538:980;-1:-1:-1;;;9538:980:1:o

Swarm Source

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