ETH Price: $3,257.77 (-0.79%)
Gas: 2 Gwei

Token

BANANA REPUBLIC (BANANA)
 

Overview

Max Total Supply

1,000,000,000 BANANA

Holders

154

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 BANANA

Value
$0.00
0xD93235dfBDdbfb6dCf25069961511F8Ea5983F3e
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:
BananaRepublic

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-11
*/

// SPDX-License-Identifier: MIT
/*  
    https://x.com/banana_rep_
    https://t.me/bananarepublicofficial
    https://bananarepublic.vip
*/
pragma solidity ^0.8.10;

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

interface IDexRouter {
    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);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IERC20Extended {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    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 Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = payable(address(0));
    }

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

// main contract
contract BananaRepublic is IERC20Extended, Ownable {
    using SafeMath for uint256;

    string private constant _name = "BANANA REPUBLIC";
    string private constant _symbol = "BANANA";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1_000_000_000 * 10 ** _decimals;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public router;
    address public pair;
    address public autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;

    uint256 liquidityFeePercent = 0;
    uint256 marketingFeePercent = 70;
    uint256 devFeePercent = 30;

    uint256 public totalBuyFee = 30;
    uint256 public totalSellFee = 45;
    uint256 public feeDenominator = 100;
    uint256 public maxWalletAmount = (_totalSupply * 1) / 100;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isLimitExmpt;
    mapping(address => bool) public isBot;

    bool public trading;
    bool public swapEnabled;
    uint256 public swapThreshold = (_totalSupply * 2) / 100;
    uint256 public snipingTime = 0 seconds;
    uint256 public launchedAt;
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    event AutoLiquify(uint256 amountEth, uint256 amountToken);

    constructor() {
        address router_ = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;

        router = IDexRouter(router_);
        pair = IDexFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        isFeeExempt[msg.sender] = true;
        isFeeExempt[autoLiquidityReceiver] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[devFeeReceiver] = true;

        isLimitExmpt[msg.sender] = true;
        isLimitExmpt[address(this)] = true;
        isLimitExmpt[address(router)] = true;
        isLimitExmpt[pair] = true;
        isLimitExmpt[autoLiquidityReceiver] = true;
        isLimitExmpt[marketingFeeReceiver] = true;
        isLimitExmpt[devFeeReceiver] = true;

        _allowances[address(this)][address(router)] = _totalSupply;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != _totalSupply) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            // trading disable till launch
            if (!trading) {
                require(
                    pair != sender && pair != recipient,
                    "trading is disable"
                );
            }
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                sender != address(router)
            ) {
                if (pair == sender) {
                    isBot[recipient] = true;
                } else if (pair == recipient) {
                    isBot[sender] = true;
                }
            }
        }
        if (!isLimitExmpt[recipient]) {
            require(
                balanceOf(recipient).add(amount) <= maxWalletAmount,
                "Max wallet limit exceeds"
            );
        }

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived;
        if (
            isFeeExempt[sender] ||
            isFeeExempt[recipient] ||
            (sender != pair && recipient != pair)
        ) {
            amountReceived = amount;
        } else {
            uint256 feeAmount;
            if (sender == pair) {
                feeAmount = amount.mul(totalBuyFee).div(feeDenominator);
                amountReceived = amount.sub(feeAmount);
                takeFee(sender, feeAmount);
            } else {
                feeAmount = amount.mul(totalSellFee).div(feeDenominator);
                amountReceived = amount.sub(feeAmount);
                takeFee(sender, feeAmount);
            }
        }

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 feeAmount) internal {
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold
            .mul(liquidityFeePercent)
            .div(feeDenominator)
            .div(2);

        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
        _allowances[address(this)][address(router)] = _totalSupply;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountEth = address(this).balance.sub(balanceBefore);

        uint256 totalEthFee = marketingFeePercent.add(devFeePercent).add(
            liquidityFeePercent.div(2)
        );

        uint256 amountEthLiquidity = amountEth
            .mul(liquidityFeePercent)
            .div(totalEthFee)
            .div(2);
        uint256 amountEthMarketing = amountEth.mul(marketingFeePercent).div(
            totalEthFee
        );
        uint256 amountEthDev = amountEth.mul(devFeePercent).div(totalEthFee);

        if (amountEthMarketing > 0) {
            payable(marketingFeeReceiver).transfer(amountEthMarketing);
        }
        if (amountEthDev > 0) {
            payable(devFeeReceiver).transfer(amountEthDev);
        }

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountEthLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountEthLiquidity, amountToLiquify);
        }
    }

    function enableTrading() external onlyOwner {
        require(!trading, "Already enabled");
        trading = true;
        swapEnabled = true;
        launchedAt = block.timestamp;
    }

    function removeStuckTokens(
        address receiver,
        address token,
        uint256 amount
    ) external onlyOwner {
        IERC20Extended(token).transfer(receiver, amount);
    }

    function removeStuckEth(
        address receiver,
        uint256 amount
    ) external onlyOwner {
        payable(receiver).transfer(amount);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsLimitExempt(address holder, bool exempt) external onlyOwner {
        isLimitExmpt[holder] = exempt;
    }

    function setMaxWalletlimit(uint256 _maxWalletAmount) external onlyOwner {
        maxWalletAmount = _maxWalletAmount;
    }

    function removeBots(address account)
        external
        onlyOwner
    {
        isBot[account] = false;
    }

    function setFeesPercent(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _devFee,
        uint256 _feeDenominator
    ) public onlyOwner {
        liquidityFeePercent = _liquidityFee;
        marketingFeePercent = _marketingFee;
        devFeePercent = _devFee;
        feeDenominator = _feeDenominator;
        uint256 totalFeePercent = liquidityFeePercent.add(marketingFeePercent).add(devFeePercent);
        require(
            totalFeePercent == feeDenominator,
            "Must be equal"
        );
    }

    function setFees(
        uint256 _buyFee,
        uint256 _sellFee
    ) public onlyOwner {
        totalBuyFee = _buyFee;
        totalSellFee = _sellFee;
        require(
            totalSellFee <= feeDenominator.mul(80).div(100) &&
                totalBuyFee <= feeDenominator.mul(80).div(100),
            "Can't be greater than 80%"
        );
    }

    function setFeeReceivers(
        address _autoLiquidityReceiver,
        address _marketingFeeReceiver,
        address _devFeeReceiver
    ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
    }

    function setSwapBackSettings(
        bool _enabled,
        uint256 _amount
    ) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFeesPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]

