ETH Price: $3,707.07 (+3.15%)

Token

ERC-20: CHAINMAIL (MAIL)
 

Overview

Max Total Supply

1,000,000,000 MAIL

Holders

1,359

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 MAIL

Value
$0.00
0xacc819515c235f32d14bca8128fbabdedb0a8096
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:
CHAINMAIL

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-03
*/

/**
TG: https://t.me/chainmailerc
Twitter: https://x.com/chainmailerc
Web: https://www.chainmail.ai/
*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

    function approve(address spender, uint256 amount) external returns (bool);

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

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

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract CHAINMAIL is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public launched;


    modifier lockSwapping() {
        swapping = true;
        _;
        swapping = false;
    }
    
    event TransferForeignToken(address token, uint256 amount);
    event Launched();
    event SwapEnabled();
    event SwapThresholdUpdated();
    event BuyTaxesUpdated();
    event SellTaxesUpdated();
    event MarketingWalletUpdated();
    event DevelopmentWalletUpdated();
    event StoicDaoWalletUpdated();
    event ExcludedFromFeesUpdated();
    event MaxTxAmountUpdated();
    event MaxWalletAmountUpdated();
    event StuckEthersCleared();
    
    uint256 public swapThreshold = 1000000 * 10**18; //0.1% of total supply
    uint256 public maxTxAmount = 1000000000 * 10**18; 
    uint256 public maxWalletAmount = 1000000000 * 10**18;
    
    address public marketingWallet = 0xb5dE6331069f1aA402eA7c50E2E8142974724ecc;
    address public developmentWallet = 0xc02E8796Fdd39d22a3b702C954Dddbd8bD501882;
    address public stoicDaoWallet = 0xbF21275FAD21eB033d35162Fa2be0cF76478cea4;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 development;
        uint256 stoicDao;
        uint256 burn;
     }
    
    Taxes public buyTaxes = Taxes(2,0,2,1,0);
    Taxes public sellTaxes = Taxes(2,0,2,1,0);
    uint256 private totBuyTax = 5; //5% 
    uint256 private totSellTax = 5; //5% 
    
    mapping (address => bool) public excludedFromFees;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }

    constructor() ERC20("CHAINMAIL", "MAIL") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[developmentWallet] = true;
        excludedFromFees[stoicDaoWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(launched, "Trading not active yet");
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
          
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
         
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else if(sender == pair) fee = amount * totBuyTax / 100;
            else fee = 0;
        }
        
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

        uint256 tokensForBurn = 0;

        tokensForBurn = fee * sellTaxes.burn / totSellTax;

        if(tokensForBurn > 0) {
                 super._transfer(address(this), address(0xdead), tokensForBurn);
            }

    }
    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance >= swapThreshold) {

            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(tokensToAddLiquidityWith > 0 && ethToAddLiquidityWith > 0){
                // Add liquidity to dex
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 developmentAmt = unitBalance * 2 * sellTaxes.development;
            if(developmentAmt > 0){
                payable(developmentWallet).sendValue(developmentAmt);
            }
            uint256 stoicDaoAmt = unitBalance * 2 * sellTaxes.stoicDao;
            if(stoicDaoAmt > 0){
                payable(stoicDaoWallet).sendValue(stoicDaoAmt);
            }       

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }
    function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency
        swapEnabled = state;
        emit SwapEnabled();
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        require(new_amount >= 10000, "Swap amount cannot be lower than 0.001% total supply.");
        require(new_amount <= 30000000, "Swap amount cannot be higher than 3% total supply.");
        swapThreshold = new_amount * (10**18);
        emit SwapThresholdUpdated();
    }

    function launch() external onlyOwner{
        require(!launched, "Trading already active");
        launched = true;
        swapEnabled = true;
        emit Launched();
    }

    function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _development, uint256 _stoicDao, uint256 _burn) external onlyOwner{
        buyTaxes = Taxes(_marketing, _liquidity, _development, _stoicDao, _burn);
        totBuyTax = _marketing + _liquidity + _development + _stoicDao + _burn;
        require(totBuyTax <= 45,"Total buy fees cannot be greater than 5%");
        emit BuyTaxesUpdated();
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _development, uint256 _stoicDao, uint256 _burn) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _development, _stoicDao, _burn);
        totSellTax = _marketing + _liquidity + _development + _stoicDao + _burn;
        require(totSellTax <= 45,"Total sell fees cannot be greater than 5%");
        require(totSellTax >= 1,"Total sell fees cannot beless  than 1%");
        emit SellTaxesUpdated();
    }
    
    function setMarketingWallet(address newWallet) external onlyOwner{
        excludedFromFees[marketingWallet] = false;
        require(newWallet != address(0), "Marketing Wallet cannot be zero address");
        marketingWallet = newWallet;
        emit MarketingWalletUpdated();     
    }
   
    function setDevelopmentWallet(address newWallet) external onlyOwner{
        excludedFromFees[developmentWallet] = false;
        require(newWallet != address(0), "Development Wallet cannot be zero address");
        developmentWallet = newWallet;
        emit DevelopmentWalletUpdated();
    }

    function setStoicDaoWallet(address newWallet) external onlyOwner{
        excludedFromFees[stoicDaoWallet] = false;
        require(newWallet != address(0), "StoicDao Wallet cannot be zero address");
        stoicDaoWallet = newWallet;
        emit StoicDaoWalletUpdated();     
    }

    function setExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
        emit ExcludedFromFeesUpdated();
    }
    
    function setMaxTxAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxTxAmount = amount * (10**18);
        emit MaxTxAmountUpdated();
    }
    
    function setMaxWalletAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxWalletAmount = amount * (10**18);
        emit MaxWalletAmountUpdated();
    }

    function withdrawStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function clearStuckEthers(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
        emit StuckEthersCleared();
    }

    function unclog() public onlyOwner lockSwapping {
        swapTokensForETH(
            balanceOf(address(this))
        );

        uint256 ethBalance = address(this).balance;
        uint256 ethMarketing = ethBalance / 2;
        uint256 ethDevelopment = ethBalance - ethMarketing;

        bool success;
        (success, ) = address(marketingWallet).call{value: ethMarketing}("");

        (success, ) = address(developmentWallet).call{value: ethDevelopment}(
            ""
        );
    }

    // fallbacks
    receive() external payable {}
}

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":[],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"ExcludedFromFeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxWalletAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"StoicDaoWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"StuckEthersCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"stoicDao","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckEthers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"stoicDao","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_stoicDao","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_stoicDao","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setStoicDaoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stoicDaoWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

69d3c21bcecceda10000006008556b033b2e3c9fd0803ce80000006009819055600a55600b80546001600160a01b031990811673b5de6331069f1aa402ea7c50e2e8142974724ecc17909155600c8054821673c02e8796fdd39d22a3b702c954dddbd8bd501882179055600d805490911673bf21275fad21eb033d35162fa2be0cf76478cea4179055600260808190525f60a081905260c0829052600160e0819052610100829052600e839055600f8290556010839055601181905560128290556101c06040526101208390526101408290526101608390526101808190526101a0829052601383905560148290556015929092556016919091556017556005601881905560195534801562000113575f80fd5b506040518060400160405280600981526020016810d21052539350525360ba1b815250604051806040016040528060048152602001631350525360e21b815250816003908162000164919062000593565b50600462000173828262000593565b505050620001906200018a620003b560201b60201c565b620003b9565b620001b933620001a36012600a6200076a565b620001b390633b9aca0062000781565b6200040a565b335f908152601a60209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa15801562000221573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024791906200079b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000293573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b991906200079b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000304573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032a91906200079b565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f908152601a6020526040808220805460ff199081166001908117909255600b54851684528284208054821683179055600c54851684528284208054821683179055600d54909416835291208054909216179055620007d9565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620004789190620007c3565b90915550506001600160a01b0382165f9081526020819052604081208054839290620004a6908490620007c3565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200051d57607f821691505b6020821081036200053c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ef575f81815260208120601f850160051c810160208610156200056a5750805b601f850160051c820191505b818110156200058b5782815560010162000576565b505050505050565b81516001600160401b03811115620005af57620005af620004f4565b620005c781620005c0845462000508565b8462000542565b602080601f831160018114620005fd575f8415620005e55750858301515b5f19600386901b1c1916600185901b1785556200058b565b5f85815260208120601f198616915b828110156200062d578886015182559484019460019091019084016200060c565b50858210156200064b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006af57815f19048211156200069357620006936200065b565b80851615620006a157918102915b93841c939080029062000674565b509250929050565b5f82620006c75750600162000764565b81620006d557505f62000764565b8160018114620006ee5760028114620006f95762000719565b600191505062000764565b60ff8411156200070d576200070d6200065b565b50506001821b62000764565b5060208310610133831016604e8410600b84101617156200073e575081810a62000764565b6200074a83836200066f565b805f19048211156200076057620007606200065b565b0290505b92915050565b5f6200077a60ff841683620006b7565b9392505050565b80820281158282048414176200076457620007646200065b565b5f60208284031215620007ac575f80fd5b81516001600160a01b03811681146200077a575f80fd5b808201808211156200076457620007646200065b565b6126ec80620007e75f395ff3fe608060405260043610610241575f3560e01c806376a630bc11610134578063a9059cbb116100b3578063dd62ed3e11610078578063dd62ed3e146106c2578063e01af92c14610706578063ec28438a14610725578063f2fde38b14610744578063f66895a314610763578063f887ea4014610789575f80fd5b8063a9059cbb14610622578063aa4bde2814610641578063c04a541414610656578063c791fc5414610675578063dbe66ca014610694575f80fd5b806395d89b41116100f957806395d89b41146105925780639aed7370146105a65780639d0014b1146105c5578063a457c2d7146105e4578063a8aa1b3114610603575f80fd5b806376a630bc146104d35780638091f3bf146104f2578063864701a5146105125780638c0b5e22146105605780638da5cb5b14610575575f80fd5b806339509351116101c05780636ddd1713116101855780636ddd17131461041557806370a0823114610435578063715018a61461046957806372ac24861461047d57806375f0a8741461049c575f80fd5b8063395093511461038557806340ac48d3146103a4578063590ffdce146103c35780635d098b38146103e257806367c4534914610401575f80fd5b806318160ddd1161020657806318160ddd146102f957806323b872dd1461030d57806325b86edf1461032c57806327a14fc21461034b578063313ce5671461036a575f80fd5b806301339c211461024c5780630294f454146102625780630445b6671461028157806306fdde03146102a9578063095ea7b3146102ca575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b506102606107a8565b005b34801561026d575f80fd5b5061026061027c3660046122ed565b61086d565b34801561028c575f80fd5b5061029660085481565b6040519081526020015b60405180910390f35b3480156102b4575f80fd5b506102bd61095d565b6040516102a0919061230f565b3480156102d5575f80fd5b506102e96102e436600461235a565b6109ed565b60405190151581526020016102a0565b348015610304575f80fd5b50600254610296565b348015610318575f80fd5b506102e9610327366004612384565b610a03565b348015610337575f80fd5b506102e96103463660046123c2565b610ab2565b348015610356575f80fd5b506102606103653660046123f9565b610c06565b348015610375575f80fd5b50604051601281526020016102a0565b348015610390575f80fd5b506102e961039f36600461235a565b610c93565b3480156103af575f80fd5b506102606103be366004612410565b610cc9565b3480156103ce575f80fd5b506102606103dd366004612454565b610df3565b3480156103ed575f80fd5b506102606103fc3660046122ed565b610e6a565b34801561040c575f80fd5b50610260610f5b565b348015610420575f80fd5b506007546102e990600160a81b900460ff1681565b348015610440575f80fd5b5061029661044f3660046122ed565b6001600160a01b03165f9081526020819052604090205490565b348015610474575f80fd5b50610260611094565b348015610488575f80fd5b506102606104973660046122ed565b6110c9565b3480156104a7575f80fd5b50600b546104bb906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b3480156104de575f80fd5b50600d546104bb906001600160a01b031681565b3480156104fd575f80fd5b506007546102e990600160b01b900460ff1681565b34801561051d575f80fd5b50600e54600f54601054601154601254610538949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016102a0565b34801561056b575f80fd5b5061029660095481565b348015610580575f80fd5b506005546001600160a01b03166104bb565b34801561059d575f80fd5b506102bd6111bc565b3480156105b1575f80fd5b506102606105c03660046123f9565b6111cb565b3480156105d0575f80fd5b506102606105df3660046123f9565b611262565b3480156105ef575f80fd5b506102e96105fe36600461235a565b6113aa565b34801561060e575f80fd5b506007546104bb906001600160a01b031681565b34801561062d575f80fd5b506102e961063c36600461235a565b611444565b34801561064c575f80fd5b50610296600a5481565b348015610661575f80fd5b50600c546104bb906001600160a01b031681565b348015610680575f80fd5b5061026061068f366004612410565b611450565b34801561069f575f80fd5b506102e96106ae3660046122ed565b601a6020525f908152604090205460ff1681565b3480156106cd575f80fd5b506102966106dc3660046123c2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610711575f80fd5b50610260610720366004612480565b6115dd565b348015610730575f80fd5b5061026061073f3660046123f9565b611649565b34801561074f575f80fd5b5061026061075e3660046122ed565b6116d6565b34801561076e575f80fd5b50601354601454601554601654601754610538949392919085565b348015610794575f80fd5b506006546104bb906001600160a01b031681565b6005546001600160a01b031633146107db5760405162461bcd60e51b81526004016107d29061249b565b60405180910390fd5b600754600160b01b900460ff161561082e5760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b60448201526064016107d2565b6007805461ffff60a81b191661010160a81b1790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c8905f90a1565b6005546001600160a01b031633146108975760405162461bcd60e51b81526004016107d29061249b565b600d546001600160a01b039081165f908152601a60205260409020805460ff1916905581166109175760405162461bcd60e51b815260206004820152602660248201527f53746f696344616f2057616c6c65742063616e6e6f74206265207a65726f206160448201526564647265737360d01b60648201526084016107d2565b600d80546001600160a01b0319166001600160a01b0383161790556040517f5c6de18ad463cc9be6b3bde5ace1020863f549309dd0c9219db51c3f0bb5dac7905f90a150565b60606003805461096c906124d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610998906124d0565b80156109e35780601f106109ba576101008083540402835291602001916109e3565b820191905f5260205f20905b8154815290600101906020018083116109c657829003601f168201915b5050505050905090565b5f6109f9338484611771565b5060015b92915050565b5f610a0f848484611894565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a935760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107d2565b610aa78533610aa2868561251c565b611771565b506001949350505050565b6005545f906001600160a01b03163314610ade5760405162461bcd60e51b81526004016107d29061249b565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610b22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b46919061252f565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610b96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bba9190612546565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610c305760405162461bcd60e51b81526004016107d29061249b565b622625a0811015610c535760405162461bcd60e51b81526004016107d290612561565b610c6581670de0b6b3a76400006125a4565b600a556040517f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec905f90a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109f9918590610aa29086906125bb565b6005546001600160a01b03163314610cf35760405162461bcd60e51b81526004016107d29061249b565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052600e859055600f849055601083905560118290556012819055808284610d4087896125bb565b610d4a91906125bb565b610d5491906125bb565b610d5e91906125bb565b6018819055602d1015610dc45760405162461bcd60e51b815260206004820152602860248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015267207468616e20352560c01b60648201526084016107d2565b6040517f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d905f90a15050505050565b6005546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016107d29061249b565b6001600160a01b0382165f908152601a6020526040808220805460ff1916841515179055517fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed9190a15050565b6005546001600160a01b03163314610e945760405162461bcd60e51b81526004016107d29061249b565b600b546001600160a01b039081165f908152601a60205260409020805460ff191690558116610f155760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f206044820152666164647265737360c81b60648201526084016107d2565b600b80546001600160a01b0319166001600160a01b0383161790556040517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e0905f90a150565b6005546001600160a01b03163314610f855760405162461bcd60e51b81526004016107d29061249b565b6007805460ff60a01b1916600160a01b179055610fbe610fb9306001600160a01b03165f9081526020819052604090205490565b611bff565b475f610fcb6002836125ce565b90505f610fd8828461251c565b600b546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611027576040519150601f19603f3d011682016040523d82523d5f602084013e61102c565b606091505b5050600c546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611079576040519150601f19603f3d011682016040523d82523d5f602084013e61107e565b606091505b50506007805460ff60a01b191690555050505050565b6005546001600160a01b031633146110be5760405162461bcd60e51b81526004016107d29061249b565b6110c75f611d4f565b565b6005546001600160a01b031633146110f35760405162461bcd60e51b81526004016107d29061249b565b600c546001600160a01b039081165f908152601a60205260409020805460ff1916905581166111765760405162461bcd60e51b815260206004820152602960248201527f446576656c6f706d656e742057616c6c65742063616e6e6f74206265207a65726044820152686f206164647265737360b81b60648201526084016107d2565b600c80546001600160a01b0319166001600160a01b0383161790556040517f56c050a659ad3741e0a2373000420a1c3c060f7f39c95458be197a36a6e61ec2905f90a150565b60606004805461096c906124d0565b6005546001600160a01b031633146111f55760405162461bcd60e51b81526004016107d29061249b565b47336108fc606461120685856125a4565b61121091906125ce565b6040518115909202915f818181858888f19350505050158015611235573d5f803e3d5ffd5b506040517ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf9905f90a15050565b6005546001600160a01b0316331461128c5760405162461bcd60e51b81526004016107d29061249b565b6127108110156112fc5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016107d2565b6301c9c38081111561136b5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b60648201526084016107d2565b61137d81670de0b6b3a76400006125a4565b6008556040517ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d905f90a150565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561142b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d2565b61143a3385610aa2868561251c565b5060019392505050565b5f6109f9338484611894565b6005546001600160a01b0316331461147a5760405162461bcd60e51b81526004016107d29061249b565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052601385905560148490556015839055601682905560178190558082846114c787896125bb565b6114d191906125bb565b6114db91906125bb565b6114e591906125bb565b6019819055602d101561154c5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526872207468616e20352560b81b60648201526084016107d2565b600160195410156115ae5760405162461bcd60e51b815260206004820152602660248201527f546f74616c2073656c6c20666565732063616e6e6f742062656c65737320207460448201526568616e20312560d01b60648201526084016107d2565b6040517f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c30785905f90a15050505050565b6005546001600160a01b031633146116075760405162461bcd60e51b81526004016107d29061249b565b6007805460ff60a81b1916600160a81b831515021790556040517f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a905f90a150565b6005546001600160a01b031633146116735760405162461bcd60e51b81526004016107d29061249b565b622625a08110156116965760405162461bcd60e51b81526004016107d290612561565b6116a881670de0b6b3a76400006125a4565b6009556040517f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b905f90a150565b6005546001600160a01b031633146117005760405162461bcd60e51b81526004016107d29061249b565b6001600160a01b0381166117655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d2565b61176e81611d4f565b50565b6001600160a01b0383166117d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d2565b6001600160a01b0382166118345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d2565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116118f55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107d2565b6001600160a01b0383165f908152601a602052604090205460ff1615801561193557506001600160a01b0382165f908152601a602052604090205460ff16155b801561194b5750600754600160a01b900460ff16155b15611a8d57600754600160b01b900460ff166119a25760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b60448201526064016107d2565b6009548111156119f45760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e7400000060448201526064016107d2565b6007546001600160a01b03838116911614611a8d57600a5481611a2b846001600160a01b03165f9081526020819052604090205490565b611a3591906125bb565b1115611a8d5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b60648201526084016107d2565b6007545f90600160a01b900460ff1680611abe57506001600160a01b0384165f908152601a602052604090205460ff165b80611ae057506001600160a01b0383165f908152601a602052604090205460ff165b15611aec57505f611b4c565b6007546001600160a01b0390811690841603611b2357606460195483611b1291906125a4565b611b1c91906125ce565b9050611b4c565b6007546001600160a01b0390811690851603611b4957606460185483611b1291906125a4565b505f5b600754600160a81b900460ff168015611b6f5750600754600160a01b900460ff16155b8015611b8957506007546001600160a01b03858116911614155b8015611b9457505f81115b15611ba157611ba1611da0565b611bb58484611bb0848661251c565b611f41565b8015611bc657611bc6843083611f41565b6019546017545f9190611bd990846125a4565b611be391906125ce565b90508015611bf857611bf83061dead83611f41565b5050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c3257611c326125ed565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cad9190612601565b81600181518110611cc057611cc06125ed565b6001600160a01b039283166020918202929092010152600654611ce69130911684611771565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d1e9085905f9086903090429060040161261c565b5f604051808303815f87803b158015611d35575f80fd5b505af1158015611d47573d5f803e3d5ffd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff166110c7576007805460ff60a01b1916600160a01b179055305f9081526020819052604081205490506008548110611f31575f6019546002611dee91906125a4565b90505f8160136001015484611e0391906125a4565b611e0d91906125ce565b90505f611e1a828561251c565b905047611e2682611bff565b5f611e31824761251c565b6014549091505f90611e43908761251c565b611e4d90836125ce565b6014549091505f90611e5f90836125a4565b90505f86118015611e6f57505f81115b15611e7e57611e7e8682612117565b6013545f90611e8e8460026125a4565b611e9891906125a4565b90508015611eb657600b54611eb6906001600160a01b0316826121bf565b6015545f90611ec68560026125a4565b611ed091906125a4565b90508015611eee57600c54611eee906001600160a01b0316826121bf565b6016545f90611efe8660026125a4565b611f0891906125a4565b90508015611f2657600d54611f26906001600160a01b0316826121bf565b505050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611fa55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107d2565b6001600160a01b0382166120075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107d2565b6001600160a01b0383165f908152602081905260409020548181101561207e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d2565b612088828261251c565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906120bd9084906125bb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210991815260200190565b60405180910390a350505050565b60065461212f9030906001600160a01b031684611771565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561219a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bf8919061268b565b8047101561220f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107d2565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612258576040519150601f19603f3d011682016040523d82523d5f602084013e61225d565b606091505b50509050806122d45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107d2565b505050565b6001600160a01b038116811461176e575f80fd5b5f602082840312156122fd575f80fd5b8135612308816122d9565b9392505050565b5f6020808352835180828501525f5b8181101561233a5785810183015185820160400152820161231e565b505f604082860101526040601f19601f8301168501019250505092915050565b5f806040838503121561236b575f80fd5b8235612376816122d9565b946020939093013593505050565b5f805f60608486031215612396575f80fd5b83356123a1816122d9565b925060208401356123b1816122d9565b929592945050506040919091013590565b5f80604083850312156123d3575f80fd5b82356123de816122d9565b915060208301356123ee816122d9565b809150509250929050565b5f60208284031215612409575f80fd5b5035919050565b5f805f805f60a08688031215612424575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b801515811461176e575f80fd5b5f8060408385031215612465575f80fd5b8235612470816122d9565b915060208301356123ee81612447565b5f60208284031215612490575f80fd5b813561230881612447565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806124e457607f821691505b60208210810361250257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109fd576109fd612508565b5f6020828403121561253f575f80fd5b5051919050565b5f60208284031215612556575f80fd5b815161230881612447565b60208082526023908201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60408201526232352560e81b606082015260800190565b80820281158282048414176109fd576109fd612508565b808201808211156109fd576109fd612508565b5f826125e857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612611575f80fd5b8151612308816122d9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561266a5784516001600160a01b031683529383019391830191600101612645565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561269d575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212209791711f0e98f53ac1afbc151610f17454fd981905b83669a0b6af816a248e2864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610241575f3560e01c806376a630bc11610134578063a9059cbb116100b3578063dd62ed3e11610078578063dd62ed3e146106c2578063e01af92c14610706578063ec28438a14610725578063f2fde38b14610744578063f66895a314610763578063f887ea4014610789575f80fd5b8063a9059cbb14610622578063aa4bde2814610641578063c04a541414610656578063c791fc5414610675578063dbe66ca014610694575f80fd5b806395d89b41116100f957806395d89b41146105925780639aed7370146105a65780639d0014b1146105c5578063a457c2d7146105e4578063a8aa1b3114610603575f80fd5b806376a630bc146104d35780638091f3bf146104f2578063864701a5146105125780638c0b5e22146105605780638da5cb5b14610575575f80fd5b806339509351116101c05780636ddd1713116101855780636ddd17131461041557806370a0823114610435578063715018a61461046957806372ac24861461047d57806375f0a8741461049c575f80fd5b8063395093511461038557806340ac48d3146103a4578063590ffdce146103c35780635d098b38146103e257806367c4534914610401575f80fd5b806318160ddd1161020657806318160ddd146102f957806323b872dd1461030d57806325b86edf1461032c57806327a14fc21461034b578063313ce5671461036a575f80fd5b806301339c211461024c5780630294f454146102625780630445b6671461028157806306fdde03146102a9578063095ea7b3146102ca575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b506102606107a8565b005b34801561026d575f80fd5b5061026061027c3660046122ed565b61086d565b34801561028c575f80fd5b5061029660085481565b6040519081526020015b60405180910390f35b3480156102b4575f80fd5b506102bd61095d565b6040516102a0919061230f565b3480156102d5575f80fd5b506102e96102e436600461235a565b6109ed565b60405190151581526020016102a0565b348015610304575f80fd5b50600254610296565b348015610318575f80fd5b506102e9610327366004612384565b610a03565b348015610337575f80fd5b506102e96103463660046123c2565b610ab2565b348015610356575f80fd5b506102606103653660046123f9565b610c06565b348015610375575f80fd5b50604051601281526020016102a0565b348015610390575f80fd5b506102e961039f36600461235a565b610c93565b3480156103af575f80fd5b506102606103be366004612410565b610cc9565b3480156103ce575f80fd5b506102606103dd366004612454565b610df3565b3480156103ed575f80fd5b506102606103fc3660046122ed565b610e6a565b34801561040c575f80fd5b50610260610f5b565b348015610420575f80fd5b506007546102e990600160a81b900460ff1681565b348015610440575f80fd5b5061029661044f3660046122ed565b6001600160a01b03165f9081526020819052604090205490565b348015610474575f80fd5b50610260611094565b348015610488575f80fd5b506102606104973660046122ed565b6110c9565b3480156104a7575f80fd5b50600b546104bb906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b3480156104de575f80fd5b50600d546104bb906001600160a01b031681565b3480156104fd575f80fd5b506007546102e990600160b01b900460ff1681565b34801561051d575f80fd5b50600e54600f54601054601154601254610538949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016102a0565b34801561056b575f80fd5b5061029660095481565b348015610580575f80fd5b506005546001600160a01b03166104bb565b34801561059d575f80fd5b506102bd6111bc565b3480156105b1575f80fd5b506102606105c03660046123f9565b6111cb565b3480156105d0575f80fd5b506102606105df3660046123f9565b611262565b3480156105ef575f80fd5b506102e96105fe36600461235a565b6113aa565b34801561060e575f80fd5b506007546104bb906001600160a01b031681565b34801561062d575f80fd5b506102e961063c36600461235a565b611444565b34801561064c575f80fd5b50610296600a5481565b348015610661575f80fd5b50600c546104bb906001600160a01b031681565b348015610680575f80fd5b5061026061068f366004612410565b611450565b34801561069f575f80fd5b506102e96106ae3660046122ed565b601a6020525f908152604090205460ff1681565b3480156106cd575f80fd5b506102966106dc3660046123c2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610711575f80fd5b50610260610720366004612480565b6115dd565b348015610730575f80fd5b5061026061073f3660046123f9565b611649565b34801561074f575f80fd5b5061026061075e3660046122ed565b6116d6565b34801561076e575f80fd5b50601354601454601554601654601754610538949392919085565b348015610794575f80fd5b506006546104bb906001600160a01b031681565b6005546001600160a01b031633146107db5760405162461bcd60e51b81526004016107d29061249b565b60405180910390fd5b600754600160b01b900460ff161561082e5760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b60448201526064016107d2565b6007805461ffff60a81b191661010160a81b1790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c8905f90a1565b6005546001600160a01b031633146108975760405162461bcd60e51b81526004016107d29061249b565b600d546001600160a01b039081165f908152601a60205260409020805460ff1916905581166109175760405162461bcd60e51b815260206004820152602660248201527f53746f696344616f2057616c6c65742063616e6e6f74206265207a65726f206160448201526564647265737360d01b60648201526084016107d2565b600d80546001600160a01b0319166001600160a01b0383161790556040517f5c6de18ad463cc9be6b3bde5ace1020863f549309dd0c9219db51c3f0bb5dac7905f90a150565b60606003805461096c906124d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610998906124d0565b80156109e35780601f106109ba576101008083540402835291602001916109e3565b820191905f5260205f20905b8154815290600101906020018083116109c657829003601f168201915b5050505050905090565b5f6109f9338484611771565b5060015b92915050565b5f610a0f848484611894565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a935760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107d2565b610aa78533610aa2868561251c565b611771565b506001949350505050565b6005545f906001600160a01b03163314610ade5760405162461bcd60e51b81526004016107d29061249b565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610b22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b46919061252f565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610b96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bba9190612546565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610c305760405162461bcd60e51b81526004016107d29061249b565b622625a0811015610c535760405162461bcd60e51b81526004016107d290612561565b610c6581670de0b6b3a76400006125a4565b600a556040517f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec905f90a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109f9918590610aa29086906125bb565b6005546001600160a01b03163314610cf35760405162461bcd60e51b81526004016107d29061249b565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052600e859055600f849055601083905560118290556012819055808284610d4087896125bb565b610d4a91906125bb565b610d5491906125bb565b610d5e91906125bb565b6018819055602d1015610dc45760405162461bcd60e51b815260206004820152602860248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015267207468616e20352560c01b60648201526084016107d2565b6040517f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d905f90a15050505050565b6005546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016107d29061249b565b6001600160a01b0382165f908152601a6020526040808220805460ff1916841515179055517fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed9190a15050565b6005546001600160a01b03163314610e945760405162461bcd60e51b81526004016107d29061249b565b600b546001600160a01b039081165f908152601a60205260409020805460ff191690558116610f155760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f206044820152666164647265737360c81b60648201526084016107d2565b600b80546001600160a01b0319166001600160a01b0383161790556040517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e0905f90a150565b6005546001600160a01b03163314610f855760405162461bcd60e51b81526004016107d29061249b565b6007805460ff60a01b1916600160a01b179055610fbe610fb9306001600160a01b03165f9081526020819052604090205490565b611bff565b475f610fcb6002836125ce565b90505f610fd8828461251c565b600b546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611027576040519150601f19603f3d011682016040523d82523d5f602084013e61102c565b606091505b5050600c546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611079576040519150601f19603f3d011682016040523d82523d5f602084013e61107e565b606091505b50506007805460ff60a01b191690555050505050565b6005546001600160a01b031633146110be5760405162461bcd60e51b81526004016107d29061249b565b6110c75f611d4f565b565b6005546001600160a01b031633146110f35760405162461bcd60e51b81526004016107d29061249b565b600c546001600160a01b039081165f908152601a60205260409020805460ff1916905581166111765760405162461bcd60e51b815260206004820152602960248201527f446576656c6f706d656e742057616c6c65742063616e6e6f74206265207a65726044820152686f206164647265737360b81b60648201526084016107d2565b600c80546001600160a01b0319166001600160a01b0383161790556040517f56c050a659ad3741e0a2373000420a1c3c060f7f39c95458be197a36a6e61ec2905f90a150565b60606004805461096c906124d0565b6005546001600160a01b031633146111f55760405162461bcd60e51b81526004016107d29061249b565b47336108fc606461120685856125a4565b61121091906125ce565b6040518115909202915f818181858888f19350505050158015611235573d5f803e3d5ffd5b506040517ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf9905f90a15050565b6005546001600160a01b0316331461128c5760405162461bcd60e51b81526004016107d29061249b565b6127108110156112fc5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016107d2565b6301c9c38081111561136b5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b60648201526084016107d2565b61137d81670de0b6b3a76400006125a4565b6008556040517ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d905f90a150565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561142b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d2565b61143a3385610aa2868561251c565b5060019392505050565b5f6109f9338484611894565b6005546001600160a01b0316331461147a5760405162461bcd60e51b81526004016107d29061249b565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052601385905560148490556015839055601682905560178190558082846114c787896125bb565b6114d191906125bb565b6114db91906125bb565b6114e591906125bb565b6019819055602d101561154c5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526872207468616e20352560b81b60648201526084016107d2565b600160195410156115ae5760405162461bcd60e51b815260206004820152602660248201527f546f74616c2073656c6c20666565732063616e6e6f742062656c65737320207460448201526568616e20312560d01b60648201526084016107d2565b6040517f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c30785905f90a15050505050565b6005546001600160a01b031633146116075760405162461bcd60e51b81526004016107d29061249b565b6007805460ff60a81b1916600160a81b831515021790556040517f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a905f90a150565b6005546001600160a01b031633146116735760405162461bcd60e51b81526004016107d29061249b565b622625a08110156116965760405162461bcd60e51b81526004016107d290612561565b6116a881670de0b6b3a76400006125a4565b6009556040517f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b905f90a150565b6005546001600160a01b031633146117005760405162461bcd60e51b81526004016107d29061249b565b6001600160a01b0381166117655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d2565b61176e81611d4f565b50565b6001600160a01b0383166117d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d2565b6001600160a01b0382166118345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d2565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116118f55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107d2565b6001600160a01b0383165f908152601a602052604090205460ff1615801561193557506001600160a01b0382165f908152601a602052604090205460ff16155b801561194b5750600754600160a01b900460ff16155b15611a8d57600754600160b01b900460ff166119a25760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b60448201526064016107d2565b6009548111156119f45760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e7400000060448201526064016107d2565b6007546001600160a01b03838116911614611a8d57600a5481611a2b846001600160a01b03165f9081526020819052604090205490565b611a3591906125bb565b1115611a8d5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b60648201526084016107d2565b6007545f90600160a01b900460ff1680611abe57506001600160a01b0384165f908152601a602052604090205460ff165b80611ae057506001600160a01b0383165f908152601a602052604090205460ff165b15611aec57505f611b4c565b6007546001600160a01b0390811690841603611b2357606460195483611b1291906125a4565b611b1c91906125ce565b9050611b4c565b6007546001600160a01b0390811690851603611b4957606460185483611b1291906125a4565b505f5b600754600160a81b900460ff168015611b6f5750600754600160a01b900460ff16155b8015611b8957506007546001600160a01b03858116911614155b8015611b9457505f81115b15611ba157611ba1611da0565b611bb58484611bb0848661251c565b611f41565b8015611bc657611bc6843083611f41565b6019546017545f9190611bd990846125a4565b611be391906125ce565b90508015611bf857611bf83061dead83611f41565b5050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c3257611c326125ed565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cad9190612601565b81600181518110611cc057611cc06125ed565b6001600160a01b039283166020918202929092010152600654611ce69130911684611771565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d1e9085905f9086903090429060040161261c565b5f604051808303815f87803b158015611d35575f80fd5b505af1158015611d47573d5f803e3d5ffd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff166110c7576007805460ff60a01b1916600160a01b179055305f9081526020819052604081205490506008548110611f31575f6019546002611dee91906125a4565b90505f8160136001015484611e0391906125a4565b611e0d91906125ce565b90505f611e1a828561251c565b905047611e2682611bff565b5f611e31824761251c565b6014549091505f90611e43908761251c565b611e4d90836125ce565b6014549091505f90611e5f90836125a4565b90505f86118015611e6f57505f81115b15611e7e57611e7e8682612117565b6013545f90611e8e8460026125a4565b611e9891906125a4565b90508015611eb657600b54611eb6906001600160a01b0316826121bf565b6015545f90611ec68560026125a4565b611ed091906125a4565b90508015611eee57600c54611eee906001600160a01b0316826121bf565b6016545f90611efe8660026125a4565b611f0891906125a4565b90508015611f2657600d54611f26906001600160a01b0316826121bf565b505050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611fa55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107d2565b6001600160a01b0382166120075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107d2565b6001600160a01b0383165f908152602081905260409020548181101561207e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d2565b612088828261251c565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906120bd9084906125bb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210991815260200190565b60405180910390a350505050565b60065461212f9030906001600160a01b031684611771565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561219a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bf8919061268b565b8047101561220f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107d2565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612258576040519150601f19603f3d011682016040523d82523d5f602084013e61225d565b606091505b50509050806122d45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107d2565b505050565b6001600160a01b038116811461176e575f80fd5b5f602082840312156122fd575f80fd5b8135612308816122d9565b9392505050565b5f6020808352835180828501525f5b8181101561233a5785810183015185820160400152820161231e565b505f604082860101526040601f19601f8301168501019250505092915050565b5f806040838503121561236b575f80fd5b8235612376816122d9565b946020939093013593505050565b5f805f60608486031215612396575f80fd5b83356123a1816122d9565b925060208401356123b1816122d9565b929592945050506040919091013590565b5f80604083850312156123d3575f80fd5b82356123de816122d9565b915060208301356123ee816122d9565b809150509250929050565b5f60208284031215612409575f80fd5b5035919050565b5f805f805f60a08688031215612424575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b801515811461176e575f80fd5b5f8060408385031215612465575f80fd5b8235612470816122d9565b915060208301356123ee81612447565b5f60208284031215612490575f80fd5b813561230881612447565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806124e457607f821691505b60208210810361250257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109fd576109fd612508565b5f6020828403121561253f575f80fd5b5051919050565b5f60208284031215612556575f80fd5b815161230881612447565b60208082526023908201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60408201526232352560e81b606082015260800190565b80820281158282048414176109fd576109fd612508565b808201808211156109fd576109fd612508565b5f826125e857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612611575f80fd5b8151612308816122d9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561266a5784516001600160a01b031683529383019391830191600101612645565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561269d575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212209791711f0e98f53ac1afbc151610f17454fd981905b83669a0b6af816a248e2864736f6c63430008140033

Deployed Bytecode Sourcemap

7365:10699:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14235:180;;;;;;;;;;;;;:::i;:::-;;15973:289;;;;;;;;;;-1:-1:-1;15973:289:0;;;;;:::i;:::-;;:::i;8180:47::-;;;;;;;;;;;;;;;;;;;548:25:1;;;536:2;521:18;8180:47:0;;;;;;;;1802:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2716:169::-;;;;;;;;;;-1:-1:-1;2716:169:0;;;;;:::i;:::-;;:::i;:::-;;;1622:14:1;;1615:22;1597:41;;1585:2;1570:18;2716:169:0;1457:187:1;2123:108:0;;;;;;;;;;-1:-1:-1;2211:12:0;;2123:108;;2893:422;;;;;;;;;;-1:-1:-1;2893:422:0;;;;;:::i;:::-;;:::i;16926:310::-;;;;;;;;;;-1:-1:-1;16926:310:0;;;;;:::i;:::-;;:::i;16686:232::-;;;;;;;;;;-1:-1:-1;16686:232:0;;;;;:::i;:::-;;:::i;2022:93::-;;;;;;;;;;-1:-1:-1;2022:93:0;;2105:2;2830:36:1;;2818:2;2803:18;2022:93:0;2688:184:1;3323:215:0;;;;;;;;;;-1:-1:-1;3323:215:0;;;;;:::i;:::-;;:::i;14423:418::-;;;;;;;;;;-1:-1:-1;14423:418:0;;;;;:::i;:::-;;:::i;16270:172::-;;;;;;;;;;-1:-1:-1;16270:172:0;;;;;:::i;:::-;;:::i;15361:294::-;;;;;;;;;;-1:-1:-1;15361:294:0;;;;;:::i;:::-;;:::i;17496:510::-;;;;;;;;;;;;;:::i;7542:23::-;;;;;;;;;;-1:-1:-1;7542:23:0;;;;-1:-1:-1;;;7542:23:0;;;;;;2239:127;;;;;;;;;;-1:-1:-1;2239:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2340:18:0;2313:7;2340:18;;;;;;;;;;;;2239:127;6142:94;;;;;;;;;;;;;:::i;15666:299::-;;;;;;;;;;-1:-1:-1;15666:299:0;;;;;:::i;:::-;;:::i;8378:75::-;;;;;;;;;;-1:-1:-1;8378:75:0;;;;-1:-1:-1;;;;;8378:75:0;;;;;;-1:-1:-1;;;;;4010:32:1;;;3992:51;;3980:2;3965:18;8378:75:0;3846:203:1;8544:74:0;;;;;;;;;;-1:-1:-1;8544:74:0;;;;-1:-1:-1;;;;;8544:74:0;;;7572:20;;;;;;;;;;-1:-1:-1;7572:20:0;;;;-1:-1:-1;;;7572:20:0;;;;;;8801:40;;;;;;;;;;-1:-1:-1;8801:40:0;;;;;;;;;;;;;;;;;;;;;;4313:25:1;;;4369:2;4354:18;;4347:34;;;;4397:18;;;4390:34;;;;4455:2;4440:18;;4433:34;4498:3;4483:19;;4476:35;4300:3;4285:19;8801:40:0;4054:463:1;8257:48:0;;;;;;;;;;;;;;;;5919:87;;;;;;;;;;-1:-1:-1;5992:6:0;;-1:-1:-1;;;;;5992:6:0;5919:87;;1910:104;;;;;;;;;;;;;:::i;17244:244::-;;;;;;;;;;-1:-1:-1;17244:244:0;;;;;:::i;:::-;;:::i;13876:351::-;;;;;;;;;;-1:-1:-1;13876:351:0;;;;;:::i;:::-;;:::i;3546:377::-;;;;;;;;;;-1:-1:-1;3546:377:0;;;;;:::i;:::-;;:::i;7482:19::-;;;;;;;;;;-1:-1:-1;7482:19:0;;;;-1:-1:-1;;;;;7482:19:0;;;2374:175;;;;;;;;;;-1:-1:-1;2374:175:0;;;;;:::i;:::-;;:::i;8313:52::-;;;;;;;;;;;;;;;;8460:77;;;;;;;;;;-1:-1:-1;8460:77:0;;;;-1:-1:-1;;;;;8460:77:0;;;14849:500;;;;;;;;;;-1:-1:-1;14849:500:0;;;;;:::i;:::-;;:::i;8987:49::-;;;;;;;;;;-1:-1:-1;8987:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2557:151;;;;;;;;;;-1:-1:-1;2557:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2673:18:0;;;2646:7;2673:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2557:151;13701:167;;;;;;;;;;-1:-1:-1;13701:167:0;;;;;:::i;:::-;;:::i;16454:220::-;;;;;;;;;;-1:-1:-1;16454:220:0;;;;;:::i;:::-;;:::i;6244:192::-;;;;;;;;;;-1:-1:-1;6244:192:0;;;;;:::i;:::-;;:::i;8848:41::-;;;;;;;;;;-1:-1:-1;8848:41:0;;;;;;;;;;;;;;;;;;7454:21;;;;;;;;;;-1:-1:-1;7454:21:0;;;;-1:-1:-1;;;;;7454:21:0;;;14235:180;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;;;;;;;;;14291:8:::1;::::0;-1:-1:-1;;;14291:8:0;::::1;;;14290:9;14282:44;;;::::0;-1:-1:-1;;;14282:44:0;;5554:2:1;14282:44:0::1;::::0;::::1;5536:21:1::0;5593:2;5573:18;;;5566:30;-1:-1:-1;;;5612:18:1;;;5605:52;5674:18;;14282:44:0::1;5352:346:1::0;14282:44:0::1;14337:8;:15:::0;;-1:-1:-1;;;;14363:18:0;-1:-1:-1;;;14363:18:0;;;14397:10:::1;::::0;::::1;::::0;-1:-1:-1;;14397:10:0::1;14235:180::o:0;15973:289::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;16065:14:::1;::::0;-1:-1:-1;;;;;16065:14:0;;::::1;16083:5;16048:32:::0;;;:16:::1;:32;::::0;;;;:40;;-1:-1:-1;;16048:40:0::1;::::0;;16107:23;::::1;16099:74;;;::::0;-1:-1:-1;;;16099:74:0;;5905:2:1;16099:74:0::1;::::0;::::1;5887:21:1::0;5944:2;5924:18;;;5917:30;5983:34;5963:18;;;5956:62;-1:-1:-1;;;6034:18:1;;;6027:36;6080:19;;16099:74:0::1;5703:402:1::0;16099:74:0::1;16184:14;:26:::0;;-1:-1:-1;;;;;;16184:26:0::1;-1:-1:-1::0;;;;;16184:26:0;::::1;;::::0;;16226:23:::1;::::0;::::1;::::0;-1:-1:-1;;16226:23:0::1;15973:289:::0;:::o;1802:100::-;1856:13;1889:5;1882:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:100;:::o;2716:169::-;2799:4;2816:39;284:10;2839:7;2848:6;2816:8;:39::i;:::-;-1:-1:-1;2873:4:0;2716:169;;;;;:::o;2893:422::-;2999:4;3016:36;3026:6;3034:9;3045:6;3016:9;:36::i;:::-;-1:-1:-1;;;;;3092:19:0;;3065:24;3092:19;;;:11;:19;;;;;;;;284:10;3092:33;;;;;;;;3144:26;;;;3136:79;;;;-1:-1:-1;;;3136:79:0;;6697:2:1;3136:79:0;;;6679:21:1;6736:2;6716:18;;;6709:30;6775:34;6755:18;;;6748:62;-1:-1:-1;;;6826:18:1;;;6819:38;6874:19;;3136:79:0;6495:404:1;3136:79:0;3226:57;3235:6;284:10;3257:25;3276:6;3257:16;:25;:::i;:::-;3226:8;:57::i;:::-;-1:-1:-1;3303:4:0;;2893:422;-1:-1:-1;;;;2893:422:0:o;16926:310::-;5992:6;;17012:10;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;17062:39:::1;::::0;-1:-1:-1;;;17062:39:0;;17095:4:::1;17062:39;::::0;::::1;3992:51:1::0;17035:24:0::1;::::0;-1:-1:-1;;;;;17062:24:0;::::1;::::0;::::1;::::0;3965:18:1;;17062:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17120:46;::::0;-1:-1:-1;;;17120:46:0;;-1:-1:-1;;;;;7550:32:1;;;17120:46:0::1;::::0;::::1;7532:51:1::0;7599:18;;;7592:34;;;17035:66:0;;-1:-1:-1;17120:23:0;;::::1;::::0;::::1;::::0;7505:18:1;;17120:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17182;::::0;;-1:-1:-1;;;;;7550:32:1;;7532:51;;7614:2;7599:18;;7592:34;;;17112:54:0;;-1:-1:-1;17182:46:0::1;::::0;7505:18:1;17182:46:0::1;;;;;;;17024:212;16926:310:::0;;;;:::o;16686:232::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;16777:7:::1;16767:6;:17;;16759:65;;;;-1:-1:-1::0;;;16759:65:0::1;;;;;;;:::i;:::-;16853:17;:6:::0;16863::::1;16853:17;:::i;:::-;16835:15;:35:::0;16886:24:::1;::::0;::::1;::::0;;;::::1;16686:232:::0;:::o;3323:215::-;284:10;3411:4;3460:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3460:34:0;;;;;;;;;;3411:4;;3428:80;;3451:7;;3460:47;;3497:10;;3460:47;:::i;14423:418::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;14580:61:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;14569:8:::1;:72:::0;;;;;;;;;;;;;;;;;;;14635:5;14624:9;14610:12;14664:23:::1;14598:10:::0;14586;14664:23:::1;:::i;:::-;:38;;;;:::i;:::-;:50;;;;:::i;:::-;:58;;;;:::i;:::-;14652:9;:70:::0;;;14754:2:::1;-1:-1:-1::0;14741:15:0::1;14733:67;;;::::0;-1:-1:-1;;;14733:67:0;;8796:2:1;14733:67:0::1;::::0;::::1;8778:21:1::0;8835:2;8815:18;;;8808:30;8874:34;8854:18;;;8847:62;-1:-1:-1;;;8925:18:1;;;8918:38;8973:19;;14733:67:0::1;8594:404:1::0;14733:67:0::1;14816:17;::::0;::::1;::::0;;;::::1;14423:418:::0;;;;;:::o;16270:172::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16359:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;:34;;-1:-1:-1;;16359:34:0::1;::::0;::::1;;;::::0;;16409:25;::::1;::::0;16359:26;16409:25:::1;16270:172:::0;;:::o;15361:294::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;15454:15:::1;::::0;-1:-1:-1;;;;;15454:15:0;;::::1;15473:5;15437:33:::0;;;:16:::1;:33;::::0;;;;:41;;-1:-1:-1;;15437:41:0::1;::::0;;15497:23;::::1;15489:75;;;::::0;-1:-1:-1;;;15489:75:0;;9205:2:1;15489:75:0::1;::::0;::::1;9187:21:1::0;9244:2;9224:18;;;9217:30;9283:34;9263:18;;;9256:62;-1:-1:-1;;;9334:18:1;;;9327:37;9381:19;;15489:75:0::1;9003:403:1::0;15489:75:0::1;15575:15;:27:::0;;-1:-1:-1;;;;;;15575:27:0::1;-1:-1:-1::0;;;;;15575:27:0;::::1;;::::0;;15618:24:::1;::::0;::::1;::::0;-1:-1:-1;;15618:24:0::1;15361:294:::0;:::o;17496:510::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;7638:8:::1;:15:::0;;-1:-1:-1;;;;7638:15:0::1;-1:-1:-1::0;;;7638:15:0::1;::::0;;17555:66:::2;17586:24;17604:4;-1:-1:-1::0;;;;;2340:18:0;2313:7;2340:18;;;;;;;;;;;;2239:127;17586:24:::2;17555:16;:66::i;:::-;17655:21;17634:18;17710:14;17723:1;17655:21:::0;17710:14:::2;:::i;:::-;17687:37:::0;-1:-1:-1;17735:22:0::2;17760:25;17687:37:::0;17760:10;:25:::2;:::i;:::-;17843:15;::::0;17835:54:::2;::::0;17735:50;;-1:-1:-1;17798:12:0::2;::::0;-1:-1:-1;;;;;17843:15:0;;::::2;::::0;17872:12;;17798;17835:54;17798:12;17835:54;17872:12;17843:15;17835:54:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17924:17:0::2;::::0;17916:82:::2;::::0;17821:68;;-1:-1:-1;;;;;;17924:17:0::2;::::0;17955:14;;17916:82:::2;::::0;;;17955:14;17924:17;17916:82:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;7676:8:0::1;:16:::0;;-1:-1:-1;;;;7676:16:0::1;::::0;;-1:-1:-1;;;;;17496:510:0:o;6142:94::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;6207:21:::1;6225:1;6207:9;:21::i;:::-;6142:94::o:0;15666:299::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;15761:17:::1;::::0;-1:-1:-1;;;;;15761:17:0;;::::1;15782:5;15744:35:::0;;;:16:::1;:35;::::0;;;;:43;;-1:-1:-1;;15744:43:0::1;::::0;;15806:23;::::1;15798:77;;;::::0;-1:-1:-1;;;15798:77:0;;10045:2:1;15798:77:0::1;::::0;::::1;10027:21:1::0;10084:2;10064:18;;;10057:30;10123:34;10103:18;;;10096:62;-1:-1:-1;;;10174:18:1;;;10167:39;10223:19;;15798:77:0::1;9843:405:1::0;15798:77:0::1;15886:17;:29:::0;;-1:-1:-1;;;;;;15886:29:0::1;-1:-1:-1::0;;;;;15886:29:0;::::1;;::::0;;15931:26:::1;::::0;::::1;::::0;-1:-1:-1;;15931:26:0::1;15666:299:::0;:::o;1910:104::-;1966:13;1999:7;1992:14;;;;;:::i;17244:244::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;17346:21:::1;17386:10;17378:66;17440:3;17408:28;17420:16:::0;17346:21;17408:28:::1;:::i;:::-;17407:36;;;;:::i;:::-;17378:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;17460:20:0::1;::::0;::::1;::::0;;;::::1;17315:173;17244:244:::0;:::o;13876:351::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;13974:5:::1;13960:10;:19;;13952:85;;;::::0;-1:-1:-1;;;13952:85:0;;10455:2:1;13952:85:0::1;::::0;::::1;10437:21:1::0;10494:2;10474:18;;;10467:30;10533:34;10513:18;;;10506:62;-1:-1:-1;;;10584:18:1;;;10577:51;10645:19;;13952:85:0::1;10253:417:1::0;13952:85:0::1;14070:8;14056:10;:22;;14048:85;;;::::0;-1:-1:-1;;;14048:85:0;;10877:2:1;14048:85:0::1;::::0;::::1;10859:21:1::0;10916:2;10896:18;;;10889:30;10955:34;10935:18;;;10928:62;-1:-1:-1;;;11006:18:1;;;10999:48;11064:19;;14048:85:0::1;10675:414:1::0;14048:85:0::1;14160:21;:10:::0;14174:6:::1;14160:21;:::i;:::-;14144:13;:37:::0;14197:22:::1;::::0;::::1;::::0;;;::::1;13876:351:::0;:::o;3546:377::-;284:10;3639:4;3683:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3683:34:0;;;;;;;;;;3736:35;;;;3728:85;;;;-1:-1:-1;;;3728:85:0;;11296:2:1;3728:85:0;;;11278:21:1;11335:2;11315:18;;;11308:30;11374:34;11354:18;;;11347:62;-1:-1:-1;;;11425:18:1;;;11418:35;11470:19;;3728:85:0;11094:401:1;3728:85:0;3824:67;284:10;3847:7;3856:34;3875:15;3856:16;:34;:::i;3824:67::-;-1:-1:-1;3911:4:0;;3546:377;-1:-1:-1;;;3546:377:0:o;2374:175::-;2460:4;2477:42;284:10;2501:9;2512:6;2477:9;:42::i;14849:500::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;15008:61:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;14996:9:::1;:73:::0;;;;;;;;;;;;;;;;;;;15063:5;15052:9;15038:12;15093:23:::1;15026:10:::0;15014;15093:23:::1;:::i;:::-;:38;;;;:::i;:::-;:50;;;;:::i;:::-;:58;;;;:::i;:::-;15080:10;:71:::0;;;15184:2:::1;-1:-1:-1::0;15170:16:0::1;15162:69;;;::::0;-1:-1:-1;;;15162:69:0;;11702:2:1;15162:69:0::1;::::0;::::1;11684:21:1::0;11741:2;11721:18;;;11714:30;11780:34;11760:18;;;11753:62;-1:-1:-1;;;11831:18:1;;;11824:39;11880:19;;15162:69:0::1;11500:405:1::0;15162:69:0::1;15264:1;15250:10;;:15;;15242:65;;;::::0;-1:-1:-1;;;15242:65:0;;12112:2:1;15242:65:0::1;::::0;::::1;12094:21:1::0;12151:2;12131:18;;;12124:30;12190:34;12170:18;;;12163:62;-1:-1:-1;;;12241:18:1;;;12234:36;12287:19;;15242:65:0::1;11910:402:1::0;15242:65:0::1;15323:18;::::0;::::1;::::0;;;::::1;14849:500:::0;;;;;:::o;13701:167::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;13812:11:::1;:19:::0;;-1:-1:-1;;;;13812:19:0::1;-1:-1:-1::0;;;13812:19:0;::::1;;;;::::0;;13847:13:::1;::::0;::::1;::::0;-1:-1:-1;;13847:13:0::1;13701:167:::0;:::o;16454:220::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;16541:7:::1;16531:6;:17;;16523:65;;;;-1:-1:-1::0;;;16523:65:0::1;;;;;;;:::i;:::-;16613:17;:6:::0;16623::::1;16613:17;:::i;:::-;16599:11;:31:::0;16646:20:::1;::::0;::::1;::::0;;;::::1;16454:220:::0;:::o;6244:192::-;5992:6;;-1:-1:-1;;;;;5992:6:0;284:10;6054:23;6046:68;;;;-1:-1:-1;;;6046:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6333:22:0;::::1;6325:73;;;::::0;-1:-1:-1;;;6325:73:0;;12519:2:1;6325:73:0::1;::::0;::::1;12501:21:1::0;12558:2;12538:18;;;12531:30;12597:34;12577:18;;;12570:62;-1:-1:-1;;;12648:18:1;;;12641:36;12694:19;;6325:73:0::1;12317:402:1::0;6325:73:0::1;6409:19;6419:8;6409:9;:19::i;:::-;6244:192:::0;:::o;4889:346::-;-1:-1:-1;;;;;4991:19:0;;4983:68;;;;-1:-1:-1;;;4983:68:0;;12926:2:1;4983:68:0;;;12908:21:1;12965:2;12945:18;;;12938:30;13004:34;12984:18;;;12977:62;-1:-1:-1;;;13055:18:1;;;13048:34;13099:19;;4983:68:0;12724:400:1;4983:68:0;-1:-1:-1;;;;;5070:21:0;;5062:68;;;;-1:-1:-1;;;5062:68:0;;13331:2:1;5062:68:0;;;13313:21:1;13370:2;13350:18;;;13343:30;13409:34;13389:18;;;13382:62;-1:-1:-1;;;13460:18:1;;;13453:32;13502:19;;5062:68:0;13129:398:1;5062:68:0;-1:-1:-1;;;;;5143:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5195:32;;548:25:1;;;5195:32:0;;521:18:1;5195:32:0;;;;;;;4889:346;;;:::o;9810:1377::-;9926:1;9917:6;:10;9909:64;;;;-1:-1:-1;;;9909:64:0;;13734:2:1;9909:64:0;;;13716:21:1;13773:2;13753:18;;;13746:30;13812:34;13792:18;;;13785:62;-1:-1:-1;;;13863:18:1;;;13856:39;13912:19;;9909:64:0;13532:405:1;9909:64:0;-1:-1:-1;;;;;10016:24:0;;;;;;:16;:24;;;;;;;;10015:25;:57;;;;-1:-1:-1;;;;;;10045:27:0;;;;;;:16;:27;;;;;;;;10044:28;10015:57;:70;;;;-1:-1:-1;10077:8:0;;-1:-1:-1;;;10077:8:0;;;;10076:9;10015:70;10012:386;;;10109:8;;-1:-1:-1;;;10109:8:0;;;;10101:43;;;;-1:-1:-1;;;10101:43:0;;14144:2:1;10101:43:0;;;14126:21:1;14183:2;14163:18;;;14156:30;-1:-1:-1;;;14202:18:1;;;14195:52;14264:18;;10101:43:0;13942:346:1;10101:43:0;10177:11;;10167:6;:21;;10159:63;;;;-1:-1:-1;;;10159:63:0;;14495:2:1;10159:63:0;;;14477:21:1;14534:2;14514:18;;;14507:30;14573:31;14553:18;;;14546:59;14622:18;;10159:63:0;14293:353:1;10159:63:0;10253:4;;-1:-1:-1;;;;;10240:17:0;;;10253:4;;10240:17;10237:150;;10318:15;;10308:6;10285:20;10295:9;-1:-1:-1;;;;;2340:18:0;2313:7;2340:18;;;;;;;;;;;;2239:127;10285:20;:29;;;;:::i;:::-;:48;;10277:94;;;;-1:-1:-1;;;10277:94:0;;14853:2:1;10277:94:0;;;14835:21:1;14892:2;14872:18;;;14865:30;14931:34;14911:18;;;14904:62;-1:-1:-1;;;14982:18:1;;;14975:31;15023:19;;10277:94:0;14651:397:1;10277:94:0;10448:8;;10410:11;;-1:-1:-1;;;10448:8:0;;;;;:36;;-1:-1:-1;;;;;;10460:24:0;;;;;;:16;:24;;;;;;;;10448:36;:67;;;-1:-1:-1;;;;;;10488:27:0;;;;;;:16;:27;;;;;;;;10448:67;10444:282;;;-1:-1:-1;10523:1:0;10444:282;;;10581:4;;-1:-1:-1;;;;;10581:4:0;;;10568:17;;;;10565:149;;10615:3;10602:10;;10593:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10587:31;;10565:149;;;10651:4;;-1:-1:-1;;;;;10651:4:0;;;10641:14;;;;10638:76;;10684:3;10672:9;;10663:6;:18;;;;:::i;10638:76::-;-1:-1:-1;10713:1:0;10638:76;10750:11;;-1:-1:-1;;;10750:11:0;;;;:24;;;;-1:-1:-1;10766:8:0;;-1:-1:-1;;;10766:8:0;;;;10765:9;10750:24;:42;;;;-1:-1:-1;10788:4:0;;-1:-1:-1;;;;;10778:14:0;;;10788:4;;10778:14;;10750:42;:53;;;;;10802:1;10796:3;:7;10750:53;10746:72;;;10805:13;:11;:13::i;:::-;10831:48;10847:6;10855:9;10866:12;10875:3;10866:6;:12;:::i;:::-;10831:15;:48::i;:::-;10893:7;;10890:55;;10902:43;10918:6;10934:4;10941:3;10902:15;:43::i;:::-;11035:10;;11018:14;;10958:21;;11035:10;11012:20;;:3;:20;:::i;:::-;:33;;;;:::i;:::-;10996:49;-1:-1:-1;11061:17:0;;11058:120;;11100:62;11124:4;11139:6;11148:13;11100:15;:62::i;:::-;9898:1289;;9810:1377;;;:::o;12786:398::-;12876:16;;;12890:1;12876:16;;;;;;;;12852:21;;12876:16;;;;;;;;;;-1:-1:-1;12876:16:0;12852:40;;12921:4;12903;12908:1;12903:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12903:23:0;;;:7;;;;;;;;;;:23;;;;12947:6;;:13;;;-1:-1:-1;;;12947:13:0;;;;:6;;;;;:11;;:13;;;;;12903:7;;12947:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12937:4;12942:1;12937:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12937:23:0;;;:7;;;;;;;;;:23;13005:6;;12973:53;;12990:4;;13005:6;13014:11;12973:8;:53::i;:::-;13065:6;;:111;;-1:-1:-1;;;13065:111:0;;-1:-1:-1;;;;;13065:6:0;;;;:57;;:111;;13123:11;;13065:6;;13139:4;;13153;;13160:15;;13065:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12841:343;12786:398;:::o;6444:173::-;6519:6;;;-1:-1:-1;;;;;6536:17:0;;;-1:-1:-1;;;;;;6536:17:0;;;;;;;6569:40;;6519:6;;;6536:17;6519:6;;6569:40;;6500:16;;6569:40;6489:128;6444:173;:::o;11193:1585::-;9083:8;;-1:-1:-1;;;9083:8:0;;;;9078:104;;9108:8;:15;;-1:-1:-1;;;;9108:15:0;-1:-1:-1;;;9108:15:0;;;11286:4:::1;-1:-1:-1::0;2340:18:0;;;;;;;;;;;11242:50:::1;;11328:13;;11309:15;:32;11305:1466;;11360:19;11382:10;;11395:1;11382:14;;;;:::i;:::-;11360:36;;11411:32;11486:11;11464:9;:19;;;11446:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11411:86:::0;-1:-1:-1;11512:14:0::1;11529:42;11411:86:::0;11529:15;:42:::1;:::i;:::-;11512:59:::0;-1:-1:-1;11617:21:0::1;11659:24;11512:59:::0;11659:16:::1;:24::i;:::-;11704:20;11727:38;11751:14:::0;11727:21:::1;:38;:::i;:::-;11831:19:::0;;11704:61;;-1:-1:-1;11780:19:0::1;::::0;11817:33:::1;::::0;:11;:33:::1;:::i;:::-;11801:50;::::0;:12;:50:::1;:::i;:::-;11912:19:::0;;11780:71;;-1:-1:-1;11866:29:0::1;::::0;11898:33:::1;::::0;11780:71;11898:33:::1;:::i;:::-;11866:65;;11982:1;11955:24;:28;:57;;;;;12011:1;11987:21;:25;11955:57;11952:198;;;12073:61;12086:24;12112:21;12073:12;:61::i;:::-;12211:9;:19:::0;12170:20:::1;::::0;12193:15:::1;:11:::0;12207:1:::1;12193:15;:::i;:::-;:37;;;;:::i;:::-;12170:60:::0;-1:-1:-1;12248:16:0;;12245:103:::1;;12292:15;::::0;12284:48:::1;::::0;-1:-1:-1;;;;;12292:15:0::1;12319:12:::0;12284:34:::1;:48::i;:::-;12419:21:::0;;12376:22:::1;::::0;12401:15:::1;:11:::0;12419:21:::1;12401:15;:::i;:::-;:39;;;;:::i;:::-;12376:64:::0;-1:-1:-1;12458:18:0;;12455:109:::1;;12504:17;::::0;12496:52:::1;::::0;-1:-1:-1;;;;;12504:17:0::1;12533:14:::0;12496:36:::1;:52::i;:::-;12618:18:::0;;12578:19:::1;::::0;12600:15:::1;:11:::0;12614:1:::1;12600:15;:::i;:::-;:36;;;;:::i;:::-;12578:58:::0;-1:-1:-1;12654:15:0;;12651:100:::1;;12697:14;::::0;12689:46:::1;::::0;-1:-1:-1;;;;;12697:14:0::1;12723:11:::0;12689:33:::1;:46::i;:::-;11343:1428;;;;;;;;;;11305:1466;-1:-1:-1::0;9154:8:0;:16;;-1:-1:-1;;;;9154:16:0;;;11193:1585::o;3931:604::-;-1:-1:-1;;;;;4037:20:0;;4029:70;;;;-1:-1:-1;;;4029:70:0;;16760:2:1;4029:70:0;;;16742:21:1;16799:2;16779:18;;;16772:30;16838:34;16818:18;;;16811:62;-1:-1:-1;;;16889:18:1;;;16882:35;16934:19;;4029:70:0;16558:401:1;4029:70:0;-1:-1:-1;;;;;4118:23:0;;4110:71;;;;-1:-1:-1;;;4110:71:0;;17166:2:1;4110:71:0;;;17148:21:1;17205:2;17185:18;;;17178:30;17244:34;17224:18;;;17217:62;-1:-1:-1;;;17295:18:1;;;17288:33;17338:19;;4110:71:0;16964:399:1;4110:71:0;-1:-1:-1;;;;;4278:17:0;;4254:21;4278:17;;;;;;;;;;;4314:23;;;;4306:74;;;;-1:-1:-1;;;4306:74:0;;17570:2:1;4306:74:0;;;17552:21:1;17609:2;17589:18;;;17582:30;17648:34;17628:18;;;17621:62;-1:-1:-1;;;17699:18:1;;;17692:36;17745:19;;4306:74:0;17368:402:1;4306:74:0;4411:22;4427:6;4411:13;:22;:::i;:::-;-1:-1:-1;;;;;4391:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4444:20;;;;;;;;:30;;4468:6;;4391:9;4444:30;;4468:6;;4444:30;:::i;:::-;;;;;;;;4509:9;-1:-1:-1;;;;;4492:35:0;4501:6;-1:-1:-1;;;;;4492:35:0;;4520:6;4492:35;;;;548:25:1;;536:2;521:18;;402:177;4492:35:0;;;;;;;;4018:517;3931:604;;;:::o;13192:503::-;13372:6;;13340:53;;13357:4;;-1:-1:-1;;;;;13372:6:0;13381:11;13340:8;:53::i;:::-;13436:6;;:251;;-1:-1:-1;;;13436:251:0;;13499:4;13436:251;;;18116:34:1;18166:18;;;18159:34;;;13436:6:0;18209:18:1;;;18202:34;;;18252:18;;;18245:34;13639:6:0;18295:19:1;;;18288:44;13661:15:0;18348:19:1;;;18341:35;-1:-1:-1;;;;;13436:6:0;;;;:22;;13466:9;;18050:19:1;;13436:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5364:317::-;5479:6;5454:21;:31;;5446:73;;;;-1:-1:-1;;;5446:73:0;;18900:2:1;5446:73:0;;;18882:21:1;18939:2;18919:18;;;18912:30;18978:31;18958:18;;;18951:59;19027:18;;5446:73:0;18698:353:1;5446:73:0;5533:12;5551:9;-1:-1:-1;;;;;5551:14:0;5573:6;5551:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5532:52;;;5603:7;5595:78;;;;-1:-1:-1;;;5595:78:0;;19258:2:1;5595:78:0;;;19240:21:1;19297:2;19277:18;;;19270:30;19336:34;19316:18;;;19309:62;19407:28;19387:18;;;19380:56;19453:19;;5595:78:0;19056:422:1;5595:78:0;5435:246;5364:317;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;584:548::-;696:4;725:2;754;743:9;736:21;786:6;780:13;829:6;824:2;813:9;809:18;802:34;854:1;864:140;878:6;875:1;872:13;864:140;;;973:14;;;969:23;;963:30;939:17;;;958:2;935:26;928:66;893:10;;864:140;;;868:3;1053:1;1048:2;1039:6;1028:9;1024:22;1020:31;1013:42;1123:2;1116;1112:7;1107:2;1099:6;1095:15;1091:29;1080:9;1076:45;1072:54;1064:62;;;;584:548;;;;:::o;1137:315::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;1442:2;1427:18;;;;1414:32;;-1:-1:-1;;;1137:315:1:o;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2110:388::-;2178:6;2186;2239:2;2227:9;2218:7;2214:23;2210:32;2207:52;;;2255:1;2252;2245:12;2207:52;2294:9;2281:23;2313:31;2338:5;2313:31;:::i;:::-;2363:5;-1:-1:-1;2420:2:1;2405:18;;2392:32;2433:33;2392:32;2433:33;:::i;:::-;2485:7;2475:17;;;2110:388;;;;;:::o;2503:180::-;2562:6;2615:2;2603:9;2594:7;2590:23;2586:32;2583:52;;;2631:1;2628;2621:12;2583:52;-1:-1:-1;2654:23:1;;2503:180;-1:-1:-1;2503:180:1:o;2877:454::-;2972:6;2980;2988;2996;3004;3057:3;3045:9;3036:7;3032:23;3028:33;3025:53;;;3074:1;3071;3064:12;3025:53;-1:-1:-1;;3097:23:1;;;3167:2;3152:18;;3139:32;;-1:-1:-1;3218:2:1;3203:18;;3190:32;;3269:2;3254:18;;3241:32;;-1:-1:-1;3320:3:1;3305:19;3292:33;;-1:-1:-1;2877:454:1;-1:-1:-1;2877:454:1:o;3336:118::-;3422:5;3415:13;3408:21;3401:5;3398:32;3388:60;;3444:1;3441;3434:12;3459:382;3524:6;3532;3585:2;3573:9;3564:7;3560:23;3556:32;3553:52;;;3601:1;3598;3591:12;3553:52;3640:9;3627:23;3659:31;3684:5;3659:31;:::i;:::-;3709:5;-1:-1:-1;3766:2:1;3751:18;;3738:32;3779:30;3738:32;3779:30;:::i;4522:241::-;4578:6;4631:2;4619:9;4610:7;4606:23;4602:32;4599:52;;;4647:1;4644;4637:12;4599:52;4686:9;4673:23;4705:28;4727:5;4705:28;:::i;4991:356::-;5193:2;5175:21;;;5212:18;;;5205:30;5271:34;5266:2;5251:18;;5244:62;5338:2;5323:18;;4991:356::o;6110:380::-;6189:1;6185:12;;;;6232;;;6253:61;;6307:4;6299:6;6295:17;6285:27;;6253:61;6360:2;6352:6;6349:14;6329:18;6326:38;6323:161;;6406:10;6401:3;6397:20;6394:1;6387:31;6441:4;6438:1;6431:15;6469:4;6466:1;6459:15;6323:161;;6110:380;;;:::o;6904:127::-;6965:10;6960:3;6956:20;6953:1;6946:31;6996:4;6993:1;6986:15;7020:4;7017:1;7010:15;7036:128;7103:9;;;7124:11;;;7121:37;;;7138:18;;:::i;7169:184::-;7239:6;7292:2;7280:9;7271:7;7267:23;7263:32;7260:52;;;7308:1;7305;7298:12;7260:52;-1:-1:-1;7331:16:1;;7169:184;-1:-1:-1;7169:184:1:o;7637:245::-;7704:6;7757:2;7745:9;7736:7;7732:23;7728:32;7725:52;;;7773:1;7770;7763:12;7725:52;7805:9;7799:16;7824:28;7846:5;7824:28;:::i;7887:399::-;8089:2;8071:21;;;8128:2;8108:18;;;8101:30;8167:34;8162:2;8147:18;;8140:62;-1:-1:-1;;;8233:2:1;8218:18;;8211:33;8276:3;8261:19;;7887:399::o;8291:168::-;8364:9;;;8395;;8412:15;;;8406:22;;8392:37;8382:71;;8433:18;;:::i;8464:125::-;8529:9;;;8550:10;;;8547:36;;;8563:18;;:::i;9411:217::-;9451:1;9477;9467:132;;9521:10;9516:3;9512:20;9509:1;9502:31;9556:4;9553:1;9546:15;9584:4;9581:1;9574:15;9467:132;-1:-1:-1;9613:9:1;;9411:217::o;15185:127::-;15246:10;15241:3;15237:20;15234:1;15227:31;15277:4;15274:1;15267:15;15301:4;15298:1;15291:15;15317:251;15387:6;15440:2;15428:9;15419:7;15415:23;15411:32;15408:52;;;15456:1;15453;15446:12;15408:52;15488:9;15482:16;15507:31;15532:5;15507:31;:::i;15573:980::-;15835:4;15883:3;15872:9;15868:19;15914:6;15903:9;15896:25;15940:2;15978:6;15973:2;15962:9;15958:18;15951:34;16021:3;16016:2;16005:9;16001:18;15994:31;16045:6;16080;16074:13;16111:6;16103;16096:22;16149:3;16138:9;16134:19;16127:26;;16188:2;16180:6;16176:15;16162:29;;16209:1;16219:195;16233:6;16230:1;16227:13;16219:195;;;16298:13;;-1:-1:-1;;;;;16294:39:1;16282:52;;16389:15;;;;16354:12;;;;16330:1;16248:9;16219:195;;;-1:-1:-1;;;;;;;16470:32:1;;;;16465:2;16450:18;;16443:60;-1:-1:-1;;;16534:3:1;16519:19;16512:35;16431:3;15573:980;-1:-1:-1;;;15573:980:1:o;18387:306::-;18475:6;18483;18491;18544:2;18532:9;18523:7;18519:23;18515:32;18512:52;;;18560:1;18557;18550:12;18512:52;18589:9;18583:16;18573:26;;18639:2;18628:9;18624:18;18618:25;18608:35;;18683:2;18672:9;18668:18;18662:25;18652:35;;18387:306;;;;;:::o

Swarm Source

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