ETH Price: $3,639.34 (+8.22%)

Token

BuyinBitcoin (Bitcoin)
 

Overview

Max Total Supply

100,000,000 Bitcoin

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
fakr.eth
Balance
560,000 Bitcoin

Value
$0.00
0xD609fB07b439974d355915E240287f89aD3C8B12
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:
BuyinBitcoin

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

/*

Website: http://buyinbitcoinerc.com
DAPP: http://dapp.buyinbitcoinerc.com
X: https://x.com/Buyin_Bitcoin
TG: https://t.me/BuyinBitcoin

*/

pragma solidity 0.8.21;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IERC20 {
    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 getOwner() external view returns (address);
    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 Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
}

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,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

interface IDividendDistributor {
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;
    address _tokenowner;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IERC20 constant RWRD = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token || msg.sender == _tokenowner); _;
    }

    constructor (address _owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
        _tokenowner = _owner;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function rescueToken(address tokenAddress, uint256 tokens) public onlyToken returns (bool success) {
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RWRD);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0) { return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract BuyinBitcoin is IERC20, Auth {
    using SafeMath for uint256;

    address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "BuyinBitcoin";
    string public constant symbol = "Bitcoin";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 100_000_000 * 10**decimals;

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWhitelist;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public _maxWalletToken = (totalSupply * 15) / 1000;

    uint256 public rewardFee = 3;
    uint256 public marketingFee = 7;
    uint256 public totalFee = marketingFee + rewardFee;
    uint256 public constant feeDenominator = 100;

    uint256 public sellMultiplier = 200;
    uint256 public buyMultiplier = 200;
    uint256 public transferMultiplier = 0;

    address public marketingFeeReceiver;

    IDEXRouter public immutable router;
    address public immutable pair;

    bool public tradingOpen = false;

    DividendDistributor public immutable distributor;

    bool public swapEnabled = false;
    uint256 public swapThreshold = totalSupply / 500;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(msg.sender);

        isFeeExempt[msg.sender] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[msg.sender] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        marketingFeeReceiver = 0x12773A9b67B9c5884f990bBC9477a73516cdF1BA;

        _balances[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 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] != type(uint256).max){
            _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(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!tradingOpen && !isFeeExempt[sender]){
            require(isWhitelist[sender] || isWhitelist[recipient],"trading not open yet");
        }

        if (!isFeeExempt[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((_balances[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

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

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

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount, recipient);

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

        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        }

        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 shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {

        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        
        return amount.sub(feeAmount);
    }

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

    function manualSend() external {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH);
    }

    function rescueToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setMaxWallet(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function goLive() public onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

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

        uint256 amountETH = address(this).balance;
        
        uint256 amountETHReward = amountETH.mul(rewardFee).div(totalFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee);
        
        try distributor.deposit{value: amountETHReward}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        
        tmpSuccess = false;
    }

    function setIsDividendExempt(address holder, bool exempt) public onlyOwner {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);   
        }
    }

    function manage_dividendexempt(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            setIsDividendExempt(addresses[i], status);
        }
    }

    function manage_whitelist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isWhitelist[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

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

    function setFees(uint256 _rewardFee, uint256 _marketingFee) external onlyOwner {
        rewardFee = _rewardFee;
        marketingFee = _marketingFee;
        totalFee = _rewardFee + _marketingFee;
        require(totalFee <= 10, "Fees cannot be more than 10%");
    }

    function setSwapBackSettings(bool _enabled, uint256 _denom) external onlyOwner {
        require(_denom >= 100, "CA sells too high");
        require(_denom <= 10000, "CA sells too low");
        swapEnabled = _enabled;
        swapThreshold = totalSupply/_denom;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }
}

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_dividendexempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","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":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denom","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526103e8620000156012600a620004d9565b62000025906305f5e100620004f0565b6200003290600f620004f0565b6200003e91906200050a565b600755600360085560076009556008546009546200005d91906200052a565b600a90815560c8600b819055600c555f600d55600e805461ffff60a01b191690556101f4906200009090601290620004d9565b620000a0906305f5e100620004f0565b620000ac91906200050a565b600f55348015620000bb575f80fd5b505f80546001600160a01b03191633179055737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000121573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000147919062000540565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cd919062000540565b6001600160a01b0390811660a052305f90815260026020908152604080832060805190941683529290528190205f1990555133906200020c90620003bc565b6001600160a01b039091168152602001604051809103905ff08015801562000236573d5f803e3d5ffd5b506001600160a01b0390811660c052335f818152600360209081526040808320805460ff19908116600190811790925560a05190961684526005835281842080548716821790553080855282852080548816831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054881683179055948452818420805487168217905560069092528083208054861683179055928252918120805484168317905561dead90527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054909216179055600e80546001600160a01b0319167312773a9b67b9c5884f990bbc9477a73516cdf1ba179055620003436012600a620004d9565b62000353906305f5e100620004f0565b335f81815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003956012600a620004d9565b620003a5906305f5e100620004f0565b60405190815260200160405180910390a362000568565b610e7d806200291483390190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200041e57815f1904821115620004025762000402620003ca565b808516156200041057918102915b93841c9390800290620003e3565b509250929050565b5f826200043657506001620004d3565b816200044457505f620004d3565b81600181146200045d5760028114620004685762000488565b6001915050620004d3565b60ff8411156200047c576200047c620003ca565b50506001821b620004d3565b5060208310610133831016604e8410600b8410161715620004ad575081810a620004d3565b620004b98383620003de565b805f1904821115620004cf57620004cf620003ca565b0290505b92915050565b5f620004e960ff84168362000426565b9392505050565b8082028115828204841417620004d357620004d3620003ca565b5f826200052557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004d357620004d3620003ca565b5f6020828403121562000551575f80fd5b81516001600160a01b0381168114620004e9575f80fd5b60805160a05160c051612334620005e05f395f81816106b60152818161127c0152818161130e015281816116c00152818161176b0152611ad101525f8181610664015281816111ee015281816114ba0152818161190801528181611bb30152611be701525f81816108380152611a1d01526123345ff3fe60806040526004361061026c575f3560e01c80636ce46bc31161014a578063c3927d0f116100be578063f2fde38b11610078578063f2fde38b146107d5578063f4293890146107f4578063f708a64f14610808578063f887ea4014610827578063fed0d2a11461085a578063ffb54a991461086f575f80fd5b8063c3927d0f146106d8578063c683630d146106f7578063c867d60b14610725578063dd62ed3e14610753578063df20fd4914610797578063e96fada2146107b6575f80fd5b8063893d20e81161010f578063893d20e8146105dc5780638b4242671461060c57806395d89b4114610621578063a8aa1b3114610653578063a9059cbb14610686578063bfe10928146106a5575f80fd5b80636ce46bc3146105405780636ddd17131461055f57806370a082311461057f578063715018a6146105b357806378109e54146105c7575f80fd5b80632c28f579116101e15780633f4218e0116101a65780633f4218e01461047c5780634355855a146104aa5780635921652f146104d85780635d0044ca146104ed578063658d4b7f1461050c5780636b67c4df1461052b575f80fd5b80632c28f579146103e15780632f54bf6e146103f55780633121c7c014610422578063313ce5671461043757806333f3d6281461045d575f80fd5b80630b78f9c0116102325780630b78f9c014610352578063180b0d7e1461037157806318160ddd146103855780631df4ccfc1461039957806323b872dd146103ae5780632b112e49146103cd575f80fd5b8062108683146102775780630445b667146102985780630477e476146102c057806306fdde03146102df578063095ea7b314610323575f80fd5b3661027357005b5f80fd5b348015610282575f80fd5b50610296610291366004611e73565b61088f565b005b3480156102a3575f80fd5b506102ad600f5481565b6040519081526020015b60405180910390f35b3480156102cb575f80fd5b506102966102da366004611e73565b610992565b3480156102ea575f80fd5b506103166040518060400160405280600c81526020016b213abcb4b72134ba31b7b4b760a11b81525081565b6040516102b79190611ef2565b34801561032e575f80fd5b5061034261033d366004611f51565b610a27565b60405190151581526020016102b7565b34801561035d575f80fd5b5061029661036c366004611f7b565b610a93565b34801561037c575f80fd5b506102ad606481565b348015610390575f80fd5b506102ad610b27565b3480156103a4575f80fd5b506102ad600a5481565b3480156103b9575f80fd5b506103426103c8366004611f9b565b610b44565b3480156103d8575f80fd5b506102ad610c02565b3480156103ec575f80fd5b50610296610c88565b348015610400575f80fd5b5061034261040f366004611fd9565b5f546001600160a01b0391821691161490565b34801561042d575f80fd5b506102ad600c5481565b348015610442575f80fd5b5061044b601281565b60405160ff90911681526020016102b7565b348015610468575f80fd5b50610342610477366004611f51565b610cc8565b348015610487575f80fd5b50610342610496366004611fd9565b60036020525f908152604090205460ff1681565b3480156104b5575f80fd5b506103426104c4366004611fd9565b60056020525f908152604090205460ff1681565b3480156104e3575f80fd5b506102ad600d5481565b3480156104f8575f80fd5b50610296610507366004611ff4565b610dd0565b348015610517575f80fd5b5061029661052636600461200b565b610e8d565b348015610536575f80fd5b506102ad60095481565b34801561054b575f80fd5b5061029661055a366004612042565b610ee0565b34801561056a575f80fd5b50600e5461034290600160a81b900460ff1681565b34801561058a575f80fd5b506102ad610599366004611fd9565b6001600160a01b03165f9081526001602052604090205490565b3480156105be575f80fd5b50610296610f1a565b3480156105d2575f80fd5b506102ad60075481565b3480156105e7575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b7565b348015610617575f80fd5b506102ad60085481565b34801561062c575f80fd5b50610316604051806040016040528060078152602001662134ba31b7b4b760c91b81525081565b34801561065e575f80fd5b506105f47f000000000000000000000000000000000000000000000000000000000000000081565b348015610691575f80fd5b506103426106a0366004611f51565b610f87565b3480156106b0575f80fd5b506105f47f000000000000000000000000000000000000000000000000000000000000000081565b3480156106e3575f80fd5b506102966106f2366004611e73565b610f93565b348015610702575f80fd5b50610342610711366004611fd9565b60046020525f908152604090205460ff1681565b348015610730575f80fd5b5061034261073f366004611fd9565b60066020525f908152604090205460ff1681565b34801561075e575f80fd5b506102ad61076d36600461206b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156107a2575f80fd5b506102966107b1366004612097565b611006565b3480156107c1575f80fd5b50600e546105f4906001600160a01b031681565b3480156107e0575f80fd5b506102966107ef366004611fd9565b6110fc565b3480156107ff575f80fd5b50610296611178565b348015610813575f80fd5b5061029661082236600461200b565b6111af565b348015610832575f80fd5b506105f47f000000000000000000000000000000000000000000000000000000000000000081565b348015610865575f80fd5b506102ad600b5481565b34801561087a575f80fd5b50600e5461034290600160a01b900460ff1681565b5f546001600160a01b031633146108c15760405162461bcd60e51b81526004016108b8906120b3565b60405180910390fd5b6101f582106109205760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604482015264657373657360d81b60648201526084016108b8565b5f5b8281101561098c578160065f868685818110610940576109406120d3565b90506020020160208101906109559190611fd9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610985816120fb565b9050610922565b50505050565b5f546001600160a01b031633146109bb5760405162461bcd60e51b81526004016108b8906120b3565b5f5b8281101561098c578160045f8686858181106109db576109db6120d3565b90506020020160208101906109f09190611fd9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610a20816120fb565b90506109bd565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a819086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610abc5760405162461bcd60e51b81526004016108b8906120b3565b60088290556009819055610ad08183612113565b600a8181551015610b235760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203130250000000060448201526064016108b8565b5050565b610b336012600a612206565b610b41906305f5e100612214565b81565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610bed576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600282528381203382529091529190912054610bc991849061133f565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b610bf8848484611377565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54909190610c616012600a612206565b610c6f906305f5e100612214565b610c79919061222b565b610c83919061222b565b905090565b5f546001600160a01b03163314610cb15760405162461bcd60e51b81526004016108b8906120b3565b600e805461ffff60a01b191661010160a01b179055565b5f80546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108b8906120b3565b815f03610d62576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5f919061223e565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610dac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfb9190612255565b5f546001600160a01b03163314610df95760405162461bcd60e51b81526004016108b8906120b3565b600a811015610e555760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016108b8565b6103e881610e656012600a612206565b610e73906305f5e100612214565b610e7d9190612214565b610e879190612270565b60075550565b5f546001600160a01b03163314610eb65760405162461bcd60e51b81526004016108b8906120b3565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610f095760405162461bcd60e51b81526004016108b8906120b3565b600b91909155600c91909155600d55565b5f546001600160a01b03163314610f435760405162461bcd60e51b81526004016108b8906120b3565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f610bfb338484611377565b5f546001600160a01b03163314610fbc5760405162461bcd60e51b81526004016108b8906120b3565b5f5b8281101561098c57610ff6848483818110610fdb57610fdb6120d3565b9050602002016020810190610ff09190611fd9565b836111af565b610fff816120fb565b9050610fbe565b5f546001600160a01b0316331461102f5760405162461bcd60e51b81526004016108b8906120b3565b60648110156110745760405162461bcd60e51b81526020600482015260116024820152700868240e6cad8d8e640e8dede40d0d2ced607b1b60448201526064016108b8565b6127108111156110b95760405162461bcd60e51b815260206004820152601060248201526f43412073656c6c7320746f6f206c6f7760801b60448201526064016108b8565b600e805460ff60a81b1916600160a81b84151502179055806110dd6012600a612206565b6110eb906305f5e100612214565b6110f59190612270565b600f555050565b5f546001600160a01b031633146111255760405162461bcd60e51b81526004016108b8906120b3565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e5460405147916001600160a01b03169082156108fc029083905f818181858888f19350505050158015610b23573d5f803e3d5ffd5b5f546001600160a01b031633146111d85760405162461bcd60e51b81526004016108b8906120b3565b6001600160a01b038216301480159061122357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b61122b575f80fd5b6001600160a01b0382165f908152600560205260409020805460ff191682158015919091179091556112d857604051630a5b654b60e11b81526001600160a01b0383811660048301525f60248301527f000000000000000000000000000000000000000000000000000000000000000016906314b6ca96906044015b5f604051808303815f87803b1580156112be575f80fd5b505af11580156112d0573d5f803e3d5ffd5b505050505050565b6001600160a01b038281165f8181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201527f0000000000000000000000000000000000000000000000000000000000000000909116906314b6ca96906044016112a7565b5f81848411156113625760405162461bcd60e51b81526004016108b89190611ef2565b505f61136e848661222b565b95945050505050565b6010545f9060ff16156113965761138f848484611819565b9050610bfb565b600e54600160a01b900460ff161580156113c857506001600160a01b0384165f9081526003602052604090205460ff16155b1561144d576001600160a01b0384165f9081526004602052604090205460ff168061140a57506001600160a01b0383165f9081526004602052604090205460ff165b61144d5760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b8565b6001600160a01b0384165f9081526003602052604090205460ff1615801561148d57506001600160a01b0384165f9081526006602052604090205460ff16155b80156114b157506001600160a01b0383165f9081526006602052604090205460ff16155b80156114ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611568576007546001600160a01b0384165f9081526001602052604090205461151a908490612113565b11156115685760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016108b8565b6115706118fc565b1561157d5761157d61196d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600190915291909120546115ce91849061133f565b6001600160a01b0385165f90815260016020908152604080832093909355600390529081205460ff1615158061161d57506001600160a01b0384165f9081526003602052604090205460ff1615155b6116315761162c858486611ba4565b611633565b825b6001600160a01b0385165f908152600160205260409020549091506116589082611cd9565b6001600160a01b038086165f9081526001602090815260408083209490945591881681526005909152205460ff16611716576001600160a01b038581165f8181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201527f0000000000000000000000000000000000000000000000000000000000000000909116906314b6ca96906044015f604051808303815f87803b158015611703575f80fd5b505af1925050508015611714575060015b505b6001600160a01b0384165f9081526005602052604090205460ff166117c1576001600160a01b038481165f8181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201527f0000000000000000000000000000000000000000000000000000000000000000909116906314b6ca96906044015f604051808303815f87803b1580156117ae575f80fd5b505af19250505080156117bf575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180691815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260019091529182205461186991849061133f565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546118979083611cd9565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118ea9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611939575060105460ff16155b801561194e5750600e54600160a81b900460ff165b8015610c83575050600f54305f90815260016020526040902054101590565b6010805460ff19166001179055600f546040805160028082526060820183525f9260208301908036833701905050905030815f815181106119b0576119b06120d3565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106119f8576119f86120d3565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790611a5c9085905f9086903090429060040161228f565b5f604051808303815f87803b158015611a73575f80fd5b505af1158015611a85573d5f803e3d5ffd5b505050505f4790505f611aaf600a54611aa960085485611d3790919063ffffffff16565b90611db5565b90505f611acd600a54611aa960095486611d3790919063ffffffff16565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015611b28575f80fd5b505af193505050508015611b3a575060015b50600e546040515f916001600160a01b03169061753090849084818181858888f193505050503d805f8114611b8a576040519150601f19603f3d011682016040523d82523d5f602084013e611b8f565b606091505b50506010805460ff1916905550505050505050565b600d545f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603611be55750600b54611c23565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611c235750600c545b5f611c51611c32606480612214565b611aa984611c4b600a548a611d3790919063ffffffff16565b90611d37565b305f90815260016020526040902054909150611c6d9082611cd9565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cbd9085815260200190565b60405180910390a3611ccf8582611df6565b9695505050505050565b5f80611ce58385612113565b905083811015610bfb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108b8565b5f825f03611d4657505f610a8d565b5f611d518385612214565b905082611d5e8583612270565b14610bfb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108b8565b5f610bfb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e37565b5f610bfb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133f565b5f8183611e575760405162461bcd60e51b81526004016108b89190611ef2565b505f61136e8486612270565b8015158114611e70575f80fd5b50565b5f805f60408486031215611e85575f80fd5b833567ffffffffffffffff80821115611e9c575f80fd5b818601915086601f830112611eaf575f80fd5b813581811115611ebd575f80fd5b8760208260051b8501011115611ed1575f80fd5b60209283019550935050840135611ee781611e63565b809150509250925092565b5f6020808352835180828501525f5b81811015611f1d57858101830151858201604001528201611f01565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e70575f80fd5b5f8060408385031215611f62575f80fd5b8235611f6d81611f3d565b946020939093013593505050565b5f8060408385031215611f8c575f80fd5b50508035926020909101359150565b5f805f60608486031215611fad575f80fd5b8335611fb881611f3d565b92506020840135611fc881611f3d565b929592945050506040919091013590565b5f60208284031215611fe9575f80fd5b8135610bfb81611f3d565b5f60208284031215612004575f80fd5b5035919050565b5f806040838503121561201c575f80fd5b823561202781611f3d565b9150602083013561203781611e63565b809150509250929050565b5f805f60608486031215612054575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561207c575f80fd5b823561208781611f3d565b9150602083013561203781611f3d565b5f80604083850312156120a8575f80fd5b8235611f6d81611e63565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161210c5761210c6120e7565b5060010190565b80820180821115610a8d57610a8d6120e7565b600181815b8085111561216057815f1904821115612146576121466120e7565b8085161561215357918102915b93841c939080029061212b565b509250929050565b5f8261217657506001610a8d565b8161218257505f610a8d565b816001811461219857600281146121a2576121be565b6001915050610a8d565b60ff8411156121b3576121b36120e7565b50506001821b610a8d565b5060208310610133831016604e8410600b84101617156121e1575081810a610a8d565b6121eb8383612126565b805f19048211156121fe576121fe6120e7565b029392505050565b5f610bfb60ff841683612168565b8082028115828204841417610a8d57610a8d6120e7565b81810381811115610a8d57610a8d6120e7565b5f6020828403121561224e575f80fd5b5051919050565b5f60208284031215612265575f80fd5b8151610bfb81611e63565b5f8261228a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122dd5784516001600160a01b0316835293830193918301916001016122b8565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204c5667a0a64c627b7c224229aa403235137bcefe9de7aed32b2354b2039a616d64736f6c6343000815003360806040526ec097ce7bc90715b34b9f1000000000600b55348015610022575f80fd5b50604051610e7d380380610e7d83398101604081905261004191610092565b600280546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091555f8054821633179055600180546001600160a01b0393909316929091169190911790556100bf565b5f602082840312156100a2575f80fd5b81516001600160a01b03811681146100b8575f80fd5b9392505050565b610db1806100cc5f395ff3fe60806040526004361061009a575f3560e01c8063997664d711610062578063997664d71461014a578063ce7c2ac21461015f578063d0e30db0146101b4578063e2d2e219146101bc578063efca2eed146101d1578063f0fc6bca146101e6575f80fd5b806311ce023d1461009e57806314b6ca96146100c657806328fd3198146100e757806333f3d628146101065780633a98ef3914610135575b5f80fd5b3480156100a9575f80fd5b506100b3600b5481565b6040519081526020015b60405180910390f35b3480156100d1575f80fd5b506100e56100e0366004610b9a565b6101fa565b005b3480156100f2575f80fd5b506100b3610101366004610bc4565b61037d565b348015610111575f80fd5b50610125610120366004610b9a565b610403565b60405190151581526020016100bd565b348015610140575f80fd5b506100b360075481565b348015610155575f80fd5b506100b360085481565b34801561016a575f80fd5b50610199610179366004610bc4565b60066020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100bd565b6100e56104a5565b3480156101c7575f80fd5b506100b3600a5481565b3480156101dc575f80fd5b506100b360095481565b3480156101f1575f80fd5b506100e5610760565b5f546001600160a01b031633148061021c57506001546001600160a01b031633145b610224575f80fd5b6001600160a01b0382165f908152600660205260409020541561024a5761024a8261076b565b5f8111801561026e57506001600160a01b0382165f90815260066020526040902054155b156102d357600380546001600160a01b0384165f818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610305565b801580156102f757506001600160a01b0382165f9081526006602052604090205415155b156103055761030582610890565b6001600160a01b0382165f9081526006602052604090205460075461033591839161032f916109a0565b906109e1565b6007556001600160a01b0382165f90815260066020526040902081905561035b81610a44565b6001600160a01b039092165f9081526006602052604090206001019190915550565b6001600160a01b0381165f9081526006602052604081205481036103a257505f919050565b6001600160a01b0382165f908152600660205260408120546103c390610a44565b6001600160a01b0384165f908152600660205260409020600101549091508082116103f157505f9392505050565b6103fb82826109a0565b949350505050565b5f80546001600160a01b031633148061042657506001546001600160a01b031633145b61042e575f80fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610478573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049c9190610bdf565b90505b92915050565b5f546001600160a01b03163314806104c757506001546001600160a01b031633145b6104cf575f80fd5b6040516370a0823160e01b81523060048201525f90732260fac5e5542a773aa44fbcfedf7c193bc2c599906370a0823190602401602060405180830381865afa15801561051e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105429190610bfe565b6040805160028082526060820183529293505f9290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156105ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d29190610c15565b815f815181106105e4576105e4610c30565b60200260200101906001600160a01b031690816001600160a01b031681525050732260fac5e5542a773aa44fbcfedf7c193bc2c5998160018151811061062c5761062c610c30565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de95903490610671905f90869030904290600401610c44565b5f604051808303818588803b158015610688575f80fd5b505af115801561069a573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f935061071e9250859150732260fac5e5542a773aa44fbcfedf7c193bc2c599906370a0823190602401602060405180830381865afa1580156106f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107189190610bfe565b906109a0565b60085490915061072e90826109e1565b600855600754600b546107589161074f916107499085610a60565b90610ade565b600a54906109e1565b600a55505050565b6107693361076b565b565b6001600160a01b0381165f90815260066020526040812054900361078c5750565b5f6107968261037d565b9050801561088c576009546107ab90826109e1565b60095560405163a9059cbb60e01b81526001600160a01b038316600482015260248101829052732260fac5e5542a773aa44fbcfedf7c193bc2c5999063a9059cbb906044016020604051808303815f875af115801561080c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108309190610bdf565b506001600160a01b0382165f908152600560209081526040808320429055600690915290206002015461086390826109e1565b6001600160a01b0383165f90815260066020526040902060028101919091555461035b90610a44565b5050565b600380546108a090600190610cc0565b815481106108b0576108b0610c30565b5f9182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106108ed576108ed610c30565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812054600380549193929161093890600190610cc0565b8154811061094857610948610c30565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600380548061097d5761097d610cd3565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f61049c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b1f565b5f806109ed8385610ce7565b90508381101561049c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f61049f600b54610749600a5485610a6090919063ffffffff16565b5f825f03610a6f57505f61049f565b5f610a7a8385610cfa565b905082610a878583610d11565b1461049c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a3b565b5f61049c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b57565b5f8184841115610b425760405162461bcd60e51b8152600401610a3b9190610d30565b505f610b4e8486610cc0565b95945050505050565b5f8183610b775760405162461bcd60e51b8152600401610a3b9190610d30565b505f610b4e8486610d11565b6001600160a01b0381168114610b97575f80fd5b50565b5f8060408385031215610bab575f80fd5b8235610bb681610b83565b946020939093013593505050565b5f60208284031215610bd4575f80fd5b813561049c81610b83565b5f60208284031215610bef575f80fd5b8151801515811461049c575f80fd5b5f60208284031215610c0e575f80fd5b5051919050565b5f60208284031215610c25575f80fd5b815161049c81610b83565b634e487b7160e01b5f52603260045260245ffd5b5f60808201868352602060808185015281875180845260a08601915082890193505f5b81811015610c8c5784516001600160a01b031683529383019391830191600101610c67565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561049f5761049f610cac565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561049f5761049f610cac565b808202811582820484141761049f5761049f610cac565b5f82610d2b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b81811015610d5b57858101830151858201604001528201610d3f565b505f604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220c848d2227901ecceb2f9d92ca0805027e29c0401eff56c01f5c1dfeb84cc75d264736f6c63430008150033

Deployed Bytecode

0x60806040526004361061026c575f3560e01c80636ce46bc31161014a578063c3927d0f116100be578063f2fde38b11610078578063f2fde38b146107d5578063f4293890146107f4578063f708a64f14610808578063f887ea4014610827578063fed0d2a11461085a578063ffb54a991461086f575f80fd5b8063c3927d0f146106d8578063c683630d146106f7578063c867d60b14610725578063dd62ed3e14610753578063df20fd4914610797578063e96fada2146107b6575f80fd5b8063893d20e81161010f578063893d20e8146105dc5780638b4242671461060c57806395d89b4114610621578063a8aa1b3114610653578063a9059cbb14610686578063bfe10928146106a5575f80fd5b80636ce46bc3146105405780636ddd17131461055f57806370a082311461057f578063715018a6146105b357806378109e54146105c7575f80fd5b80632c28f579116101e15780633f4218e0116101a65780633f4218e01461047c5780634355855a146104aa5780635921652f146104d85780635d0044ca146104ed578063658d4b7f1461050c5780636b67c4df1461052b575f80fd5b80632c28f579146103e15780632f54bf6e146103f55780633121c7c014610422578063313ce5671461043757806333f3d6281461045d575f80fd5b80630b78f9c0116102325780630b78f9c014610352578063180b0d7e1461037157806318160ddd146103855780631df4ccfc1461039957806323b872dd146103ae5780632b112e49146103cd575f80fd5b8062108683146102775780630445b667146102985780630477e476146102c057806306fdde03146102df578063095ea7b314610323575f80fd5b3661027357005b5f80fd5b348015610282575f80fd5b50610296610291366004611e73565b61088f565b005b3480156102a3575f80fd5b506102ad600f5481565b6040519081526020015b60405180910390f35b3480156102cb575f80fd5b506102966102da366004611e73565b610992565b3480156102ea575f80fd5b506103166040518060400160405280600c81526020016b213abcb4b72134ba31b7b4b760a11b81525081565b6040516102b79190611ef2565b34801561032e575f80fd5b5061034261033d366004611f51565b610a27565b60405190151581526020016102b7565b34801561035d575f80fd5b5061029661036c366004611f7b565b610a93565b34801561037c575f80fd5b506102ad606481565b348015610390575f80fd5b506102ad610b27565b3480156103a4575f80fd5b506102ad600a5481565b3480156103b9575f80fd5b506103426103c8366004611f9b565b610b44565b3480156103d8575f80fd5b506102ad610c02565b3480156103ec575f80fd5b50610296610c88565b348015610400575f80fd5b5061034261040f366004611fd9565b5f546001600160a01b0391821691161490565b34801561042d575f80fd5b506102ad600c5481565b348015610442575f80fd5b5061044b601281565b60405160ff90911681526020016102b7565b348015610468575f80fd5b50610342610477366004611f51565b610cc8565b348015610487575f80fd5b50610342610496366004611fd9565b60036020525f908152604090205460ff1681565b3480156104b5575f80fd5b506103426104c4366004611fd9565b60056020525f908152604090205460ff1681565b3480156104e3575f80fd5b506102ad600d5481565b3480156104f8575f80fd5b50610296610507366004611ff4565b610dd0565b348015610517575f80fd5b5061029661052636600461200b565b610e8d565b348015610536575f80fd5b506102ad60095481565b34801561054b575f80fd5b5061029661055a366004612042565b610ee0565b34801561056a575f80fd5b50600e5461034290600160a81b900460ff1681565b34801561058a575f80fd5b506102ad610599366004611fd9565b6001600160a01b03165f9081526001602052604090205490565b3480156105be575f80fd5b50610296610f1a565b3480156105d2575f80fd5b506102ad60075481565b3480156105e7575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b7565b348015610617575f80fd5b506102ad60085481565b34801561062c575f80fd5b50610316604051806040016040528060078152602001662134ba31b7b4b760c91b81525081565b34801561065e575f80fd5b506105f47f000000000000000000000000a17308f8959460c211f8ffb32ec0c8130071097281565b348015610691575f80fd5b506103426106a0366004611f51565b610f87565b3480156106b0575f80fd5b506105f47f00000000000000000000000087ede17c11c70a9b43815331e9114c32ae2ef8eb81565b3480156106e3575f80fd5b506102966106f2366004611e73565b610f93565b348015610702575f80fd5b50610342610711366004611fd9565b60046020525f908152604090205460ff1681565b348015610730575f80fd5b5061034261073f366004611fd9565b60066020525f908152604090205460ff1681565b34801561075e575f80fd5b506102ad61076d36600461206b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156107a2575f80fd5b506102966107b1366004612097565b611006565b3480156107c1575f80fd5b50600e546105f4906001600160a01b031681565b3480156107e0575f80fd5b506102966107ef366004611fd9565b6110fc565b3480156107ff575f80fd5b50610296611178565b348015610813575f80fd5b5061029661082236600461200b565b6111af565b348015610832575f80fd5b506105f47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610865575f80fd5b506102ad600b5481565b34801561087a575f80fd5b50600e5461034290600160a01b900460ff1681565b5f546001600160a01b031633146108c15760405162461bcd60e51b81526004016108b8906120b3565b60405180910390fd5b6101f582106109205760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604482015264657373657360d81b60648201526084016108b8565b5f5b8281101561098c578160065f868685818110610940576109406120d3565b90506020020160208101906109559190611fd9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610985816120fb565b9050610922565b50505050565b5f546001600160a01b031633146109bb5760405162461bcd60e51b81526004016108b8906120b3565b5f5b8281101561098c578160045f8686858181106109db576109db6120d3565b90506020020160208101906109f09190611fd9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610a20816120fb565b90506109bd565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a819086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610abc5760405162461bcd60e51b81526004016108b8906120b3565b60088290556009819055610ad08183612113565b600a8181551015610b235760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203130250000000060448201526064016108b8565b5050565b610b336012600a612206565b610b41906305f5e100612214565b81565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610bed576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600282528381203382529091529190912054610bc991849061133f565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b610bf8848484611377565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54909190610c616012600a612206565b610c6f906305f5e100612214565b610c79919061222b565b610c83919061222b565b905090565b5f546001600160a01b03163314610cb15760405162461bcd60e51b81526004016108b8906120b3565b600e805461ffff60a01b191661010160a01b179055565b5f80546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108b8906120b3565b815f03610d62576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5f919061223e565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610dac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfb9190612255565b5f546001600160a01b03163314610df95760405162461bcd60e51b81526004016108b8906120b3565b600a811015610e555760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016108b8565b6103e881610e656012600a612206565b610e73906305f5e100612214565b610e7d9190612214565b610e879190612270565b60075550565b5f546001600160a01b03163314610eb65760405162461bcd60e51b81526004016108b8906120b3565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610f095760405162461bcd60e51b81526004016108b8906120b3565b600b91909155600c91909155600d55565b5f546001600160a01b03163314610f435760405162461bcd60e51b81526004016108b8906120b3565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f610bfb338484611377565b5f546001600160a01b03163314610fbc5760405162461bcd60e51b81526004016108b8906120b3565b5f5b8281101561098c57610ff6848483818110610fdb57610fdb6120d3565b9050602002016020810190610ff09190611fd9565b836111af565b610fff816120fb565b9050610fbe565b5f546001600160a01b0316331461102f5760405162461bcd60e51b81526004016108b8906120b3565b60648110156110745760405162461bcd60e51b81526020600482015260116024820152700868240e6cad8d8e640e8dede40d0d2ced607b1b60448201526064016108b8565b6127108111156110b95760405162461bcd60e51b815260206004820152601060248201526f43412073656c6c7320746f6f206c6f7760801b60448201526064016108b8565b600e805460ff60a81b1916600160a81b84151502179055806110dd6012600a612206565b6110eb906305f5e100612214565b6110f59190612270565b600f555050565b5f546001600160a01b031633146111255760405162461bcd60e51b81526004016108b8906120b3565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e5460405147916001600160a01b03169082156108fc029083905f818181858888f19350505050158015610b23573d5f803e3d5ffd5b5f546001600160a01b031633146111d85760405162461bcd60e51b81526004016108b8906120b3565b6001600160a01b038216301480159061122357507f000000000000000000000000a17308f8959460c211f8ffb32ec0c813007109726001600160a01b0316826001600160a01b031614155b61122b575f80fd5b6001600160a01b0382165f908152600560205260409020805460ff191682158015919091179091556112d857604051630a5b654b60e11b81526001600160a01b0383811660048301525f60248301527f00000000000000000000000087ede17c11c70a9b43815331e9114c32ae2ef8eb16906314b6ca96906044015b5f604051808303815f87803b1580156112be575f80fd5b505af11580156112d0573d5f803e3d5ffd5b505050505050565b6001600160a01b038281165f8181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201527f00000000000000000000000087ede17c11c70a9b43815331e9114c32ae2ef8eb909116906314b6ca96906044016112a7565b5f81848411156113625760405162461bcd60e51b81526004016108b89190611ef2565b505f61136e848661222b565b95945050505050565b6010545f9060ff16156113965761138f848484611819565b9050610bfb565b600e54600160a01b900460ff161580156113c857506001600160a01b0384165f9081526003602052604090205460ff16155b1561144d576001600160a01b0384165f9081526004602052604090205460ff168061140a57506001600160a01b0383165f9081526004602052604090205460ff165b61144d5760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b8565b6001600160a01b0384165f9081526003602052604090205460ff1615801561148d57506001600160a01b0384165f9081526006602052604090205460ff16155b80156114b157506001600160a01b0383165f9081526006602052604090205460ff16155b80156114ef57507f000000000000000000000000a17308f8959460c211f8ffb32ec0c813007109726001600160a01b0316836001600160a01b031614155b15611568576007546001600160a01b0384165f9081526001602052604090205461151a908490612113565b11156115685760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016108b8565b6115706118fc565b1561157d5761157d61196d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600190915291909120546115ce91849061133f565b6001600160a01b0385165f90815260016020908152604080832093909355600390529081205460ff1615158061161d57506001600160a01b0384165f9081526003602052604090205460ff1615155b6116315761162c858486611ba4565b611633565b825b6001600160a01b0385165f908152600160205260409020549091506116589082611cd9565b6001600160a01b038086165f9081526001602090815260408083209490945591881681526005909152205460ff16611716576001600160a01b038581165f8181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201527f00000000000000000000000087ede17c11c70a9b43815331e9114c32ae2ef8eb909116906314b6ca96906044015f604051808303815f87803b158015611703575f80fd5b505af1925050508015611714575060015b505b6001600160a01b0384165f9081526005602052604090205460ff166117c1576001600160a01b038481165f8181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201527f00000000000000000000000087ede17c11c70a9b43815331e9114c32ae2ef8eb909116906314b6ca96906044015f604051808303815f87803b1580156117ae575f80fd5b505af19250505080156117bf575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180691815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260019091529182205461186991849061133f565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546118979083611cd9565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118ea9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000a17308f8959460c211f8ffb32ec0c813007109721614801590611939575060105460ff16155b801561194e5750600e54600160a81b900460ff165b8015610c83575050600f54305f90815260016020526040902054101590565b6010805460ff19166001179055600f546040805160028082526060820183525f9260208301908036833701905050905030815f815181106119b0576119b06120d3565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106119f8576119f86120d3565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790611a5c9085905f9086903090429060040161228f565b5f604051808303815f87803b158015611a73575f80fd5b505af1158015611a85573d5f803e3d5ffd5b505050505f4790505f611aaf600a54611aa960085485611d3790919063ffffffff16565b90611db5565b90505f611acd600a54611aa960095486611d3790919063ffffffff16565b90507f00000000000000000000000087ede17c11c70a9b43815331e9114c32ae2ef8eb6001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015611b28575f80fd5b505af193505050508015611b3a575060015b50600e546040515f916001600160a01b03169061753090849084818181858888f193505050503d805f8114611b8a576040519150601f19603f3d011682016040523d82523d5f602084013e611b8f565b606091505b50506010805460ff1916905550505050505050565b600d545f906001600160a01b037f000000000000000000000000a17308f8959460c211f8ffb32ec0c81300710972811690841603611be55750600b54611c23565b7f000000000000000000000000a17308f8959460c211f8ffb32ec0c813007109726001600160a01b0316856001600160a01b031603611c235750600c545b5f611c51611c32606480612214565b611aa984611c4b600a548a611d3790919063ffffffff16565b90611d37565b305f90815260016020526040902054909150611c6d9082611cd9565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cbd9085815260200190565b60405180910390a3611ccf8582611df6565b9695505050505050565b5f80611ce58385612113565b905083811015610bfb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108b8565b5f825f03611d4657505f610a8d565b5f611d518385612214565b905082611d5e8583612270565b14610bfb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108b8565b5f610bfb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e37565b5f610bfb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133f565b5f8183611e575760405162461bcd60e51b81526004016108b89190611ef2565b505f61136e8486612270565b8015158114611e70575f80fd5b50565b5f805f60408486031215611e85575f80fd5b833567ffffffffffffffff80821115611e9c575f80fd5b818601915086601f830112611eaf575f80fd5b813581811115611ebd575f80fd5b8760208260051b8501011115611ed1575f80fd5b60209283019550935050840135611ee781611e63565b809150509250925092565b5f6020808352835180828501525f5b81811015611f1d57858101830151858201604001528201611f01565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e70575f80fd5b5f8060408385031215611f62575f80fd5b8235611f6d81611f3d565b946020939093013593505050565b5f8060408385031215611f8c575f80fd5b50508035926020909101359150565b5f805f60608486031215611fad575f80fd5b8335611fb881611f3d565b92506020840135611fc881611f3d565b929592945050506040919091013590565b5f60208284031215611fe9575f80fd5b8135610bfb81611f3d565b5f60208284031215612004575f80fd5b5035919050565b5f806040838503121561201c575f80fd5b823561202781611f3d565b9150602083013561203781611e63565b809150509250929050565b5f805f60608486031215612054575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561207c575f80fd5b823561208781611f3d565b9150602083013561203781611f3d565b5f80604083850312156120a8575f80fd5b8235611f6d81611e63565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161210c5761210c6120e7565b5060010190565b80820180821115610a8d57610a8d6120e7565b600181815b8085111561216057815f1904821115612146576121466120e7565b8085161561215357918102915b93841c939080029061212b565b509250929050565b5f8261217657506001610a8d565b8161218257505f610a8d565b816001811461219857600281146121a2576121be565b6001915050610a8d565b60ff8411156121b3576121b36120e7565b50506001821b610a8d565b5060208310610133831016604e8410600b84101617156121e1575081810a610a8d565b6121eb8383612126565b805f19048211156121fe576121fe6120e7565b029392505050565b5f610bfb60ff841683612168565b8082028115828204841417610a8d57610a8d6120e7565b81810381811115610a8d57610a8d6120e7565b5f6020828403121561224e575f80fd5b5051919050565b5f60208284031215612265575f80fd5b8151610bfb81611e63565b5f8261228a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122dd5784516001600160a01b0316835293830193918301916001016122b8565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204c5667a0a64c627b7c224229aa403235137bcefe9de7aed32b2354b2039a616d64736f6c63430008150033

Deployed Bytecode Sourcemap

8619:10039:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17512:310;;;;;;;;;;-1:-1:-1;17512:310:0;;;;;:::i;:::-;;:::i;:::-;;10107:48;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;10107:48:0;;;;;;;;17296:208;;;;;;;;;;-1:-1:-1;17296:208:0;;;;;:::i;:::-;;:::i;8920:44::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8920:44:0;;;;;;;;;;;;:::i;11509:216::-;;;;;;;;;;-1:-1:-1;11509:216:0;;;;;:::i;:::-;;:::i;:::-;;;2248:14:1;;2241:22;2223:41;;2211:2;2196:18;11509:216:0;2083:187:1;17957:273:0;;;;;;;;;;-1:-1:-1;17957:273:0;;;;;:::i;:::-;;:::i;9667:44::-;;;;;;;;;;;;9708:3;9667:44;;9063:64;;;;;;;;;;;;;:::i;9610:50::-;;;;;;;;;;;;;;;;11897:370;;;;;;;;;;-1:-1:-1;11897:370:0;;;;;:::i;:::-;;:::i;18520:135::-;;;;;;;;;;;;;:::i;15739:101::-;;;;;;;;;;;;;:::i;2496:103::-;;;;;;;;;;-1:-1:-1;2496:103:0;;;;;:::i;:::-;2551:4;2586:5;-1:-1:-1;;;;;2575:16:0;;;2586:5;;2575:16;;2496:103;9762:34;;;;;;;;;;;;;;;;9019:35;;;;;;;;;;;;9052:2;9019:35;;;;;3413:4:1;3401:17;;;3383:36;;3371:2;3356:18;9019:35:0;3241:184:1;14991:282:0;;;;;;;;;;-1:-1:-1;14991:282:0;;;;;:::i;:::-;;:::i;9251:44::-;;;;;;;;;;-1:-1:-1;9251:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9353:49;;;;;;;;;;-1:-1:-1;9353:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9803:37;;;;;;;;;;;;;;;;15487:244;;;;;;;;;;-1:-1:-1;15487:244:0;;;;;:::i;:::-;;:::i;17830:119::-;;;;;;;;;;-1:-1:-1;17830:119:0;;;;;:::i;:::-;;:::i;9572:31::-;;;;;;;;;;;;;;;;15281:198;;;;;;;;;;-1:-1:-1;15281:198:0;;;;;:::i;:::-;;:::i;10069:31::-;;;;;;;;;;-1:-1:-1;10069:31:0;;;;-1:-1:-1;;;10069:31:0;;;;;;11257:105;;;;;;;;;;-1:-1:-1;11257:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11341:18:0;11323:7;11341:18;;;:9;:18;;;;;;;11257:105;2751:128;;;;;;;;;;;;;:::i;9470:58::-;;;;;;;;;;;;;;;;11173:78;;;;;;;;;;-1:-1:-1;11225:7:0;11243:5;-1:-1:-1;;;;;11243:5:0;11173:78;;;-1:-1:-1;;;;;4487:32:1;;;4469:51;;4457:2;4442:18;11173:78:0;4323:203:1;9537:28:0;;;;;;;;;;;;;;;;8971:41;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8971:41:0;;;;;9934:29;;;;;;;;;;;;;;;11733:156;;;;;;;;;;-1:-1:-1;11733:156:0;;;;;:::i;:::-;;:::i;10012:48::-;;;;;;;;;;;;;;;17068:220;;;;;;;;;;-1:-1:-1;17068:220:0;;;;;:::i;:::-;;:::i;9302:44::-;;;;;;;;;;-1:-1:-1;9302:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9409:52;;;;;;;;;;-1:-1:-1;9409:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11368:133;;;;;;;;;;-1:-1:-1;11368:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11470:19:0;;;11452:7;11470:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11368:133;18238:274;;;;;;;;;;-1:-1:-1;18238:274:0;;;;;:::i;:::-;;:::i;9849:35::-;;;;;;;;;;-1:-1:-1;9849:35:0;;;;-1:-1:-1;;;;;9849:35:0;;;2607:136;;;;;;;;;;-1:-1:-1;2607:136:0;;;;;:::i;:::-;;:::i;14832:151::-;;;;;;;;;;;;;:::i;16711:349::-;;;;;;;;;;-1:-1:-1;16711:349:0;;;;;:::i;:::-;;:::i;9893:34::-;;;;;;;;;;;;;;;9720:35;;;;;;;;;;;;;;;;9972:31;;;;;;;;;;-1:-1:-1;9972:31:0;;;;-1:-1:-1;;;9972:31:0;;;;;;17512:310;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;;;;;;;;;17646:3:::1;17627:22:::0;::::1;17619:71;;;::::0;-1:-1:-1;;;17619:71:0;;6495:2:1;17619:71:0::1;::::0;::::1;6477:21:1::0;6534:2;6514:18;;;6507:30;6573:34;6553:18;;;6546:62;-1:-1:-1;;;6624:18:1;;;6617:35;6669:19;;17619:71:0::1;6293:401:1::0;17619:71:0::1;17706:9;17701:114;17719:20:::0;;::::1;17701:114;;;17797:6;17761:19;:33;17781:9;;17791:1;17781:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17761:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17761:33:0;:42;;-1:-1:-1;;17761:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17741:3:::1;::::0;::::1;:::i;:::-;;;17701:114;;;;17512:310:::0;;;:::o;17296:208::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;17398:9:::1;17393:104;17409:20:::0;;::::1;17393:104;;;17479:6;17451:11;:25;17463:9;;17473:1;17463:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17451:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17451:25:0;:34;;-1:-1:-1;;17451:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17431:3:::1;::::0;::::1;:::i;:::-;;;17393:104;;11509:216:::0;11613:10;11584:4;11601:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11601:32:0;;;;;;;;;;:41;;;11658:37;11584:4;;11601:32;;11658:37;;;;11636:6;1038:25:1;;1026:2;1011:18;;892:177;11658:37:0;;;;;;;;-1:-1:-1;11713:4:0;11509:216;;;;;:::o;17957:273::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;18047:9:::1;:22:::0;;;18080:12:::1;:28:::0;;;18130:26:::1;18095:13:::0;18059:10;18130:26:::1;:::i;:::-;18119:8;:37:::0;;;-1:-1:-1;18175:14:0::1;18167:55;;;::::0;-1:-1:-1;;;18167:55:0;;7435:2:1;18167:55:0::1;::::0;::::1;7417:21:1::0;7474:2;7454:18;;;7447:30;7513;7493:18;;;7486:58;7561:18;;18167:55:0::1;7233:352:1::0;18167:55:0::1;17957:273:::0;;:::o;9063:64::-;9115:12;9052:2;9115;:12;:::i;:::-;9101:26;;:11;:26;:::i;:::-;9063:64;:::o;11897:370::-;-1:-1:-1;;;;;12017:19:0;;11997:4;12017:19;;;:11;:19;;;;;;;;12037:10;12017:31;;;;;;;;-1:-1:-1;;12017:52:0;12014:186;;12119:69;;;;;;;;;;;-1:-1:-1;;;12119:69:0;;;;;;;;-1:-1:-1;;;;;12119:19:0;;-1:-1:-1;12119:19:0;;;:11;:19;;;;;12139:10;12119:31;;;;;;;;;;:69;;12155:6;;12119:35;:69::i;:::-;-1:-1:-1;;;;;12085:19:0;;;;;;:11;:19;;;;;;;;12105:10;12085:31;;;;;;;:103;12014:186;12219:40;12233:6;12241:9;12252:6;12219:13;:40::i;:::-;12212:47;;11897:370;;;;;;:::o;18520:135::-;11341:9;:18;;;;8796:42;18573:7;11341:18;;;;;18573:7;;11341:18;9115:12;9052:2;9115;:12;:::i;:::-;9101:26;;:11;:26;:::i;:::-;18600:29;;;;:::i;:::-;:47;;;;:::i;:::-;18593:54;;18520:135;:::o;15739:101::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;15785:11:::1;:18:::0;;-1:-1:-1;;;;15814:18:0;-1:-1:-1;;;15814:18:0;;;15739:101::o;14991:282::-;15078:12;2586:5;;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;15106:6:::1;15116:1;15106:11:::0;15103:96:::1;;15142:45;::::0;-1:-1:-1;;;15142:45:0;;15181:4:::1;15142:45;::::0;::::1;4469:51:1::0;-1:-1:-1;;;;;15142:30:0;::::1;::::0;::::1;::::0;4442:18:1;;15142:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15133:54;;15103:96;15216:49;::::0;-1:-1:-1;;;15216:49:0;;15246:10:::1;15216:49;::::0;::::1;9642:51:1::0;9709:18;;;9702:34;;;-1:-1:-1;;;;;15216:29:0;::::1;::::0;::::1;::::0;9615:18:1;;15216:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15487:244::-:0;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;15607:2:::1;15580:23;:29;;15572:75;;;::::0;-1:-1:-1;;;15572:75:0;;10199:2:1;15572:75:0::1;::::0;::::1;10181:21:1::0;10238:2;10218:18;;;10211:30;10277:34;10257:18;;;10250:62;-1:-1:-1;;;10328:18:1;;;10321:32;10370:19;;15572:75:0::1;9997:398:1::0;15572:75:0::1;15719:4;15691:23:::0;9115:12:::1;9052:2;9115;:12;:::i;:::-;9101:26;::::0;:11:::1;:26;:::i;:::-;15677:37;;;;:::i;:::-;15676:47;;;;:::i;:::-;15658:15;:65:::0;-1:-1:-1;15487:244:0:o;17830:119::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17913:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17913:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17830:119::o;15281:198::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;15380:14:::1;:22:::0;;;;15413:13:::1;:20:::0;;;;15444:18:::1;:27:::0;15281:198::o;2751:128::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;2826:1:::1;2810:18:::0;;-1:-1:-1;;;;;;2810:18:0::1;::::0;;2844:27:::1;::::0;4469:51:1;;;2844:27:0::1;::::0;4457:2:1;4442:18;2844:27:0::1;;;;;;;2751:128::o:0;11733:156::-;11813:4;11837:44;11851:10;11863:9;11874:6;11837:13;:44::i;17068:220::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;17175:9:::1;17170:111;17186:20:::0;;::::1;17170:111;;;17228:41;17248:9;;17258:1;17248:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17262:6;17228:19;:41::i;:::-;17208:3;::::0;::::1;:::i;:::-;;;17170:111;;18238:274:::0;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;18346:3:::1;18336:6;:13;;18328:43;;;::::0;-1:-1:-1;;;18328:43:0;;10824:2:1;18328:43:0::1;::::0;::::1;10806:21:1::0;10863:2;10843:18;;;10836:30;-1:-1:-1;;;10882:18:1;;;10875:47;10939:18;;18328:43:0::1;10622:341:1::0;18328:43:0::1;18400:5;18390:6;:15;;18382:44;;;::::0;-1:-1:-1;;;18382:44:0;;11170:2:1;18382:44:0::1;::::0;::::1;11152:21:1::0;11209:2;11189:18;;;11182:30;-1:-1:-1;;;11228:18:1;;;11221:46;11284:18;;18382:44:0::1;10968:340:1::0;18382:44:0::1;18437:11;:22:::0;;-1:-1:-1;;;;18437:22:0::1;-1:-1:-1::0;;;18437:22:0;::::1;;;;::::0;;18498:6;9115:12:::1;9052:2;9115;:12;:::i;:::-;9101:26;::::0;:11:::1;:26;:::i;:::-;18486:18;;;;:::i;:::-;18470:13;:34:::0;-1:-1:-1;;18238:274:0:o;2607:136::-;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;2683:5:::1;:11:::0;;-1:-1:-1;;;;;;2683:11:0::1;-1:-1:-1::0;;;;;2683:11:0;::::1;::::0;;::::1;::::0;;;2710:25:::1;::::0;4469:51:1;;;2710:25:0::1;::::0;4457:2:1;4442:18;2710:25:0::1;;;;;;;2607:136:::0;:::o;14832:151::-;14934:20;;14926:49;;14894:21;;-1:-1:-1;;;;;14934:20:0;;14926:49;;;;;14894:21;;14874:17;14926:49;14874:17;14926:49;14894:21;14934:20;14926:49;;;;;;;;;;;;;;;;;;;16711:349;2551:4;2586:5;-1:-1:-1;;;;;2586:5:0;2455:10;2575:16;2439:38;;;;-1:-1:-1;;;2439:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16805:23:0;::::1;16823:4;16805:23;::::0;::::1;::::0;:41:::1;;;16842:4;-1:-1:-1::0;;;;;16832:14:0::1;:6;-1:-1:-1::0;;;;;16832:14:0::1;;;16805:41;16797:50;;;::::0;::::1;;-1:-1:-1::0;;;;;16858:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;16858:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16902:151:::1;;16927:31;::::0;-1:-1:-1;;;16927:31:0;;-1:-1:-1;;;;;9660:32:1;;;16927:31:0::1;::::0;::::1;9642:51:1::0;16956:1:0::1;9709:18:1::0;;;9702:34;16927:11:0::1;:20;::::0;::::1;::::0;9615:18:1;;16927:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17957:273:::0;;:::o;16902:151::-:1;-1:-1:-1::0;;;;;17020:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;16991:47;;-1:-1:-1;;;16991:47:0;;::::1;::::0;::::1;9642:51:1::0;;;;9709:18;;;9702:34;16991:11:0::1;:20:::0;;::::1;::::0;::::1;::::0;9615:18:1;;16991:47:0::1;9468:274:1::0;575:192:0;661:7;697:12;689:6;;;;681:29;;;;-1:-1:-1;;;681:29:0;;;;;;;;:::i;:::-;-1:-1:-1;721:9:0;733:5;737:1;733;:5;:::i;:::-;721:17;575:192;-1:-1:-1;;;;;575:192:0:o;12275:1274::-;12387:6;;12367:4;;12387:6;;12384:63;;;12403:41;12418:6;12426:9;12437:6;12403:14;:41::i;:::-;12396:48;;;;12384:63;12463:11;;-1:-1:-1;;;12463:11:0;;;;12462:12;:36;;;;-1:-1:-1;;;;;;12479:19:0;;;;;;:11;:19;;;;;;;;12478:20;12462:36;12459:144;;;-1:-1:-1;;;;;12522:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;12545:22:0;;;;;;:11;:22;;;;;;;;12522:45;12514:77;;;;-1:-1:-1;;;12514:77:0;;12018:2:1;12514:77:0;;;12000:21:1;12057:2;12037:18;;;12030:30;-1:-1:-1;;;12076:18:1;;;12069:50;12136:18;;12514:77:0;11816:344:1;12514:77:0;-1:-1:-1;;;;;12620:19:0;;;;;;:11;:19;;;;;;;;12619:20;:52;;;;-1:-1:-1;;;;;;12644:27:0;;;;;;:19;:27;;;;;;;;12643:28;12619:52;:87;;;;-1:-1:-1;;;;;;12676:30:0;;;;;;:19;:30;;;;;;;;12675:31;12619:87;:108;;;;;12723:4;-1:-1:-1;;;;;12710:17:0;:9;-1:-1:-1;;;;;12710:17:0;;;12619:108;12615:227;;;12787:15;;-1:-1:-1;;;;;12753:20:0;;;;;;:9;:20;;;;;;:29;;12776:6;;12753:29;:::i;:::-;12752:50;;12744:86;;;;-1:-1:-1;;;12744:86:0;;12367:2:1;12744:86:0;;;12349:21:1;12406:2;12386:18;;;12379:30;12445:26;12425:18;;;12418:54;12489:18;;12744:86:0;12165:348:1;12744:86:0;12857:16;:14;:16::i;:::-;12854:35;;;12876:10;:8;:10::i;:::-;12921:53;;;;;;;;;;;-1:-1:-1;;;12921:53:0;;;;;;;;-1:-1:-1;;;;;12921:17:0;;-1:-1:-1;12921:17:0;;;:9;:17;;;;;;;;:53;;12943:6;;12921:21;:53::i;:::-;-1:-1:-1;;;;;12901:17:0;;;;;;:9;:17;;;;;;;;:73;;;;13986:11;:19;;;;;;;;13985:20;13013:22;:51;;;-1:-1:-1;;;;;;13986:19:0;;13961:4;13986:19;;;:11;:19;;;;;;;;13985:20;13039:25;13013:51;13012:99;;13077:34;13085:6;13093;13101:9;13077:7;:34::i;:::-;13012:99;;;13068:6;13012:99;-1:-1:-1;;;;;13147:20:0;;;;;;:9;:20;;;;;;12987:124;;-1:-1:-1;13147:40:0;;12987:124;13147:24;:40::i;:::-;-1:-1:-1;;;;;13124:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;13204:24;;;;;:16;:24;;;;;;;13200:119;;-1:-1:-1;;;;;13278:17:0;;;;;;;:9;:17;;;;;;;;13249:47;;-1:-1:-1;;;13249:47:0;;;;;9642:51:1;;;;9709:18;;;9702:34;13249:11:0;:20;;;;;;9615:18:1;;13249:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13245:63;;-1:-1:-1;;;;;13335:27:0;;;;;;:16;:27;;;;;;;;13331:128;;-1:-1:-1;;;;;13415:20:0;;;;;;;:9;:20;;;;;;;;13383:53;;-1:-1:-1;;;13383:53:0;;;;;9642:51:1;;;;9709:18;;;9702:34;13383:11:0;:20;;;;;;9615:18:1;;13383:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13379:69;;13493:9;-1:-1:-1;;;;;13476:43:0;13485:6;-1:-1:-1;;;;;13476:43:0;;13504:14;13476:43;;;;1038:25:1;;1026:2;1011:18;;892:177;13476:43:0;;;;;;;;-1:-1:-1;13537:4:0;;12275:1274;-1:-1:-1;;;;12275:1274:0:o;13561:330::-;13691:53;;;;;;;;;;;-1:-1:-1;;;13691:53:0;;;;;;;;-1:-1:-1;;;;;13691:17:0;;13654:4;13691:17;;;:9;:17;;;;;;;:53;;13713:6;;13691:21;:53::i;:::-;-1:-1:-1;;;;;13671:17:0;;;;;;;:9;:17;;;;;;:73;;;;13778:20;;;;;;;:32;;13803:6;13778:24;:32::i;:::-;-1:-1:-1;;;;;13755:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13826:35;;;;;;;;;;13854:6;1038:25:1;;1026:2;1011:18;;892:177;13826:35:0;;;;;;;;-1:-1:-1;13879:4:0;13561:330;;;;;:::o;14627:197::-;14676:4;14700:10;-1:-1:-1;;;;;14714:4:0;14700:18;;;;;:38;;-1:-1:-1;14732:6:0;;;;14731:7;14700:38;:62;;;;-1:-1:-1;14751:11:0;;-1:-1:-1;;;14751:11:0;;;;14700:62;:116;;;;-1:-1:-1;;14803:13:0;;14793:4;14775:24;;;;:9;:24;;;;;;:41;;;14627:197::o;15848:855::-;10202:6;:13;;-1:-1:-1;;10202:13:0;10211:4;10202:13;;;15920::::1;::::0;15970:16:::1;::::0;;15984:1:::1;15970:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15970:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15970:16:0::1;15946:40;;16015:4;15997;16002:1;15997:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;15997:23:0::1;;;-1:-1:-1::0;;;;;15997:23:0::1;;;::::0;::::1;8723:42;16031:4;16036:1;16031:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16031:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16058:188:::1;::::0;-1:-1:-1;;;16058:188:0;;:6:::1;:57:::0;;::::1;::::0;::::1;::::0;:188:::1;::::0;16130:12;;16157:1:::1;::::0;16173:4;;16200::::1;::::0;16220:15:::1;::::0;16058:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16259:17;16279:21;16259:41;;16321:23;16347:38;16376:8;;16347:24;16361:9;;16347;:13;;:24;;;;:::i;:::-;:28:::0;::::1;:38::i;:::-;16321:64;;16396:26;16425:41;16457:8;;16425:27;16439:12;;16425:9;:13;;:27;;;;:::i;:41::-;16396:70;;16491:11;-1:-1:-1::0;;;;;16491:19:0::1;;16518:15;16491:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;16587:20:0::1;::::0;16579:77:::1;::::0;16559:15:::1;::::0;-1:-1:-1;;;;;16587:20:0::1;::::0;16646:5:::1;::::0;16621:18;;16559:15;16579:77;16559:15;16579:77;16621:18;16587:20;16646:5;16579:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;10220:6:0;:14;;-1:-1:-1;;10220:14:0;;;-1:-1:-1;;;;;;;15848:855:0:o;14021:598::-;14150:18;;14107:7;;-1:-1:-1;;;;;14195:4:0;14182:17;;;;;;14179:152;;-1:-1:-1;14228:14:0;;14179:152;;;14273:4;-1:-1:-1;;;;;14263:14:0;:6;-1:-1:-1;;;;;14263:14:0;;14260:71;;-1:-1:-1;14306:13:0;;14260:71;14343:17;14363:62;14404:20;9708:3;;14404:20;:::i;:::-;14363:36;14388:10;14363:20;14374:8;;14363:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;14483:4;14465:24;;;;:9;:24;;;;;;14343:82;;-1:-1:-1;14465:39:0;;14343:82;14465:28;:39::i;:::-;14456:4;14438:24;;;;:9;:24;;;;;;;:66;;;;14520:42;;-1:-1:-1;;;;;14520:42:0;;;;;;;14552:9;1038:25:1;;1026:2;1011:18;;892:177;14520:42:0;;;;;;;;14590:21;:6;14601:9;14590:10;:21::i;:::-;14583:28;14021:598;-1:-1:-1;;;;;;14021:598:0:o;246:181::-;304:7;;336:5;340:1;336;:5;:::i;:::-;324:17;;365:1;360;:6;;352:46;;;;-1:-1:-1;;;352:46:0;;14047:2:1;352:46:0;;;14029:21:1;14086:2;14066:18;;;14059:30;14125:29;14105:18;;;14098:57;14172:18;;352:46:0;13845:351:1;773:250:0;831:7;855:1;860;855:6;851:47;;-1:-1:-1;885:1:0;878:8;;851:47;910:9;922:5;926:1;922;:5;:::i;:::-;910:17;-1:-1:-1;955:1:0;946:5;950:1;910:17;946:5;:::i;:::-;:10;938:56;;;;-1:-1:-1;;;938:56:0;;14403:2:1;938:56:0;;;14385:21:1;14442:2;14422:18;;;14415:30;14481:34;14461:18;;;14454:62;-1:-1:-1;;;14532:18:1;;;14525:31;14573:19;;938:56:0;14201:397:1;1029:132:0;1087:7;1114:39;1118:1;1121;1114:39;;;;;;;;;;;;;;;;;:3;:39::i;433:136::-;491:7;518:43;522:1;525;518:43;;;;;;;;;;;;;;;;;:3;:43::i;1167:189::-;1253:7;1288:12;1281:5;1273:28;;;;-1:-1:-1;;;1273:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1312:9:0;1324:5;1328:1;1324;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:750::-;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:548::-;1186:4;1215:2;1244;1233:9;1226:21;1276:6;1270:13;1319:6;1314:2;1303:9;1299:18;1292:34;1344:1;1354:140;1368:6;1365:1;1362:13;1354:140;;;1463:14;;;1459:23;;1453:30;1429:17;;;1448:2;1425:26;1418:66;1383:10;;1354:140;;;1358:3;1543:1;1538:2;1529:6;1518:9;1514:22;1510:31;1503:42;1613:2;1606;1602:7;1597:2;1589:6;1585:15;1581:29;1570:9;1566:45;1562:54;1554:62;;;;1074:548;;;;:::o;1627:131::-;-1:-1:-1;;;;;1702:31:1;;1692:42;;1682:70;;1748:1;1745;1738:12;1763:315;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2275:248::-;2343:6;2351;2404:2;2392:9;2383:7;2379:23;2375:32;2372:52;;;2420:1;2417;2410:12;2372:52;-1:-1:-1;;2443:23:1;;;2513:2;2498:18;;;2485:32;;-1:-1:-1;2275:248:1:o;2528:456::-;2605:6;2613;2621;2674:2;2662:9;2653:7;2649:23;2645:32;2642:52;;;2690:1;2687;2680:12;2642:52;2729:9;2716:23;2748:31;2773:5;2748:31;:::i;:::-;2798:5;-1:-1:-1;2855:2:1;2840:18;;2827:32;2868:33;2827:32;2868:33;:::i;:::-;2528:456;;2920:7;;-1:-1:-1;;;2974:2:1;2959:18;;;;2946:32;;2528:456::o;2989:247::-;3048:6;3101:2;3089:9;3080:7;3076:23;3072:32;3069:52;;;3117:1;3114;3107:12;3069:52;3156:9;3143:23;3175:31;3200:5;3175:31;:::i;3430:180::-;3489:6;3542:2;3530:9;3521:7;3517:23;3513:32;3510:52;;;3558:1;3555;3548:12;3510:52;-1:-1:-1;3581:23:1;;3430:180;-1:-1:-1;3430:180:1:o;3615:382::-;3680:6;3688;3741:2;3729:9;3720:7;3716:23;3712:32;3709:52;;;3757:1;3754;3747:12;3709:52;3796:9;3783:23;3815:31;3840:5;3815:31;:::i;:::-;3865:5;-1:-1:-1;3922:2:1;3907:18;;3894:32;3935:30;3894:32;3935:30;:::i;:::-;3984:7;3974:17;;;3615:382;;;;;:::o;4002:316::-;4079:6;4087;4095;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;-1:-1:-1;;4187:23:1;;;4257:2;4242:18;;4229:32;;-1:-1:-1;4308:2:1;4293:18;;;4280:32;;4002:316;-1:-1:-1;4002:316:1:o;4766:388::-;4834:6;4842;4895:2;4883:9;4874:7;4870:23;4866:32;4863:52;;;4911:1;4908;4901:12;4863:52;4950:9;4937:23;4969:31;4994:5;4969:31;:::i;:::-;5019:5;-1:-1:-1;5076:2:1;5061:18;;5048:32;5089:33;5048:32;5089:33;:::i;5159:309::-;5224:6;5232;5285:2;5273:9;5264:7;5260:23;5256:32;5253:52;;;5301:1;5298;5291:12;5253:52;5340:9;5327:23;5359:28;5381:5;5359:28;:::i;5959:329::-;6161:2;6143:21;;;6200:1;6180:18;;;6173:29;-1:-1:-1;;;6233:2:1;6218:18;;6211:36;6279:2;6264:18;;5959:329::o;6699:127::-;6760:10;6755:3;6751:20;6748:1;6741:31;6791:4;6788:1;6781:15;6815:4;6812:1;6805:15;6831:127;6892:10;6887:3;6883:20;6880:1;6873:31;6923:4;6920:1;6913:15;6947:4;6944:1;6937:15;6963:135;7002:3;7023:17;;;7020:43;;7043:18;;:::i;:::-;-1:-1:-1;7090:1:1;7079:13;;6963:135::o;7103:125::-;7168:9;;;7189:10;;;7186:36;;;7202:18;;:::i;7590:422::-;7679:1;7722:5;7679:1;7736:270;7757:7;7747:8;7744:21;7736:270;;;7816:4;7812:1;7808:6;7804:17;7798:4;7795:27;7792:53;;;7825:18;;:::i;:::-;7875:7;7865:8;7861:22;7858:55;;;7895:16;;;;7858:55;7974:22;;;;7934:15;;;;7736:270;;;7740:3;7590:422;;;;;:::o;8017:806::-;8066:5;8096:8;8086:80;;-1:-1:-1;8137:1:1;8151:5;;8086:80;8185:4;8175:76;;-1:-1:-1;8222:1:1;8236:5;;8175:76;8267:4;8285:1;8280:59;;;;8353:1;8348:130;;;;8260:218;;8280:59;8310:1;8301:10;;8324:5;;;8348:130;8385:3;8375:8;8372:17;8369:43;;;8392:18;;:::i;:::-;-1:-1:-1;;8448:1:1;8434:16;;8463:5;;8260:218;;8562:2;8552:8;8549:16;8543:3;8537:4;8534:13;8530:36;8524:2;8514:8;8511:16;8506:2;8500:4;8497:12;8493:35;8490:77;8487:159;;;-1:-1:-1;8599:19:1;;;8631:5;;8487:159;8678:34;8703:8;8697:4;8678:34;:::i;:::-;8748:6;8744:1;8740:6;8736:19;8727:7;8724:32;8721:58;;;8759:18;;:::i;:::-;8797:20;;8017:806;-1:-1:-1;;;8017:806:1:o;8828:140::-;8886:5;8915:47;8956:4;8946:8;8942:19;8936:4;8915:47;:::i;8973:168::-;9046:9;;;9077;;9094:15;;;9088:22;;9074:37;9064:71;;9115:18;;:::i;9146:128::-;9213:9;;;9234:11;;;9231:37;;;9248:18;;:::i;9279:184::-;9349:6;9402:2;9390:9;9381:7;9377:23;9373:32;9370:52;;;9418:1;9415;9408:12;9370:52;-1:-1:-1;9441:16:1;;9279:184;-1:-1:-1;9279:184:1:o;9747:245::-;9814:6;9867:2;9855:9;9846:7;9842:23;9838:32;9835:52;;;9883:1;9880;9873:12;9835:52;9915:9;9909:16;9934:28;9956:5;9934:28;:::i;10400:217::-;10440:1;10466;10456:132;;10510:10;10505:3;10501:20;10498:1;10491:31;10545:4;10542:1;10535:15;10573:4;10570:1;10563:15;10456:132;-1:-1:-1;10602:9:1;;10400:217::o;12650:980::-;12912:4;12960:3;12949:9;12945:19;12991:6;12980:9;12973:25;13017:2;13055:6;13050:2;13039:9;13035:18;13028:34;13098:3;13093:2;13082:9;13078:18;13071:31;13122:6;13157;13151:13;13188:6;13180;13173:22;13226:3;13215:9;13211:19;13204:26;;13265:2;13257:6;13253:15;13239:29;;13286:1;13296:195;13310:6;13307:1;13304:13;13296:195;;;13375:13;;-1:-1:-1;;;;;13371:39:1;13359:52;;13466:15;;;;13431:12;;;;13407:1;13325:9;13296:195;;;-1:-1:-1;;;;;;;13547:32:1;;;;13542:2;13527:18;;13520:60;-1:-1:-1;;;13611:3:1;13596:19;13589:35;13508:3;12650:980;-1:-1:-1;;;12650:980:1:o

Swarm Source

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