608060405260006006556046600755601e600855601e600955602d600a556064600b5560646009600a62000034919062000568565b6200004490633b9aca0062000580565b6200005190600162000580565b6200005d9190620005a2565b600c556064620000706009600a62000568565b6200008090633b9aca0062000580565b6200008d90600262000580565b620000999190620005a2565b6013556000601455348015620000ae57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360038054336001600160a01b031991821681179092556004805482168317815560058054831690931790925560018054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b815290519192839263c45a01559280830192602092918290030181865afa15801562000175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019b9190620005c5565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002249190620005c5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000272573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002989190620005c5565b600280546001600160a01b0319166001600160a01b03928316178155336000818152600f60209081526040808320805460ff19908116600190811790925560038054891686528386208054831684179055600480548a1687528487208054841685179055600580548b16885285882080548516861790559787526010909552838620805483168417905530865283862080548316841790558254891686528386208054831684179055965488168552828520805482168317905595548716845281842080548716821790559154861683528083208054861683179055925490941681522080549091169091179055620003946009600a62000568565b620003a490633b9aca0062000580565b306000908152600e602090815260408083206001546001600160a01b03168452909152902055620003d86009600a62000568565b620003e890633b9aca0062000580565b336000818152600d6020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200042b6009600a62000568565b6200043b90633b9aca0062000580565b60405190815260200160405180910390a350620005f0565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004aa5781600019048211156200048e576200048e62000453565b808516156200049c57918102915b93841c93908002906200046e565b509250929050565b600082620004c35750600162000562565b81620004d25750600062000562565b8160018114620004eb5760028114620004f65762000516565b600191505062000562565b60ff8411156200050a576200050a62000453565b50506001821b62000562565b5060208310610133831016604e8410600b84101617156200053b575081810a62000562565b62000547838362000469565b80600019048211156200055e576200055e62000453565b0290505b92915050565b60006200057960ff841683620004b2565b9392505050565b60008160001904831182151516156200059d576200059d62000453565b500290565b600082620005c057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005d857600080fd5b81516001600160a01b03811681146200057957600080fd5b611e5f80620006006000396000f3fe6080604052600436106102345760003560e01c80637d99c66d1161012e578063bf56b371116100ab578063df20fd491161006f578063df20fd49146106e7578063e41f9efe14610707578063ec44acf214610727578063f2fde38b14610741578063f887ea401461076157600080fd5b8063bf56b3711461062b578063ca33e64c14610641578063d7c0103214610661578063d962cf5814610681578063dd62ed3e146106a157600080fd5b8063a8aa1b31116100f2578063a8aa1b3114610595578063a9059cbb146105b5578063aa4bde28146105d5578063aab8900c146105eb578063b06d766b1461060b57600080fd5b80637d99c66d146104f35780638a8c523c146105095780638da5cb5b1461051e57806395d89b41146105505780639d9241ec1461057f57600080fd5b80633bbac579116101bc57806359b107b91161018057806359b107b914610453578063658d4b7f146104695780636ddd17131461048957806370a08231146104a8578063715018a6146104de57600080fd5b80633bbac579146103835780633f4218e0146103b3578063480e2058146103e3578063540b8a2714610403578063571ac8b01461043357600080fd5b8063180b0d7e11610203578063180b0d7e146102fc57806318160ddd1461031257806323b872dd14610327578063313ce5671461034757806336e5ec751461036357600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b3146102aa5780630b78f9c0146102da57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660135481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b5060408051808201909152600f81526e42414e414e412052455055424c494360881b60208201525b604051610260919061194a565b3480156102b657600080fd5b506102ca6102c53660046119b7565b610781565b6040519015158152602001610260565b3480156102e657600080fd5b506102fa6102f53660046119e3565b6107ee565b005b34801561030857600080fd5b50610256600b5481565b34801561031e57600080fd5b506102566108c3565b34801561033357600080fd5b506102ca610342366004611a05565b6108e4565b34801561035357600080fd5b5060405160098152602001610260565b34801561036f57600080fd5b506102fa61037e3660046119b7565b6109bf565b34801561038f57600080fd5b506102ca61039e366004611a46565b60116020526000908152604090205460ff1681565b3480156103bf57600080fd5b506102ca6103ce366004611a46565b600f6020526000908152604090205460ff1681565b3480156103ef57600080fd5b506102fa6103fe366004611a63565b610a24565b34801561040f57600080fd5b506102ca61041e366004611a46565b60106020526000908152604090205460ff1681565b34801561043f57600080fd5b506102ca61044e366004611a46565b610a53565b34801561045f57600080fd5b5061025660095481565b34801561047557600080fd5b506102fa610484366004611a8a565b610a73565b34801561049557600080fd5b506012546102ca90610100900460ff1681565b3480156104b457600080fd5b506102566104c3366004611a46565b6001600160a01b03166000908152600d602052604090205490565b3480156104ea57600080fd5b506102fa610ac8565b3480156104ff57600080fd5b5061025660145481565b34801561051557600080fd5b506102fa610b3c565b34801561052a57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610260565b34801561055c57600080fd5b5060408051808201909152600681526542414e414e4160d01b602082015261029d565b34801561058b57600080fd5b50610256600a5481565b3480156105a157600080fd5b50600254610538906001600160a01b031681565b3480156105c157600080fd5b506102ca6105d03660046119b7565b610bc0565b3480156105e157600080fd5b50610256600c5481565b3480156105f757600080fd5b506102fa610606366004611a05565b610bcd565b34801561061757600080fd5b506102fa610626366004611ac3565b610c70565b34801561063757600080fd5b5061025660155481565b34801561064d57600080fd5b50600354610538906001600160a01b031681565b34801561066d57600080fd5b506102fa61067c366004611af5565b610d0e565b34801561068d57600080fd5b506102fa61069c366004611a8a565b610d77565b3480156106ad57600080fd5b506102566106bc366004611b40565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156106f357600080fd5b506102fa610702366004611b6e565b610dcc565b34801561071357600080fd5b506102fa610722366004611a46565b610e14565b34801561073357600080fd5b506012546102ca9060ff1681565b34801561074d57600080fd5b506102fa61075c366004611a46565b610e5f565b34801561076d57600080fd5b50600154610538906001600160a01b031681565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107dc9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108215760405162461bcd60e51b815260040161081890611b8c565b60405180910390fd5b6009829055600a819055600b5461084690606490610840906050610f49565b90610f55565b600a5411158015610873575061086d60646108406050600b54610f4990919063ffffffff16565b60095411155b6108bf5760405162461bcd60e51b815260206004820152601960248201527f43616e27742062652067726561746572207468616e20383025000000000000006044820152606401610818565b5050565b60006108d16009600a611cbb565b6108df90633b9aca00611cca565b905090565b60006108f26009600a611cbb565b61090090633b9aca00611cca565b6001600160a01b0385166000908152600e60209081526040808320338452909152902054146109aa576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600e82528381203382529091529190912054610985918490610f61565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b6109b5848484610f8d565b90505b9392505050565b6000546001600160a01b031633146109e95760405162461bcd60e51b815260040161081890611b8c565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610a1f573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610a4e5760405162461bcd60e51b815260040161081890611b8c565b600c55565b60006107e882610a656009600a611cbb565b6102c590633b9aca00611cca565b6000546001600160a01b03163314610a9d5760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610af25760405162461bcd60e51b815260040161081890611b8c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b665760405162461bcd60e51b815260040161081890611b8c565b60125460ff1615610bab5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610818565b6012805461ffff191661010117905542601555565b60006109b8338484610f8d565b6000546001600160a01b03163314610bf75760405162461bcd60e51b815260040161081890611b8c565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190611ce9565b50505050565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161081890611b8c565b600684905560078390556008829055600b8190556000610cc483610cbe87876113a7565b906113a7565b9050600b548114610d075760405162461bcd60e51b815260206004820152600d60248201526c135d5cdd08189948195c5d585b609a1b6044820152606401610818565b5050505050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260040161081890611b8c565b600380546001600160a01b039485166001600160a01b031991821617909155600480549385169382169390931790925560058054919093169116179055565b6000546001600160a01b03163314610da15760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610df65760405162461bcd60e51b815260040161081890611b8c565b601280549215156101000261ff001990931692909217909155601355565b6000546001600160a01b03163314610e3e5760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b03163314610e895760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b038116610eee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610818565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109b88284611cca565b60006109b88284611d06565b60008184841115610f855760405162461bcd60e51b8152600401610818919061194a565b505050900390565b6001600160a01b0383166000908152600f602052604081205460ff16158015610fcf57506001600160a01b0383166000908152600f602052604090205460ff16155b156110f45760125460ff1661104b576002546001600160a01b0385811691161480159061100a57506002546001600160a01b03848116911614155b61104b5760405162461bcd60e51b815260206004820152601260248201527174726164696e672069732064697361626c6560701b6044820152606401610818565b60145460155461105b9190611d28565b4210801561107757506001546001600160a01b03858116911614155b156110f4576002546001600160a01b03858116911614156110ba576001600160a01b0383166000908152601160205260409020805460ff191660011790556110f4565b6002546001600160a01b03848116911614156110f4576001600160a01b0384166000908152601160205260409020805460ff191660011790555b6001600160a01b03831660009081526010602052604090205460ff1661118857600c5461113a83610cbe866001600160a01b03166000908152600d602052604090205490565b11156111885760405162461bcd60e51b815260206004820152601860248201527f4d61782077616c6c6574206c696d6974206578636565647300000000000000006044820152606401610818565b60165460ff16156111a55761119e8484846113b3565b90506109b8565b6111ad611499565b156111ba576111ba6114ed565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600d909152919091205461120c918490610f61565b6001600160a01b0385166000908152600d6020908152604080832093909355600f90529081205460ff168061125957506001600160a01b0384166000908152600f602052604090205460ff165b8061128b57506002546001600160a01b0386811691161480159061128b57506002546001600160a01b03858116911614155b1561129757508161131d565b6002546000906001600160a01b03878116911614156112e8576112cb600b5461084060095487610f4990919063ffffffff16565b90506112d784826118c7565b91506112e386826118d3565b61131b565b611303600b54610840600a5487610f4990919063ffffffff16565b905061130f84826118c7565b915061131b86826118d3565b505b6001600160a01b0384166000908152600d602052604090205461134090826113a7565b6001600160a01b038086166000818152600d602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113949085815260200190565b60405180910390a3506001949350505050565b60006109b88284611d28565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600d90915291822054611404918490610f61565b6001600160a01b038086166000908152600d6020526040808220939093559085168152205461143390836113a7565b6001600160a01b038085166000818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114879086815260200190565b60405180910390a35060019392505050565b6002546000906001600160a01b031633148015906114ba575060165460ff16155b80156114cd5750601254610100900460ff165b80156108df575050601354306000908152600d6020526040902054101590565b6016805460ff19166001179055600b5460065460135460009261151a926002926108409291839190610f49565b90506000611533826013546118c790919063ffffffff16565b90506115416009600a611cbb565b61154f90633b9aca00611cca565b306000908152600e602090815260408083206001546001600160a01b031684528252808320939093558251600280825260608201855292939092918301908036833701905050905030816000815181106115ab576115ab611d40565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116289190611d56565b8160018151811061163b5761163b611d40565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b81524792919091169063791ac94790611685908690600090879030904290600401611d73565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050505060006116cc82476118c790919063ffffffff16565b905060006116f86116e96002600654610f5590919063ffffffff16565b600854600754610cbe916113a7565b9050600061171a60026108408461084060065488610f4990919063ffffffff16565b905060006117378361084060075487610f4990919063ffffffff16565b905060006117548461084060085488610f4990919063ffffffff16565b90508115611798576004546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611796573d6000803e3d6000fd5b505b80156117da576005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156117d8573d6000803e3d6000fd5b505b88156118b25760015460035460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611850573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118759190611de4565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506016805460ff1916905550505050505050565b60006109b88284611e12565b306000908152600d60205260409020546118ed90826113a7565b306000818152600d6020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061193e9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b818110156119775785810183015185820160400152820161195b565b81811115611989576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119b457600080fd5b50565b600080604083850312156119ca57600080fd5b82356119d58161199f565b946020939093013593505050565b600080604083850312156119f657600080fd5b50508035926020909101359150565b600080600060608486031215611a1a57600080fd5b8335611a258161199f565b92506020840135611a358161199f565b929592945050506040919091013590565b600060208284031215611a5857600080fd5b81356109b88161199f565b600060208284031215611a7557600080fd5b5035919050565b80151581146119b457600080fd5b60008060408385031215611a9d57600080fd5b8235611aa88161199f565b91506020830135611ab881611a7c565b809150509250929050565b60008060008060808587031215611ad957600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611b0a57600080fd5b8335611b158161199f565b92506020840135611b258161199f565b91506040840135611b358161199f565b809150509250925092565b60008060408385031215611b5357600080fd5b8235611b5e8161199f565b91506020830135611ab88161199f565b60008060408385031215611b8157600080fd5b82356119d581611a7c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611c12578160001904821115611bf857611bf8611bc1565b80851615611c0557918102915b93841c9390800290611bdc565b509250929050565b600082611c29575060016107e8565b81611c36575060006107e8565b8160018114611c4c5760028114611c5657611c72565b60019150506107e8565b60ff841115611c6757611c67611bc1565b50506001821b6107e8565b5060208310610133831016604e8410600b8410161715611c95575081810a6107e8565b611c9f8383611bd7565b8060001904821115611cb357611cb3611bc1565b029392505050565b60006109b860ff841683611c1a565b6000816000190483118215151615611ce457611ce4611bc1565b500290565b600060208284031215611cfb57600080fd5b81516109b881611a7c565b600082611d2357634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611d3b57611d3b611bc1565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d6857600080fd5b81516109b88161199f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dc35784516001600160a01b031683529383019391830191600101611d9e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611df957600080fd5b8351925060208401519150604084015190509250925092565b600082821015611e2457611e24611bc1565b50039056fea2646970667358221220c37a37c691ec92a67ec5f32abfc30bf1c0bec78ba464029624b17154d25bbf9b64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637d99c66d1161012e578063bf56b371116100ab578063df20fd491161006f578063df20fd49146106e7578063e41f9efe14610707578063ec44acf214610727578063f2fde38b14610741578063f887ea401461076157600080fd5b8063bf56b3711461062b578063ca33e64c14610641578063d7c0103214610661578063d962cf5814610681578063dd62ed3e146106a157600080fd5b8063a8aa1b31116100f2578063a8aa1b3114610595578063a9059cbb146105b5578063aa4bde28146105d5578063aab8900c146105eb578063b06d766b1461060b57600080fd5b80637d99c66d146104f35780638a8c523c146105095780638da5cb5b1461051e57806395d89b41146105505780639d9241ec1461057f57600080fd5b80633bbac579116101bc57806359b107b91161018057806359b107b914610453578063658d4b7f146104695780636ddd17131461048957806370a08231146104a8578063715018a6146104de57600080fd5b80633bbac579146103835780633f4218e0146103b3578063480e2058146103e3578063540b8a2714610403578063571ac8b01461043357600080fd5b8063180b0d7e11610203578063180b0d7e146102fc57806318160ddd1461031257806323b872dd14610327578063313ce5671461034757806336e5ec751461036357600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b3146102aa5780630b78f9c0146102da57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660135481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b5060408051808201909152600f81526e42414e414e412052455055424c494360881b60208201525b604051610260919061194a565b3480156102b657600080fd5b506102ca6102c53660046119b7565b610781565b6040519015158152602001610260565b3480156102e657600080fd5b506102fa6102f53660046119e3565b6107ee565b005b34801561030857600080fd5b50610256600b5481565b34801561031e57600080fd5b506102566108c3565b34801561033357600080fd5b506102ca610342366004611a05565b6108e4565b34801561035357600080fd5b5060405160098152602001610260565b34801561036f57600080fd5b506102fa61037e3660046119b7565b6109bf565b34801561038f57600080fd5b506102ca61039e366004611a46565b60116020526000908152604090205460ff1681565b3480156103bf57600080fd5b506102ca6103ce366004611a46565b600f6020526000908152604090205460ff1681565b3480156103ef57600080fd5b506102fa6103fe366004611a63565b610a24565b34801561040f57600080fd5b506102ca61041e366004611a46565b60106020526000908152604090205460ff1681565b34801561043f57600080fd5b506102ca61044e366004611a46565b610a53565b34801561045f57600080fd5b5061025660095481565b34801561047557600080fd5b506102fa610484366004611a8a565b610a73565b34801561049557600080fd5b506012546102ca90610100900460ff1681565b3480156104b457600080fd5b506102566104c3366004611a46565b6001600160a01b03166000908152600d602052604090205490565b3480156104ea57600080fd5b506102fa610ac8565b3480156104ff57600080fd5b5061025660145481565b34801561051557600080fd5b506102fa610b3c565b34801561052a57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610260565b34801561055c57600080fd5b5060408051808201909152600681526542414e414e4160d01b602082015261029d565b34801561058b57600080fd5b50610256600a5481565b3480156105a157600080fd5b50600254610538906001600160a01b031681565b3480156105c157600080fd5b506102ca6105d03660046119b7565b610bc0565b3480156105e157600080fd5b50610256600c5481565b3480156105f757600080fd5b506102fa610606366004611a05565b610bcd565b34801561061757600080fd5b506102fa610626366004611ac3565b610c70565b34801561063757600080fd5b5061025660155481565b34801561064d57600080fd5b50600354610538906001600160a01b031681565b34801561066d57600080fd5b506102fa61067c366004611af5565b610d0e565b34801561068d57600080fd5b506102fa61069c366004611a8a565b610d77565b3480156106ad57600080fd5b506102566106bc366004611b40565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156106f357600080fd5b506102fa610702366004611b6e565b610dcc565b34801561071357600080fd5b506102fa610722366004611a46565b610e14565b34801561073357600080fd5b506012546102ca9060ff1681565b34801561074d57600080fd5b506102fa61075c366004611a46565b610e5f565b34801561076d57600080fd5b50600154610538906001600160a01b031681565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107dc9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108215760405162461bcd60e51b815260040161081890611b8c565b60405180910390fd5b6009829055600a819055600b5461084690606490610840906050610f49565b90610f55565b600a5411158015610873575061086d60646108406050600b54610f4990919063ffffffff16565b60095411155b6108bf5760405162461bcd60e51b815260206004820152601960248201527f43616e27742062652067726561746572207468616e20383025000000000000006044820152606401610818565b5050565b60006108d16009600a611cbb565b6108df90633b9aca00611cca565b905090565b60006108f26009600a611cbb565b61090090633b9aca00611cca565b6001600160a01b0385166000908152600e60209081526040808320338452909152902054146109aa576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600e82528381203382529091529190912054610985918490610f61565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b6109b5848484610f8d565b90505b9392505050565b6000546001600160a01b031633146109e95760405162461bcd60e51b815260040161081890611b8c565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610a1f573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610a4e5760405162461bcd60e51b815260040161081890611b8c565b600c55565b60006107e882610a656009600a611cbb565b6102c590633b9aca00611cca565b6000546001600160a01b03163314610a9d5760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610af25760405162461bcd60e51b815260040161081890611b8c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b665760405162461bcd60e51b815260040161081890611b8c565b60125460ff1615610bab5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610818565b6012805461ffff191661010117905542601555565b60006109b8338484610f8d565b6000546001600160a01b03163314610bf75760405162461bcd60e51b815260040161081890611b8c565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190611ce9565b50505050565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161081890611b8c565b600684905560078390556008829055600b8190556000610cc483610cbe87876113a7565b906113a7565b9050600b548114610d075760405162461bcd60e51b815260206004820152600d60248201526c135d5cdd08189948195c5d585b609a1b6044820152606401610818565b5050505050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260040161081890611b8c565b600380546001600160a01b039485166001600160a01b031991821617909155600480549385169382169390931790925560058054919093169116179055565b6000546001600160a01b03163314610da15760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610df65760405162461bcd60e51b815260040161081890611b8c565b601280549215156101000261ff001990931692909217909155601355565b6000546001600160a01b03163314610e3e5760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b03163314610e895760405162461bcd60e51b815260040161081890611b8c565b6001600160a01b038116610eee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610818565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109b88284611cca565b60006109b88284611d06565b60008184841115610f855760405162461bcd60e51b8152600401610818919061194a565b505050900390565b6001600160a01b0383166000908152600f602052604081205460ff16158015610fcf57506001600160a01b0383166000908152600f602052604090205460ff16155b156110f45760125460ff1661104b576002546001600160a01b0385811691161480159061100a57506002546001600160a01b03848116911614155b61104b5760405162461bcd60e51b815260206004820152601260248201527174726164696e672069732064697361626c6560701b6044820152606401610818565b60145460155461105b9190611d28565b4210801561107757506001546001600160a01b03858116911614155b156110f4576002546001600160a01b03858116911614156110ba576001600160a01b0383166000908152601160205260409020805460ff191660011790556110f4565b6002546001600160a01b03848116911614156110f4576001600160a01b0384166000908152601160205260409020805460ff191660011790555b6001600160a01b03831660009081526010602052604090205460ff1661118857600c5461113a83610cbe866001600160a01b03166000908152600d602052604090205490565b11156111885760405162461bcd60e51b815260206004820152601860248201527f4d61782077616c6c6574206c696d6974206578636565647300000000000000006044820152606401610818565b60165460ff16156111a55761119e8484846113b3565b90506109b8565b6111ad611499565b156111ba576111ba6114ed565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600d909152919091205461120c918490610f61565b6001600160a01b0385166000908152600d6020908152604080832093909355600f90529081205460ff168061125957506001600160a01b0384166000908152600f602052604090205460ff165b8061128b57506002546001600160a01b0386811691161480159061128b57506002546001600160a01b03858116911614155b1561129757508161131d565b6002546000906001600160a01b03878116911614156112e8576112cb600b5461084060095487610f4990919063ffffffff16565b90506112d784826118c7565b91506112e386826118d3565b61131b565b611303600b54610840600a5487610f4990919063ffffffff16565b905061130f84826118c7565b915061131b86826118d3565b505b6001600160a01b0384166000908152600d602052604090205461134090826113a7565b6001600160a01b038086166000818152600d602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113949085815260200190565b60405180910390a3506001949350505050565b60006109b88284611d28565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600d90915291822054611404918490610f61565b6001600160a01b038086166000908152600d6020526040808220939093559085168152205461143390836113a7565b6001600160a01b038085166000818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114879086815260200190565b60405180910390a35060019392505050565b6002546000906001600160a01b031633148015906114ba575060165460ff16155b80156114cd5750601254610100900460ff165b80156108df575050601354306000908152600d6020526040902054101590565b6016805460ff19166001179055600b5460065460135460009261151a926002926108409291839190610f49565b90506000611533826013546118c790919063ffffffff16565b90506115416009600a611cbb565b61154f90633b9aca00611cca565b306000908152600e602090815260408083206001546001600160a01b031684528252808320939093558251600280825260608201855292939092918301908036833701905050905030816000815181106115ab576115ab611d40565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116289190611d56565b8160018151811061163b5761163b611d40565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b81524792919091169063791ac94790611685908690600090879030904290600401611d73565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050505060006116cc82476118c790919063ffffffff16565b905060006116f86116e96002600654610f5590919063ffffffff16565b600854600754610cbe916113a7565b9050600061171a60026108408461084060065488610f4990919063ffffffff16565b905060006117378361084060075487610f4990919063ffffffff16565b905060006117548461084060085488610f4990919063ffffffff16565b90508115611798576004546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611796573d6000803e3d6000fd5b505b80156117da576005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156117d8573d6000803e3d6000fd5b505b88156118b25760015460035460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611850573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118759190611de4565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506016805460ff1916905550505050505050565b60006109b88284611e12565b306000908152600d60205260409020546118ed90826113a7565b306000818152600d6020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061193e9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b818110156119775785810183015185820160400152820161195b565b81811115611989576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119b457600080fd5b50565b600080604083850312156119ca57600080fd5b82356119d58161199f565b946020939093013593505050565b600080604083850312156119f657600080fd5b50508035926020909101359150565b600080600060608486031215611a1a57600080fd5b8335611a258161199f565b92506020840135611a358161199f565b929592945050506040919091013590565b600060208284031215611a5857600080fd5b81356109b88161199f565b600060208284031215611a7557600080fd5b5035919050565b80151581146119b457600080fd5b60008060408385031215611a9d57600080fd5b8235611aa88161199f565b91506020830135611ab881611a7c565b809150509250929050565b60008060008060808587031215611ad957600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611b0a57600080fd5b8335611b158161199f565b92506020840135611b258161199f565b91506040840135611b358161199f565b809150509250925092565b60008060408385031215611b5357600080fd5b8235611b5e8161199f565b91506020830135611ab88161199f565b60008060408385031215611b8157600080fd5b82356119d581611a7c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611c12578160001904821115611bf857611bf8611bc1565b80851615611c0557918102915b93841c9390800290611bdc565b509250929050565b600082611c29575060016107e8565b81611c36575060006107e8565b8160018114611c4c5760028114611c5657611c72565b60019150506107e8565b60ff841115611c6757611c67611bc1565b50506001821b6107e8565b5060208310610133831016604e8410600b8410161715611c95575081810a6107e8565b611c9f8383611bd7565b8060001904821115611cb357611cb3611bc1565b029392505050565b60006109b860ff841683611c1a565b6000816000190483118215151615611ce457611ce4611bc1565b500290565b600060208284031215611cfb57600080fd5b81516109b881611a7c565b600082611d2357634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611d3b57611d3b611bc1565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d6857600080fd5b81516109b88161199f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dc35784516001600160a01b031683529383019391830191600101611d9e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611df957600080fd5b8351925060208401519150604084015190509250925092565b600082821015611e2457611e24611bc1565b50039056fea2646970667358221220c37a37c691ec92a67ec5f32abfc30bf1c0bec78ba464029624b17154d25bbf9b64736f6c634300080a0033

Deployed Bytecode Sourcemap

6367:11848:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7599:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7599:55:0;;;;;;;;9362:94;;;;;;;;;;-1:-1:-1;9443:5:0;;;;;;;;;;;;-1:-1:-1;;;9443:5:0;;;;9362:94;;;;;;;:::i;9771:241::-;;;;;;;;;;-1:-1:-1;9771:241:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;9771:241:0;1254:187:1;17319:368:0;;;;;;;;;;-1:-1:-1;17319:368:0;;;;;:::i;:::-;;:::i;:::-;;7162:35;;;;;;;;;;;;;;;;9044:102;;;;;;;;;;;;;:::i;10334:419::-;;;;;;;;;;-1:-1:-1;10334:419:0;;;;;:::i;:::-;;:::i;9154:94::-;;;;;;;;;;-1:-1:-1;9154:94:0;;6600:1;2302:36:1;;2290:2;2275:18;9154:94:0;2160:184:1;16074:155:0;;;;;;;;;;-1:-1:-1;16074:155:0;;;;;:::i;:::-;;:::i;7497:37::-;;;;;;;;;;-1:-1:-1;7497:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7396:43;;;;;;;;;;-1:-1:-1;7396:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16494:125;;;;;;;;;;-1:-1:-1;16494:125:0;;;;;:::i;:::-;;:::i;7446:44::-;;;;;;;;;;-1:-1:-1;7446:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10020:117;;;;;;;;;;-1:-1:-1;10020:117:0;;;;;:::i;:::-;;:::i;7085:31::-;;;;;;;;;;;;;;;;16237:119;;;;;;;;;;-1:-1:-1;16237:119:0;;;;;:::i;:::-;;:::i;7569:23::-;;;;;;;;;;-1:-1:-1;7569:23:0;;;;;;;;;;;9464:119;;;;;;;;;;-1:-1:-1;9464:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9557:18:0;9530:7;9557:18;;;:9;:18;;;;;;;9464:119;5896:157;;;;;;;;;;;;;:::i;7661:38::-;;;;;;;;;;;;;;;;15670:192;;;;;;;;;;;;;:::i;5682:79::-;;;;;;;;;;-1:-1:-1;5720:7:0;5747:6;-1:-1:-1;;;;;5747:6:0;5682:79;;;-1:-1:-1;;;;;3460:32:1;;;3442:51;;3430:2;3415:18;5682:79:0;3296:203:1;9256:98:0;;;;;;;;;;-1:-1:-1;9339:7:0;;;;;;;;;;;;-1:-1:-1;;;9339:7:0;;;;9256:98;;7123:32;;;;;;;;;;;;;;;;6822:19;;;;;;;;;;-1:-1:-1;6822:19:0;;;;-1:-1:-1;;;;;6822:19:0;;;10145:181;;;;;;;;;;-1:-1:-1;10145:181:0;;;;;:::i;:::-;;:::i;7204:57::-;;;;;;;;;;;;;;;;15870:196;;;;;;;;;;-1:-1:-1;15870:196:0;;;;;:::i;:::-;;:::i;16755:556::-;;;;;;;;;;-1:-1:-1;16755:556:0;;;;;:::i;:::-;;:::i;7706:25::-;;;;;;;;;;;;;;;;6848:36;;;;;;;;;;-1:-1:-1;6848:36:0;;;;-1:-1:-1;;;;;6848:36:0;;;17695:329;;;;;;;;;;-1:-1:-1;17695:329:0;;;;;:::i;:::-;;:::i;16364:122::-;;;;;;;;;;-1:-1:-1;16364:122:0;;;;;:::i;:::-;;:::i;9591:172::-;;;;;;;;;;-1:-1:-1;9591:172:0;;;;;:::i;:::-;-1:-1:-1;;;;;9727:19:0;;;9700:7;9727:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9591:172;18032:180;;;;;;;;;;-1:-1:-1;18032:180:0;;;;;:::i;:::-;;:::i;16627:120::-;;;;;;;;;;-1:-1:-1;16627:120:0;;;;;:::i;:::-;;:::i;7543:19::-;;;;;;;;;;-1:-1:-1;7543:19:0;;;;;;;;6061:281;;;;;;;;;;-1:-1:-1;6061:281:0;;;;;:::i;:::-;;:::i;6791:24::-;;;;;;;;;;-1:-1:-1;6791:24:0;;;;-1:-1:-1;;;;;6791:24:0;;;9771:241;9900:10;9871:4;9888:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9888:32:0;;;;;;;;;;:41;;;9945:37;9871:4;;9888:32;;9945:37;;;;9923:6;160:25:1;;148:2;133:18;;14:177;9945:37:0;;;;;;;;-1:-1:-1;10000:4:0;9771:241;;;;;:::o;17319:368::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;;;;;;;;;17424:11:::1;:21:::0;;;17456:12:::1;:23:::0;;;17528:14:::1;::::0;:31:::1;::::0;17555:3:::1;::::0;17528:22:::1;::::0;17547:2:::1;17528:18;:22::i;:::-;:26:::0;::::1;:31::i;:::-;17512:12;;:47;;:114;;;;;17595:31;17622:3;17595:22;17614:2;17595:14;;:18;;:22;;;;:::i;:31::-;17580:11;;:46;;17512:114;17490:189;;;::::0;-1:-1:-1;;;17490:189:0;;5924:2:1;17490:189:0::1;::::0;::::1;5906:21:1::0;5963:2;5943:18;;;5936:30;6002:27;5982:18;;;5975:55;6047:18;;17490:189:0::1;5722:349:1::0;17490:189:0::1;17319:368:::0;;:::o;9044:102::-;9099:7;6664:15;6600:1;6664:2;:15;:::i;:::-;6648:31;;:13;:31;:::i;:::-;9119:19;;9044:102;:::o;10334:419::-;10468:4;6664:15;6600:1;6664:2;:15;:::i;:::-;6648:31;;:13;:31;:::i;:::-;-1:-1:-1;;;;;10489:19:0;;;;;;:11;:19;;;;;;;;10509:10;10489:31;;;;;;;;:47;10485:201;;10587:87;;;;;;;;;;;-1:-1:-1;;;10587:87:0;;;;;;;;-1:-1:-1;;;;;10587:19:0;;-1:-1:-1;10587:19:0;;;:11;:19;;;;;10607:10;10587:31;;;;;;;;;;:87;;10641:6;;10587:53;:87::i;:::-;-1:-1:-1;;;;;10553:19:0;;;;;;:11;:19;;;;;;;;10573:10;10553:31;;;;;;;:121;10485:201;10705:40;10719:6;10727:9;10738:6;10705:13;:40::i;:::-;10698:47;;10334:419;;;;;;:::o;16074:155::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;16187:34:::1;::::0;-1:-1:-1;;;;;16187:26:0;::::1;::::0;:34;::::1;;;::::0;16214:6;;16187:34:::1;::::0;;;16214:6;16187:26;:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16074:155:::0;;:::o;16494:125::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;16577:15:::1;:34:::0;16494:125::o;10020:117::-;10075:4;10099:30;10107:7;6664:15;6600:1;6664:2;:15;:::i;:::-;6648:31;;:13;:31;:::i;16237:119::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16320:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16320:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16237:119::o;5896:157::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;6003:1:::1;5987:6:::0;;5966:40:::1;::::0;-1:-1:-1;;;;;5987:6:0;;::::1;::::0;5966:40:::1;::::0;6003:1;;5966:40:::1;6042:1;6017:28:::0;;-1:-1:-1;;;;;;6017:28:0::1;::::0;;5896:157::o;15670:192::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;15734:7:::1;::::0;::::1;;15733:8;15725:36;;;::::0;-1:-1:-1;;;15725:36:0;;7966:2:1;15725:36:0::1;::::0;::::1;7948:21:1::0;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:45;8079:18;;15725:36:0::1;7764:339:1::0;15725:36:0::1;15772:7;:14:::0;;-1:-1:-1;;15797:18:0;;;;;15839:15:::1;15826:10;:28:::0;15670:192::o;10145:181::-;10250:4;10274:44;10288:10;10300:9;10311:6;10274:13;:44::i;15870:196::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;16010:48:::1;::::0;-1:-1:-1;;;16010:48:0;;-1:-1:-1;;;;;8300:32:1;;;16010:48:0::1;::::0;::::1;8282:51:1::0;8349:18;;;8342:34;;;16010:30:0;::::1;::::0;::::1;::::0;8255:18:1;;16010:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15870:196:::0;;;:::o;16755:556::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;16938:19:::1;:35:::0;;;16984:19:::1;:35:::0;;;17030:13:::1;:23:::0;;;17064:14:::1;:32:::0;;;-1:-1:-1;17133:63:0::1;17046:7:::0;17133:44:::1;16960:13:::0;17006;17133:23:::1;:44::i;:::-;:48:::0;::::1;:63::i;:::-;17107:89;;17248:14;;17229:15;:33;17207:96;;;::::0;-1:-1:-1;;;17207:96:0;;8839:2:1;17207:96:0::1;::::0;::::1;8821:21:1::0;8878:2;8858:18;;;8851:30;-1:-1:-1;;;8897:18:1;;;8890:43;8950:18;;17207:96:0::1;8637:337:1::0;17207:96:0::1;16927:384;16755:556:::0;;;;:::o;17695:329::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;17872:21:::1;:46:::0;;-1:-1:-1;;;;;17872:46:0;;::::1;-1:-1:-1::0;;;;;;17872:46:0;;::::1;;::::0;;;17929:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17984:14:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;17695:329::o;16364:122::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16449:20:0;;;::::1;;::::0;;;:12:::1;:20;::::0;;;;:29;;-1:-1:-1;;16449:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16364:122::o;18032:180::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;18148:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;18148:22:0;;::::1;::::0;;;::::1;::::0;;;18181:13:::1;:23:::0;18032:180::o;16627:120::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16717:14:0::1;16734:5;16717:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;16717:22:0::1;::::0;;16627:120::o;6061:281::-;5809:6;;-1:-1:-1;;;;;5809:6:0;5114:10;5809:22;5801:67;;;;-1:-1:-1;;;5801:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6164:22:0;::::1;6142:110;;;::::0;-1:-1:-1;;;6142:110:0;;9181:2:1;6142:110:0::1;::::0;::::1;9163:21:1::0;9220:2;9200:18;;;9193:30;9259:34;9239:18;;;9232:62;-1:-1:-1;;;9310:18:1;;;9303:36;9356:19;;6142:110:0::1;8979:402:1::0;6142:110:0::1;6289:6;::::0;;6268:38:::1;::::0;-1:-1:-1;;;;;6268:38:0;;::::1;::::0;6289:6;::::1;::::0;6268:38:::1;::::0;::::1;6317:6;:17:::0;;-1:-1:-1;;;;;;6317:17:0::1;-1:-1:-1::0;;;;;6317:17:0;;;::::1;::::0;;;::::1;::::0;;6061:281::o;1885:98::-;1943:7;1970:5;1974:1;1970;:5;:::i;1991:98::-;2049:7;2076:5;2080:1;2076;:5;:::i;2203:240::-;2323:7;2384:12;2376:6;;;;2368:29;;;;-1:-1:-1;;;2368:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2419:5:0;;;2203:240::o;10761:2193::-;-1:-1:-1;;;;;10909:19:0;;10887:4;10909:19;;;:11;:19;;;;;;;;10908:20;:47;;;;-1:-1:-1;;;;;;10933:22:0;;;;;;:11;:22;;;;;;;;10932:23;10908:47;10904:675;;;11021:7;;;;11016:176;;11079:4;;-1:-1:-1;;;;;11079:14:0;;;:4;;:14;;;;:35;;-1:-1:-1;11097:4:0;;-1:-1:-1;;;;;11097:17:0;;;:4;;:17;;11079:35;11049:127;;;;-1:-1:-1;;;11049:127:0;;9810:2:1;11049:127:0;;;9792:21:1;9849:2;9829:18;;;9822:30;-1:-1:-1;;;9868:18:1;;;9861:48;9926:18;;11049:127:0;9608:342:1;11049:127:0;11283:11;;11270:10;;:24;;;;:::i;:::-;11252:15;:42;:88;;;;-1:-1:-1;11333:6:0;;-1:-1:-1;;;;;11315:25:0;;;11333:6;;11315:25;;11252:88;11230:338;;;11379:4;;-1:-1:-1;;;;;11379:14:0;;;:4;;:14;11375:178;;;-1:-1:-1;;;;;11418:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;11418:23:0;11437:4;11418:23;;;11375:178;;;11471:4;;-1:-1:-1;;;;;11471:17:0;;;:4;;:17;11467:86;;;-1:-1:-1;;;;;11513:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;11513:20:0;11529:4;11513:20;;;11467:86;-1:-1:-1;;;;;11594:23:0;;;;;;:12;:23;;;;;;;;11589:194;;11696:15;;11660:32;11685:6;11660:20;11670:9;-1:-1:-1;;;;;9557:18:0;9530:7;9557:18;;;:9;:18;;;;;;;9464:119;11660:32;:51;;11634:137;;;;-1:-1:-1;;;11634:137:0;;10290:2:1;11634:137:0;;;10272:21:1;10329:2;10309:18;;;10302:30;10368:26;10348:18;;;10341:54;10412:18;;11634:137:0;10088:348:1;11634:137:0;11799:6;;;;11795:87;;;11829:41;11844:6;11852:9;11863:6;11829:14;:41::i;:::-;11822:48;;;;11795:87;11898:16;:14;:16::i;:::-;11894:59;;;11931:10;:8;:10::i;:::-;11985:90;;;;;;;;;;;-1:-1:-1;;;11985:90:0;;;;;;;;-1:-1:-1;;;;;11985:17:0;;-1:-1:-1;11985:17:0;;;:9;:17;;;;;;;;:90;;12021:6;;11985:21;:90::i;:::-;-1:-1:-1;;;;;11965:17:0;;;;;;:9;:17;;;;;;;;:110;;;;12139:11;:19;;;;;;;;;:58;;-1:-1:-1;;;;;;12175:22:0;;;;;;:11;:22;;;;;;;;12139:58;:112;;;-1:-1:-1;12225:4:0;;-1:-1:-1;;;;;12215:14:0;;;12225:4;;12215:14;;;;:35;;-1:-1:-1;12246:4:0;;-1:-1:-1;;;;;12233:17:0;;;12246:4;;12233:17;;12215:35;12121:667;;;-1:-1:-1;12295:6:0;12121:667;;;12380:4;;12334:17;;-1:-1:-1;;;;;12370:14:0;;;12380:4;;12370:14;12366:411;;;12417:43;12445:14;;12417:23;12428:11;;12417:6;:10;;:23;;;;:::i;:43::-;12405:55;-1:-1:-1;12496:21:0;:6;12405:55;12496:10;:21::i;:::-;12479:38;;12536:26;12544:6;12552:9;12536:7;:26::i;:::-;12366:411;;;12615:44;12644:14;;12615:24;12626:12;;12615:6;:10;;:24;;;;:::i;:44::-;12603:56;-1:-1:-1;12695:21:0;:6;12603:56;12695:10;:21::i;:::-;12678:38;;12735:26;12743:6;12751:9;12735:7;:26::i;:::-;12319:469;12121:667;-1:-1:-1;;;;;12823:20:0;;;;;;:9;:20;;;;;;:40;;12848:14;12823:24;:40::i;:::-;-1:-1:-1;;;;;12800:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12881:43;;;;;;;;;;12909:14;160:25:1;;148:2;133:18;;14:177;12881:43:0;;;;;;;;-1:-1:-1;12942:4:0;;10761:2193;-1:-1:-1;;;;10761:2193:0:o;1673:98::-;1731:7;1758:5;1762:1;1758;:5;:::i;12962:401::-;13126:90;;;;;;;;;;;-1:-1:-1;;;13126:90:0;;;;;;;;-1:-1:-1;;;;;13126:17:0;;13089:4;13126:17;;;:9;:17;;;;;;;:90;;13162:6;;13126:21;:90::i;:::-;-1:-1:-1;;;;;13106:17:0;;;;;;;:9;:17;;;;;;:110;;;;13250:20;;;;;;;:32;;13275:6;13250:24;:32::i;:::-;-1:-1:-1;;;;;13227:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13298:35;;;;;;;;;;13326:6;160:25:1;;148:2;133:18;;14:177;13298:35:0;;;;;;;;-1:-1:-1;13351:4:0;12962:401;;;;;:::o;13583:222::-;13683:4;;13632;;-1:-1:-1;;;;;13683:4:0;13669:10;:18;;;;:42;;-1:-1:-1;13705:6:0;;;;13704:7;13669:42;:70;;;;-1:-1:-1;13728:11:0;;;;;;;13669:70;:128;;;;-1:-1:-1;;13784:13:0;;13774:4;13756:24;;;;:9;:24;;;;;;:41;;;13583:222::o;13813:1849::-;7787:6;:13;;-1:-1:-1;;7787:13:0;7796:4;7787:13;;;13959:14:::1;::::0;13920:19:::1;::::0;13888:13:::1;::::0;7787:6;;13888:107:::1;::::0;13993:1:::1;::::0;13888:86:::1;::::0;13959:14;13888:86;;:13;:31:::1;:52::i;:107::-;13862:133;;14008:20;14031:34;14049:15;14031:13;;:17;;:34;;;;:::i;:::-;14008:57:::0;-1:-1:-1;6664:15:0::1;6600:1;6664:2;:15;:::i;:::-;6648:31;::::0;:13:::1;:31;:::i;:::-;14096:4;14076:26;::::0;;;:11:::1;:26;::::0;;;;;;;14111:6:::1;::::0;-1:-1:-1;;;;;14111:6:0::1;14076:43:::0;;;;;;;:58;;;;14169:16;;14183:1:::1;14169:16:::0;;;;;::::1;::::0;;14076:26;;14169:16;;14183:1;14169:16;::::1;::::0;14076:26;14169:16:::1;::::0;::::1;;::::0;-1:-1:-1;14169:16:0::1;14145:40;;14214:4;14196;14201:1;14196:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14196:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14240:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;14240:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;14196:7;;14240:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14230:4;14235:1;14230:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14230:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14322:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14322:188:0;;14288:21:::1;::::0;14322:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14394:12;;14264:21:::1;::::0;14437:4;;14464::::1;::::0;14484:15:::1;::::0;14322:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14523:17;14543:40;14569:13;14543:21;:25;;:40;;;;:::i;:::-;14523:60;;14596:19;14618:94;14675:26;14699:1;14675:19;;:23;;:26;;;;:::i;:::-;14642:13;::::0;14618:19:::1;::::0;:38:::1;::::0;:23:::1;:38::i;:94::-;14596:116;;14725:26;14754:100;14852:1;14754:79;14821:11;14754:48;14782:19;;14754:9;:27;;:48;;;;:::i;:100::-;14725:129;;14865:26;14894:75;14947:11;14894:34;14908:19;;14894:9;:13;;:34;;;;:::i;:75::-;14865:104;;14980:20;15003:45;15036:11;15003:28;15017:13;;15003:9;:13;;:28;;;;:::i;:45::-;14980:68:::0;-1:-1:-1;15065:22:0;;15061:113:::1;;15112:20;::::0;15104:58:::1;::::0;-1:-1:-1;;;;;15112:20:0;;::::1;::::0;15104:58;::::1;;;::::0;15143:18;;15112:20:::1;15104:58:::0;15112:20;15104:58;15143:18;15112:20;15104:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15061:113;15188:16:::0;;15184:95:::1;;15229:14;::::0;15221:46:::1;::::0;-1:-1:-1;;;;;15229:14:0;;::::1;::::0;15221:46;::::1;;;::::0;15254:12;;15229:14:::1;15221:46:::0;15229:14;15221:46;15254:12;15229:14;15221:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15184:95;15295:19:::0;;15291:364:::1;;15331:6;::::0;15505:21:::1;::::0;15331:244:::1;::::0;-1:-1:-1;;;15331:244:0;;15407:4:::1;15331:244;::::0;::::1;12287:34:1::0;12337:18;;;12330:34;;;15331:6:0::1;12380:18:1::0;;;12373:34;;;12423:18;;;12416:34;-1:-1:-1;;;;;15505:21:0;;::::1;12466:19:1::0;;;12459:44;15545:15:0::1;12519:19:1::0;;;12512:35;15331:6:0;::::1;::::0;:22:::1;::::0;15361:18;;12221:19:1;;15331:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15595:48:0::1;::::0;;13043:25:1;;;13099:2;13084:18;;13077:34;;;15595:48:0::1;::::0;-1:-1:-1;13016:18:1;15595:48:0::1;;;;;;;15291:364;-1:-1:-1::0;;7823:6:0;:14;;-1:-1:-1;;7823:14:0;;;-1:-1:-1;;;;;;;13813:1849:0:o;1779:98::-;1837:7;1864:5;1868:1;1864;:5;:::i;13371:204::-;13488:4;13470:24;;;;:9;:24;;;;;;:39;;13499:9;13470:28;:39::i;:::-;13461:4;13443:24;;;;:9;:24;;;;;;;:66;;;;13525:42;;-1:-1:-1;;;;;13525:42:0;;;;;;;13557:9;160:25:1;;148:2;133:18;;14:177;13525:42:0;;;;;;;;13371:204;;:::o;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:248::-;1514:6;1522;1575:2;1563:9;1554:7;1550:23;1546:32;1543:52;;;1591:1;1588;1581:12;1543:52;-1:-1:-1;;1614:23:1;;;1684:2;1669:18;;;1656:32;;-1:-1:-1;1446:248:1:o;1699:456::-;1776:6;1784;1792;1845:2;1833:9;1824:7;1820:23;1816:32;1813:52;;;1861:1;1858;1851:12;1813:52;1900:9;1887:23;1919:31;1944:5;1919:31;:::i;:::-;1969:5;-1:-1:-1;2026:2:1;2011:18;;1998:32;2039:33;1998:32;2039:33;:::i;:::-;1699:456;;2091:7;;-1:-1:-1;;;2145:2:1;2130:18;;;;2117:32;;1699:456::o;2349:247::-;2408:6;2461:2;2449:9;2440:7;2436:23;2432:32;2429:52;;;2477:1;2474;2467:12;2429:52;2516:9;2503:23;2535:31;2560:5;2535:31;:::i;2601:180::-;2660:6;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;-1:-1:-1;2752:23:1;;2601:180;-1:-1:-1;2601:180:1:o;2786:118::-;2872:5;2865:13;2858:21;2851:5;2848:32;2838:60;;2894:1;2891;2884:12;2909:382;2974:6;2982;3035:2;3023:9;3014:7;3010:23;3006:32;3003:52;;;3051:1;3048;3041:12;3003:52;3090:9;3077:23;3109:31;3134:5;3109:31;:::i;:::-;3159:5;-1:-1:-1;3216:2:1;3201:18;;3188:32;3229:30;3188:32;3229:30;:::i;:::-;3278:7;3268:17;;;2909:382;;;;;:::o;3504:385::-;3590:6;3598;3606;3614;3667:3;3655:9;3646:7;3642:23;3638:33;3635:53;;;3684:1;3681;3674:12;3635:53;-1:-1:-1;;3707:23:1;;;3777:2;3762:18;;3749:32;;-1:-1:-1;3828:2:1;3813:18;;3800:32;;3879:2;3864:18;3851:32;;-1:-1:-1;3504:385:1;-1:-1:-1;3504:385:1:o;3894:529::-;3971:6;3979;3987;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;4095:9;4082:23;4114:31;4139:5;4114:31;:::i;:::-;4164:5;-1:-1:-1;4221:2:1;4206:18;;4193:32;4234:33;4193:32;4234:33;:::i;:::-;4286:7;-1:-1:-1;4345:2:1;4330:18;;4317:32;4358:33;4317:32;4358:33;:::i;:::-;4410:7;4400:17;;;3894:529;;;;;:::o;4428:388::-;4496:6;4504;4557:2;4545:9;4536:7;4532:23;4528:32;4525:52;;;4573:1;4570;4563:12;4525:52;4612:9;4599:23;4631:31;4656:5;4631:31;:::i;:::-;4681:5;-1:-1:-1;4738:2:1;4723:18;;4710:32;4751:33;4710:32;4751:33;:::i;4821:309::-;4886:6;4894;4947:2;4935:9;4926:7;4922:23;4918:32;4915:52;;;4963:1;4960;4953:12;4915:52;5002:9;4989:23;5021:28;5043:5;5021:28;:::i;5361:356::-;5563:2;5545:21;;;5582:18;;;5575:30;5641:34;5636:2;5621:18;;5614:62;5708:2;5693:18;;5361:356::o;6076:127::-;6137:10;6132:3;6128:20;6125:1;6118:31;6168:4;6165:1;6158:15;6192:4;6189:1;6182:15;6208:422;6297:1;6340:5;6297:1;6354:270;6375:7;6365:8;6362:21;6354:270;;;6434:4;6430:1;6426:6;6422:17;6416:4;6413:27;6410:53;;;6443:18;;:::i;:::-;6493:7;6483:8;6479:22;6476:55;;;6513:16;;;;6476:55;6592:22;;;;6552:15;;;;6354:270;;;6358:3;6208:422;;;;;:::o;6635:806::-;6684:5;6714:8;6704:80;;-1:-1:-1;6755:1:1;6769:5;;6704:80;6803:4;6793:76;;-1:-1:-1;6840:1:1;6854:5;;6793:76;6885:4;6903:1;6898:59;;;;6971:1;6966:130;;;;6878:218;;6898:59;6928:1;6919:10;;6942:5;;;6966:130;7003:3;6993:8;6990:17;6987:43;;;7010:18;;:::i;:::-;-1:-1:-1;;7066:1:1;7052:16;;7081:5;;6878:218;;7180:2;7170:8;7167:16;7161:3;7155:4;7152:13;7148:36;7142:2;7132:8;7129:16;7124:2;7118:4;7115:12;7111:35;7108:77;7105:159;;;-1:-1:-1;7217:19:1;;;7249:5;;7105:159;7296:34;7321:8;7315:4;7296:34;:::i;:::-;7366:6;7362:1;7358:6;7354:19;7345:7;7342:32;7339:58;;;7377:18;;:::i;:::-;7415:20;;6635:806;-1:-1:-1;;;6635:806:1:o;7446:140::-;7504:5;7533:47;7574:4;7564:8;7560:19;7554:4;7533:47;:::i;7591:168::-;7631:7;7697:1;7693;7689:6;7685:14;7682:1;7679:21;7674:1;7667:9;7660:17;7656:45;7653:71;;;7704:18;;:::i;:::-;-1:-1:-1;7744:9:1;;7591:168::o;8387:245::-;8454:6;8507:2;8495:9;8486:7;8482:23;8478:32;8475:52;;;8523:1;8520;8513:12;8475:52;8555:9;8549:16;8574:28;8596:5;8574:28;:::i;9386:217::-;9426:1;9452;9442:132;;9496:10;9491:3;9487:20;9484:1;9477:31;9531:4;9528:1;9521:15;9559:4;9556:1;9549:15;9442:132;-1:-1:-1;9588:9:1;;9386:217::o;9955:128::-;9995:3;10026:1;10022:6;10019:1;10016:13;10013:39;;;10032:18;;:::i;:::-;-1:-1:-1;10068:9:1;;9955:128::o;10573:127::-;10634:10;10629:3;10625:20;10622:1;10615:31;10665:4;10662:1;10655:15;10689:4;10686:1;10679:15;10705:251;10775:6;10828:2;10816:9;10807:7;10803:23;10799:32;10796:52;;;10844:1;10841;10834:12;10796:52;10876:9;10870:16;10895:31;10920:5;10895:31;:::i;10961:980::-;11223:4;11271:3;11260:9;11256:19;11302:6;11291:9;11284:25;11328:2;11366:6;11361:2;11350:9;11346:18;11339:34;11409:3;11404:2;11393:9;11389:18;11382:31;11433:6;11468;11462:13;11499:6;11491;11484:22;11537:3;11526:9;11522:19;11515:26;;11576:2;11568:6;11564:15;11550:29;;11597:1;11607:195;11621:6;11618:1;11615:13;11607:195;;;11686:13;;-1:-1:-1;;;;;11682:39:1;11670:52;;11777:15;;;;11742:12;;;;11718:1;11636:9;11607:195;;;-1:-1:-1;;;;;;;11858:32:1;;;;11853:2;11838:18;;11831:60;-1:-1:-1;;;11922:3:1;11907:19;11900:35;11819:3;10961:980;-1:-1:-1;;;10961:980:1:o;12558:306::-;12646:6;12654;12662;12715:2;12703:9;12694:7;12690:23;12686:32;12683:52;;;12731:1;12728;12721:12;12683:52;12760:9;12754:16;12744:26;;12810:2;12799:9;12795:18;12789:25;12779:35;;12854:2;12843:9;12839:18;12833:25;12823:35;;12558:306;;;;;:::o;13122:125::-;13162:4;13190:1;13187;13184:8;13181:34;;;13195:18;;:::i;:::-;-1:-1:-1;13232:9:1;;13122:125::o

Swarm Source

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