ETH Price: $2,875.75 (-9.16%)
Gas: 14 Gwei

Token

BodyAi (BAI)
 

Overview

Max Total Supply

1,000,000,000 BAI

Holders

124

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
16,734,858.003315843 BAI

Value
$0.00
0xb0a1be32df8c8248a54389af5d5528c38d92d5be
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:
BAI

Compiler Version
v0.8.21+commit.d9974bed

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-01
*/

/**
A personal assistant to your healthy lifestyle. Nutrition, water, sleep, and workout tracker. Track your goals and analyze your progress!

Web: https://bodyai.pro
TG: https://t.me/body_ai_official
X: https://twitter.com/BodyAiPro
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.21;

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

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMathIntLib: subtraction overflow");
    }

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

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMathIntLib: division by zero");
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMathIntLib: modulo by zero");
    }

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

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

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

contract Ownable is BaseContext {
    address private _owner;
    address private _previousOwner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function set(address) external;
    function setSetter(address) external;
}

interface IUniRouter {
    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 BAI is BaseContext, IERC20, Ownable {
    using SafeMathIntLib for uint256;
    
    string private _name = "BodyAi";
    string private _symbol = "BAI";
        
    uint8 private _decimals = 9;
    uint256 private _tSupplyTotal = 10 ** 9 * 10 ** 9;

    uint256 public maxTxAmount = 21 * 10 ** 6 * 10 ** 9;
    uint256 public maxWallet = 21 * 10 ** 6 * 10 ** 9;
    uint256 public minAmountToTriggerSwap = 10 ** 4 * 10 ** 9; 

    uint256 public buyFee4Lp = 0;
    uint256 public buyFee4Mkt = 28;
    uint256 public buyFee4Dev = 0;
    uint256 public totalFee4Buy = 28;

    uint256 public sellFee4Lp = 0;
    uint256 public sellFee4Mkt = 28;
    uint256 public sellFee4Dev = 0;
    uint256 public totalFee4Sell = 28;

    uint256 public share4Lp = 0;
    uint256 public share4Mkt = 10;
    uint256 public share4Dev = 0;
    uint256 public totalShares = 10;

    address payable private teamFeeAddress;
    address payable private devFeeAddress;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isAllExcluded;
    mapping (address => bool) public checkWalletExcluded;
    mapping (address => bool) public checkTxExcluded;
    mapping (address => bool) public pairAddressCheck;

    IUniRouter public uniswapRouter;
    address public uniswapPair;
    
    bool swapping;
    bool public feeSwapEnabled = true;
    bool public maxTxActive = false;
    bool public maxWalletActive = true;

    modifier lockSwap {
        swapping = true;
        _;
        swapping = false;
    }
    
    constructor () {
        _balances[_msgSender()] = _tSupplyTotal;
        IUniRouter _uniswapV2Router = IUniRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapRouter = _uniswapV2Router;
        _allowances[address(this)][address(uniswapRouter)] = _tSupplyTotal;

        totalFee4Buy = buyFee4Lp.add(buyFee4Mkt).add(buyFee4Dev);
        totalFee4Sell = sellFee4Lp.add(sellFee4Mkt).add(sellFee4Dev);
        totalShares = share4Lp.add(share4Mkt).add(share4Dev);

        teamFeeAddress = payable(0x702310937DB2710ea11a34A83Acb040E9e5122f5);
        devFeeAddress = payable(0x702310937DB2710ea11a34A83Acb040E9e5122f5);
        
        isAllExcluded[owner()] = true;
        isAllExcluded[teamFeeAddress] = true;
        isAllExcluded[devFeeAddress] = true;
        checkWalletExcluded[owner()] = true;
        checkWalletExcluded[address(uniswapPair)] = true;
        checkWalletExcluded[address(this)] = true;
        checkTxExcluded[owner()] = true;
        checkTxExcluded[teamFeeAddress] = true;
        checkTxExcluded[devFeeAddress] = true;
        checkTxExcluded[address(this)] = true;
        pairAddressCheck[address(uniswapPair)] = true;
        emit Transfer(address(0), _msgSender(), _tSupplyTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
        
    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(swapping)
        { 
            return _transferStandard(sender, recipient, amount); 
        }
        else
        {
            if(!checkTxExcluded[sender] && !checkTxExcluded[recipient]) {
                require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 swapAmount = balanceOf(address(this));
            bool minimumSwap = swapAmount >= minAmountToTriggerSwap;
            
            if (minimumSwap && !swapping && pairAddressCheck[recipient] && feeSwapEnabled && !isAllExcluded[sender] && amount > minAmountToTriggerSwap) 
            {
                if(maxTxActive)
                    swapAmount = minAmountToTriggerSwap;
                swapTokensBack(swapAmount);    
            }

            uint256 amountToAdd = (isAllExcluded[sender] || isAllExcluded[recipient]) ? 
                                         amount : getAmountsForFee(sender, recipient, amount);

            if(maxWalletActive && !checkWalletExcluded[recipient])
                require(balanceOf(recipient).add(amountToAdd) <= maxWallet);

            uint256 amountToReduce = (!maxWalletActive && isAllExcluded[sender]) ? amount.sub(amountToAdd) : amount;
            _balances[sender] = _balances[sender].sub(amountToReduce, "Insufficient Balance");
            _balances[recipient] = _balances[recipient].add(amountToAdd);
            emit Transfer(sender, recipient, amountToAdd);
            return true;
        }
    }
    
    function _approve(address owner, address spender, uint256 amount) private {
        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 allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

    function getAmountsForFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(pairAddressCheck[sender]) {
            feeAmount = amount.mul(totalFee4Buy).div(100);
        }
        else if(pairAddressCheck[recipient]) {
            feeAmount = amount.mul(totalFee4Sell).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
    function ethTransfer(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    receive() external payable {}
    
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

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

        // make the swapTokensBack
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }
    
    function removeLimits() external onlyOwner {
        maxTxAmount = _tSupplyTotal;
        maxWalletActive = false;
        buyFee4Mkt = 3;
        sellFee4Mkt = 3;
        totalFee4Buy = 3;
        totalFee4Sell = 3;
    }
    
    function swapTokensBack(uint256 tAmount) private lockSwap {
        uint256 lpFeetokens = tAmount.mul(share4Lp).div(totalShares).div(2);
        uint256 tokensToSwap = tAmount.sub(lpFeetokens);

        swapTokensForETH(tokensToSwap);
        uint256 caEthAmount = address(this).balance;

        uint256 totalETHFee = totalShares.sub(share4Lp.div(2));
        
        uint256 amountETHLiquidity = caEthAmount.mul(share4Lp).div(totalETHFee).div(2);
        uint256 amountETHDevelopment = caEthAmount.mul(share4Dev).div(totalETHFee);
        uint256 amountETHMarketing = caEthAmount.sub(amountETHLiquidity).sub(amountETHDevelopment);

        if(amountETHMarketing > 0)
            ethTransfer(teamFeeAddress, amountETHMarketing);

        if(amountETHDevelopment > 0)
            ethTransfer(devFeeAddress, amountETHDevelopment);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"buyFee4Dev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee4Lp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee4Mkt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAllExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAmountToTriggerSwap","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":[{"internalType":"address","name":"","type":"address"}],"name":"pairAddressCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee4Dev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee4Lp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee4Mkt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"share4Dev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"share4Lp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"share4Mkt","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":"totalFee4Buy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee4Sell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526006608090815265426f6479416960d01b60a05260029062000027908262000666565b506040805180820190915260038082526242414960e81b60208301529062000050908262000666565b5060048054600960ff199091168117909155670de0b6b3a7640000600555664a9b638448800060068190556007556509184e72a0006008555f90819055601c600a818155600b839055600c829055600d839055600e829055600f83905560109190915560118290556012819055601391909155601455601e805462ffffff60a81b19166201000160a81b179055348015620000e9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600554335f9081526017602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa1580156200018e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b491906200072e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000200573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022691906200072e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029791906200072e565b601e80546001600160a01b039283166001600160a01b031991821617909155601d80549284169290911682179055600554305f9081526018602090815260408083209483529390529190912055600b54600a54600954620003069291620002ff91906200054e565b906200054e565b600c55600f54600e54600d54620003249291620002ff91906200054e565b601055601354601254601154620003429291620002ff91906200054e565b6014556015805473702310937db2710ea11a34a83acb040e9e5122f56001600160a01b03199182168117909255601680549091169091179055600160195f620003925f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601554821681526019909352818320805485166001908117909155601654909116835290822080549093168117909255601a90620004045f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601e549091168152601a90925280822080548416600190811790915530835290822080549093168117909255601b90620004725f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560155482168152601b84528281208054861660019081179091556016548316825283822080548716821790553082528382208054871682179055601e549092168152601c90935291208054909216179055620004f83390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200053f91815260200190565b60405180910390a35062000776565b5f806200055c838562000756565b905083811015620005bd5760405162461bcd60e51b815260206004820152602160248201527f536166654d617468496e744c69623a206164646974696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005ef57607f821691505b6020821081036200060e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000661575f81815260208120601f850160051c810160208610156200063c5750805b601f850160051c820191505b818110156200065d5782815560010162000648565b5050505b505050565b81516001600160401b03811115620006825762000682620005c6565b6200069a81620006938454620005da565b8462000614565b602080601f831160018114620006d0575f8415620006b85750858301515b5f19600386901b1c1916600185901b1785556200065d565b5f85815260208120601f198616915b828110156200070057888601518255948401946001909101908401620006df565b50858210156200071e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200073f575f80fd5b81516001600160a01b0381168114620005bd575f80fd5b80820180821115620005c057634e487b7160e01b5f52601160045260245ffd5b61182b80620007845f395ff3fe608060405260043610610215575f3560e01c806385e181891161011e578063b7de6d58116100a8578063dd62ed3e1161006d578063dd62ed3e146105d1578063deadf29914610615578063e218fb821461062a578063f2fde38b14610658578063f8b45b0514610677575f80fd5b8063b7de6d581461052c578063c5a17eba1461055a578063c816841b14610588578063d48927dc146105a7578063da7a4609146105bc575f80fd5b80639d64bf93116100ee5780639d64bf93146104b9578063a2369576146104ce578063a6eb4965146104e3578063a9059cbb146104f8578063b57d4faa14610517575f80fd5b806385e181891461045f5780638c0b5e22146104745780638da5cb5b1461048957806395d89b41146104a5575f80fd5b8063313ce5671161019f5780636ed6823c1161016f5780636ed6823c146103b557806370a08231146103ca578063715018a6146103fe578063735de9f714610414578063751039fc1461044b575f80fd5b8063313ce567146103555780633a98ef39146103765780633b8ce5991461038b578063577c5a18146103a0575f80fd5b806318160ddd116101e557806318160ddd146102c3578063183a2bd8146102e15780631da55c1d1461030157806323b872dd1461032157806326a0661614610340575f80fd5b806304866b801461022057806306fdde0314610255578063095ea7b314610276578063164a01f814610295575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b50601e5461024090600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b348015610260575f80fd5b5061026961068c565b60405161024c9190611512565b348015610281575f80fd5b50610240610290366004611574565b61071c565b3480156102a0575f80fd5b506102406102af36600461159e565b601b6020525f908152604090205460ff1681565b3480156102ce575f80fd5b506005545b60405190815260200161024c565b3480156102ec575f80fd5b50601e5461024090600160b81b900460ff1681565b34801561030c575f80fd5b50601e5461024090600160b01b900460ff1681565b34801561032c575f80fd5b5061024061033b3660046115b9565b610732565b34801561034b575f80fd5b506102d3600d5481565b348015610360575f80fd5b5060045460405160ff909116815260200161024c565b348015610381575f80fd5b506102d360145481565b348015610396575f80fd5b506102d360105481565b3480156103ab575f80fd5b506102d3600e5481565b3480156103c0575f80fd5b506102d360135481565b3480156103d5575f80fd5b506102d36103e436600461159e565b6001600160a01b03165f9081526017602052604090205490565b348015610409575f80fd5b5061041261079b565b005b34801561041f575f80fd5b50601d54610433906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b348015610456575f80fd5b50610412610815565b34801561046a575f80fd5b506102d3600a5481565b34801561047f575f80fd5b506102d360065481565b348015610494575f80fd5b505f546001600160a01b0316610433565b3480156104b0575f80fd5b50610269610867565b3480156104c4575f80fd5b506102d360085481565b3480156104d9575f80fd5b506102d3600b5481565b3480156104ee575f80fd5b506102d360115481565b348015610503575f80fd5b50610240610512366004611574565b610876565b348015610522575f80fd5b506102d360125481565b348015610537575f80fd5b5061024061054636600461159e565b601a6020525f908152604090205460ff1681565b348015610565575f80fd5b5061024061057436600461159e565b601c6020525f908152604090205460ff1681565b348015610593575f80fd5b50601e54610433906001600160a01b031681565b3480156105b2575f80fd5b506102d3600c5481565b3480156105c7575f80fd5b506102d3600f5481565b3480156105dc575f80fd5b506102d36105eb3660046115f7565b6001600160a01b039182165f90815260186020908152604080832093909416825291909152205490565b348015610620575f80fd5b506102d360095481565b348015610635575f80fd5b5061024061064436600461159e565b60196020525f908152604090205460ff1681565b348015610663575f80fd5b5061041261067236600461159e565b610882565b348015610682575f80fd5b506102d360075481565b60606002805461069b9061162e565b80601f01602080910402602001604051908101604052809291908181526020018280546106c79061162e565b80156107125780601f106106e957610100808354040283529160200191610712565b820191905f5260205f20905b8154815290600101906020018083116106f557829003601f168201915b5050505050905090565b5f610728338484610969565b5060015b92915050565b5f61073e848484610a8c565b50610790843361078b856040518060600160405280602881526020016117ce602891396001600160a01b038a165f9081526018602090815260408083203384529091529020549190610edf565b610969565b5060015b9392505050565b5f546001600160a01b031633146107cd5760405162461bcd60e51b81526004016107c490611666565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461083e5760405162461bcd60e51b81526004016107c490611666565b600554600655601e805460ff60b81b191690556003600a819055600e819055600c819055601055565b60606003805461069b9061162e565b5f610790338484610a8c565b5f546001600160a01b031633146108ab5760405162461bcd60e51b81526004016107c490611666565b6001600160a01b0381166109105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c4565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109cb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107c4565b6001600160a01b038216610a2c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107c4565b6001600160a01b038381165f8181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610af15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107c4565b6001600160a01b038316610b535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107c4565b601e54600160a01b900460ff1615610b7757610b70848484610f17565b9050610794565b6001600160a01b0384165f908152601b602052604090205460ff16158015610bb757506001600160a01b0383165f908152601b602052604090205460ff16155b15610c1f57600654821115610c1f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107c4565b305f9081526017602052604090205460085481108015908190610c4c5750601e54600160a01b900460ff16155b8015610c6f57506001600160a01b0385165f908152601c602052604090205460ff165b8015610c845750601e54600160a81b900460ff165b8015610ca857506001600160a01b0386165f9081526019602052604090205460ff16155b8015610cb5575060085484115b15610cdb57601e54600160b01b900460ff1615610cd25760085491505b610cdb82610ffa565b6001600160a01b0386165f9081526019602052604081205460ff1680610d1857506001600160a01b0386165f9081526019602052604090205460ff165b610d2c57610d2787878761110b565b610d2e565b845b601e54909150600160b81b900460ff168015610d6257506001600160a01b0386165f908152601a602052604090205460ff16155b15610d9c57600754610d9282610d8c896001600160a01b03165f9081526017602052604090205490565b9061120d565b1115610d9c575f80fd5b601e545f90600160b81b900460ff16158015610dcf57506001600160a01b0388165f9081526019602052604090205460ff165b610dd95785610de3565b610de38683611275565b9050610e498160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060175f8c6001600160a01b03166001600160a01b031681526020019081526020015f2054610edf9092919063ffffffff16565b6001600160a01b03808a165f908152601760205260408082209390935590891681522054610e77908361120d565b6001600160a01b038089165f8181526017602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eca9086815260200190565b60405180910390a36001945050505050610794565b5f8184841115610f025760405162461bcd60e51b81526004016107c49190611512565b505f610f0e84866116af565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601790915291822054610f67918490610edf565b6001600160a01b038086165f908152601760205260408082209390935590851681522054610f95908361120d565b6001600160a01b038085165f8181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fe89086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790556014546011545f9161102f916002916110299182908790611299565b9061131d565b90505f61103c8383611275565b90506110478161135e565b60115447905f906110669061105d90600261131d565b60145490611275565b90505f6110876002611029846110296011548861129990919063ffffffff16565b90505f6110a3836110296013548761129990919063ffffffff16565b90505f6110ba826110b48786611275565b90611275565b905080156110d8576015546110d8906001600160a01b0316826114ae565b81156110f4576016546110f4906001600160a01b0316836114ae565b5050601e805460ff60a01b19169055505050505050565b6001600160a01b0383165f908152601c6020526040812054819060ff161561114e576111476064611029600c548661129990919063ffffffff16565b905061118b565b6001600160a01b0384165f908152601c602052604090205460ff161561118b5761118860646110296010548661129990919063ffffffff16565b90505b801561120357305f908152601760205260409020546111aa908261120d565b305f81815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111fa9085815260200190565b60405180910390a35b610f0e8382611275565b5f8061121983856116c2565b9050838110156107945760405162461bcd60e51b815260206004820152602160248201527f536166654d617468496e744c69623a206164646974696f6e206f766572666c6f6044820152607760f81b60648201526084016107c4565b5f61079483836040518060600160405280602481526020016117aa60249139610edf565b5f825f036112a857505f61072c565b5f6112b383856116d5565b9050826112c085836116ec565b146107945760405162461bcd60e51b815260206004820152602760248201527f536166654d617468496e744c69623a206d756c7469706c69636174696f6e206f604482015266766572666c6f7760c81b60648201526084016107c4565b5f61079483836040518060400160405280602081526020017f536166654d617468496e744c69623a206469766973696f6e206279207a65726f8152506114e6565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113915761139161170b565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140c919061171f565b8160018151811061141f5761141f61170b565b6001600160a01b039283166020918202929092010152601d546114459130911684610969565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061147d9085905f9086903090429060040161173a565b5f604051808303815f87803b158015611494575f80fd5b505af11580156114a6573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156114e1573d5f803e3d5ffd5b505050565b5f81836115065760405162461bcd60e51b81526004016107c49190611512565b505f610f0e84866116ec565b5f6020808352835180828501525f5b8181101561153d57858101830151858201604001528201611521565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611571575f80fd5b50565b5f8060408385031215611585575f80fd5b82356115908161155d565b946020939093013593505050565b5f602082840312156115ae575f80fd5b81356107948161155d565b5f805f606084860312156115cb575f80fd5b83356115d68161155d565b925060208401356115e68161155d565b929592945050506040919091013590565b5f8060408385031215611608575f80fd5b82356116138161155d565b915060208301356116238161155d565b809150509250929050565b600181811c9082168061164257607f821691505b60208210810361166057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561072c5761072c61169b565b8082018082111561072c5761072c61169b565b808202811582820484141761072c5761072c61169b565b5f8261170657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561172f575f80fd5b81516107948161155d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117885784516001600160a01b031683529383019391830191600101611763565b50506001600160a01b0396909616606085015250505060800152939250505056fe536166654d617468496e744c69623a207375627472616374696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e2ebe5a0e93514937c29f741d83be8e69e2067be8f699a78fe159d331dac91e564736f6c63430008150033

Deployed Bytecode

0x608060405260043610610215575f3560e01c806385e181891161011e578063b7de6d58116100a8578063dd62ed3e1161006d578063dd62ed3e146105d1578063deadf29914610615578063e218fb821461062a578063f2fde38b14610658578063f8b45b0514610677575f80fd5b8063b7de6d581461052c578063c5a17eba1461055a578063c816841b14610588578063d48927dc146105a7578063da7a4609146105bc575f80fd5b80639d64bf93116100ee5780639d64bf93146104b9578063a2369576146104ce578063a6eb4965146104e3578063a9059cbb146104f8578063b57d4faa14610517575f80fd5b806385e181891461045f5780638c0b5e22146104745780638da5cb5b1461048957806395d89b41146104a5575f80fd5b8063313ce5671161019f5780636ed6823c1161016f5780636ed6823c146103b557806370a08231146103ca578063715018a6146103fe578063735de9f714610414578063751039fc1461044b575f80fd5b8063313ce567146103555780633a98ef39146103765780633b8ce5991461038b578063577c5a18146103a0575f80fd5b806318160ddd116101e557806318160ddd146102c3578063183a2bd8146102e15780631da55c1d1461030157806323b872dd1461032157806326a0661614610340575f80fd5b806304866b801461022057806306fdde0314610255578063095ea7b314610276578063164a01f814610295575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b50601e5461024090600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b348015610260575f80fd5b5061026961068c565b60405161024c9190611512565b348015610281575f80fd5b50610240610290366004611574565b61071c565b3480156102a0575f80fd5b506102406102af36600461159e565b601b6020525f908152604090205460ff1681565b3480156102ce575f80fd5b506005545b60405190815260200161024c565b3480156102ec575f80fd5b50601e5461024090600160b81b900460ff1681565b34801561030c575f80fd5b50601e5461024090600160b01b900460ff1681565b34801561032c575f80fd5b5061024061033b3660046115b9565b610732565b34801561034b575f80fd5b506102d3600d5481565b348015610360575f80fd5b5060045460405160ff909116815260200161024c565b348015610381575f80fd5b506102d360145481565b348015610396575f80fd5b506102d360105481565b3480156103ab575f80fd5b506102d3600e5481565b3480156103c0575f80fd5b506102d360135481565b3480156103d5575f80fd5b506102d36103e436600461159e565b6001600160a01b03165f9081526017602052604090205490565b348015610409575f80fd5b5061041261079b565b005b34801561041f575f80fd5b50601d54610433906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b348015610456575f80fd5b50610412610815565b34801561046a575f80fd5b506102d3600a5481565b34801561047f575f80fd5b506102d360065481565b348015610494575f80fd5b505f546001600160a01b0316610433565b3480156104b0575f80fd5b50610269610867565b3480156104c4575f80fd5b506102d360085481565b3480156104d9575f80fd5b506102d3600b5481565b3480156104ee575f80fd5b506102d360115481565b348015610503575f80fd5b50610240610512366004611574565b610876565b348015610522575f80fd5b506102d360125481565b348015610537575f80fd5b5061024061054636600461159e565b601a6020525f908152604090205460ff1681565b348015610565575f80fd5b5061024061057436600461159e565b601c6020525f908152604090205460ff1681565b348015610593575f80fd5b50601e54610433906001600160a01b031681565b3480156105b2575f80fd5b506102d3600c5481565b3480156105c7575f80fd5b506102d3600f5481565b3480156105dc575f80fd5b506102d36105eb3660046115f7565b6001600160a01b039182165f90815260186020908152604080832093909416825291909152205490565b348015610620575f80fd5b506102d360095481565b348015610635575f80fd5b5061024061064436600461159e565b60196020525f908152604090205460ff1681565b348015610663575f80fd5b5061041261067236600461159e565b610882565b348015610682575f80fd5b506102d360075481565b60606002805461069b9061162e565b80601f01602080910402602001604051908101604052809291908181526020018280546106c79061162e565b80156107125780601f106106e957610100808354040283529160200191610712565b820191905f5260205f20905b8154815290600101906020018083116106f557829003601f168201915b5050505050905090565b5f610728338484610969565b5060015b92915050565b5f61073e848484610a8c565b50610790843361078b856040518060600160405280602881526020016117ce602891396001600160a01b038a165f9081526018602090815260408083203384529091529020549190610edf565b610969565b5060015b9392505050565b5f546001600160a01b031633146107cd5760405162461bcd60e51b81526004016107c490611666565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461083e5760405162461bcd60e51b81526004016107c490611666565b600554600655601e805460ff60b81b191690556003600a819055600e819055600c819055601055565b60606003805461069b9061162e565b5f610790338484610a8c565b5f546001600160a01b031633146108ab5760405162461bcd60e51b81526004016107c490611666565b6001600160a01b0381166109105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c4565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109cb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107c4565b6001600160a01b038216610a2c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107c4565b6001600160a01b038381165f8181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610af15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107c4565b6001600160a01b038316610b535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107c4565b601e54600160a01b900460ff1615610b7757610b70848484610f17565b9050610794565b6001600160a01b0384165f908152601b602052604090205460ff16158015610bb757506001600160a01b0383165f908152601b602052604090205460ff16155b15610c1f57600654821115610c1f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107c4565b305f9081526017602052604090205460085481108015908190610c4c5750601e54600160a01b900460ff16155b8015610c6f57506001600160a01b0385165f908152601c602052604090205460ff165b8015610c845750601e54600160a81b900460ff165b8015610ca857506001600160a01b0386165f9081526019602052604090205460ff16155b8015610cb5575060085484115b15610cdb57601e54600160b01b900460ff1615610cd25760085491505b610cdb82610ffa565b6001600160a01b0386165f9081526019602052604081205460ff1680610d1857506001600160a01b0386165f9081526019602052604090205460ff165b610d2c57610d2787878761110b565b610d2e565b845b601e54909150600160b81b900460ff168015610d6257506001600160a01b0386165f908152601a602052604090205460ff16155b15610d9c57600754610d9282610d8c896001600160a01b03165f9081526017602052604090205490565b9061120d565b1115610d9c575f80fd5b601e545f90600160b81b900460ff16158015610dcf57506001600160a01b0388165f9081526019602052604090205460ff165b610dd95785610de3565b610de38683611275565b9050610e498160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060175f8c6001600160a01b03166001600160a01b031681526020019081526020015f2054610edf9092919063ffffffff16565b6001600160a01b03808a165f908152601760205260408082209390935590891681522054610e77908361120d565b6001600160a01b038089165f8181526017602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eca9086815260200190565b60405180910390a36001945050505050610794565b5f8184841115610f025760405162461bcd60e51b81526004016107c49190611512565b505f610f0e84866116af565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601790915291822054610f67918490610edf565b6001600160a01b038086165f908152601760205260408082209390935590851681522054610f95908361120d565b6001600160a01b038085165f8181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fe89086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790556014546011545f9161102f916002916110299182908790611299565b9061131d565b90505f61103c8383611275565b90506110478161135e565b60115447905f906110669061105d90600261131d565b60145490611275565b90505f6110876002611029846110296011548861129990919063ffffffff16565b90505f6110a3836110296013548761129990919063ffffffff16565b90505f6110ba826110b48786611275565b90611275565b905080156110d8576015546110d8906001600160a01b0316826114ae565b81156110f4576016546110f4906001600160a01b0316836114ae565b5050601e805460ff60a01b19169055505050505050565b6001600160a01b0383165f908152601c6020526040812054819060ff161561114e576111476064611029600c548661129990919063ffffffff16565b905061118b565b6001600160a01b0384165f908152601c602052604090205460ff161561118b5761118860646110296010548661129990919063ffffffff16565b90505b801561120357305f908152601760205260409020546111aa908261120d565b305f81815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111fa9085815260200190565b60405180910390a35b610f0e8382611275565b5f8061121983856116c2565b9050838110156107945760405162461bcd60e51b815260206004820152602160248201527f536166654d617468496e744c69623a206164646974696f6e206f766572666c6f6044820152607760f81b60648201526084016107c4565b5f61079483836040518060600160405280602481526020016117aa60249139610edf565b5f825f036112a857505f61072c565b5f6112b383856116d5565b9050826112c085836116ec565b146107945760405162461bcd60e51b815260206004820152602760248201527f536166654d617468496e744c69623a206d756c7469706c69636174696f6e206f604482015266766572666c6f7760c81b60648201526084016107c4565b5f61079483836040518060400160405280602081526020017f536166654d617468496e744c69623a206469766973696f6e206279207a65726f8152506114e6565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113915761139161170b565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140c919061171f565b8160018151811061141f5761141f61170b565b6001600160a01b039283166020918202929092010152601d546114459130911684610969565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061147d9085905f9086903090429060040161173a565b5f604051808303815f87803b158015611494575f80fd5b505af11580156114a6573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156114e1573d5f803e3d5ffd5b505050565b5f81836115065760405162461bcd60e51b81526004016107c49190611512565b505f610f0e84866116ec565b5f6020808352835180828501525f5b8181101561153d57858101830151858201604001528201611521565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611571575f80fd5b50565b5f8060408385031215611585575f80fd5b82356115908161155d565b946020939093013593505050565b5f602082840312156115ae575f80fd5b81356107948161155d565b5f805f606084860312156115cb575f80fd5b83356115d68161155d565b925060208401356115e68161155d565b929592945050506040919091013590565b5f8060408385031215611608575f80fd5b82356116138161155d565b915060208301356116238161155d565b809150509250929050565b600181811c9082168061164257607f821691505b60208210810361166057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561072c5761072c61169b565b8082018082111561072c5761072c61169b565b808202811582820484141761072c5761072c61169b565b5f8261170657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561172f575f80fd5b81516107948161155d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117885784516001600160a01b031683529383019391830191600101611763565b50506001600160a01b0396909616606085015250505060800152939250505056fe536166654d617468496e744c69623a207375627472616374696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e2ebe5a0e93514937c29f741d83be8e69e2067be8f699a78fe159d331dac91e564736f6c63430008150033

Deployed Bytecode Sourcemap

5156:9369:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6590:33;;;;;;;;;;-1:-1:-1;6590:33:0;;;;-1:-1:-1;;;6590:33:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;6590:33:0;;;;;;;;8210:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8596:161::-;;;;;;;;;;-1:-1:-1;8596:161:0;;;;;:::i;:::-;;:::i;6380:48::-;;;;;;;;;;-1:-1:-1;6380:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8487:101;;;;;;;;;;-1:-1:-1;8567:13:0;;8487:101;;;1613:25:1;;;1601:2;1586:18;8487:101:0;1467:177:1;6668:34:0;;;;;;;;;;-1:-1:-1;6668:34:0;;;;-1:-1:-1;;;6668:34:0;;;;;;6630:31;;;;;;;;;;-1:-1:-1;6630:31:0;;;;-1:-1:-1;;;6630:31:0;;;;;;11083:313;;;;;;;;;;-1:-1:-1;11083:313:0;;;;;:::i;:::-;;:::i;5760:29::-;;;;;;;;;;;;;;;;8396:83;;;;;;;;;;-1:-1:-1;8462:9:0;;8396:83;;8462:9;;;;2252:36:1;;2240:2;2225:18;8396:83:0;2110:184:1;6018:31:0;;;;;;;;;;;;;;;;5871:33;;;;;;;;;;;;;;;;5796:31;;;;;;;;;;;;;;;;5983:28;;;;;;;;;;;;;;;;11579:119;;;;;;;;;;-1:-1:-1;11579:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;11672:18:0;11645:7;11672:18;;;:9;:18;;;;;;;11579:119;3477:148;;;;;;;;;;;;;:::i;:::-;;6493:31;;;;;;;;;;-1:-1:-1;6493:31:0;;;;-1:-1:-1;;;;;6493:31:0;;;;;;-1:-1:-1;;;;;2481:32:1;;;2463:51;;2451:2;2436:18;6493:31:0;2299:221:1;13427:229:0;;;;;;;;;;;;;:::i;5646:30::-;;;;;;;;;;;;;;;;5430:51;;;;;;;;;;;;;;;;3252:79;;;;;;;;;;-1:-1:-1;3290:7:0;3317:6;-1:-1:-1;;;;;3317:6:0;3252:79;;8301:87;;;;;;;;;;;;;:::i;5544:57::-;;;;;;;;;;;;;;;;5683:29;;;;;;;;;;;;;;;;5913:27;;;;;;;;;;;;;;;;11404:167;;;;;;;;;;-1:-1:-1;11404:167:0;;;;;:::i;:::-;;:::i;5947:29::-;;;;;;;;;;;;;;;;6321:52;;;;;;;;;;-1:-1:-1;6321:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6435:49;;;;;;;;;;-1:-1:-1;6435:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6531:26;;;;;;;;;;-1:-1:-1;6531:26:0;;;;-1:-1:-1;;;;;6531:26:0;;;5719:32;;;;;;;;;;;;;;;;5834:30;;;;;;;;;;;;;;;;10928:143;;;;;;;;;;-1:-1:-1;10928:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;11036:18:0;;;11009:7;11036:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10928:143;5611:28;;;;;;;;;;;;;;;;6268:46;;;;;;;;;;-1:-1:-1;6268:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3633:244;;;;;;;;;;-1:-1:-1;3633:244:0;;;;;:::i;:::-;;:::i;5488:49::-;;;;;;;;;;;;;;;;8210:83;8247:13;8280:5;8273:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8210:83;:::o;8596:161::-;8671:4;8688:39;2624:10;8711:7;8720:6;8688:8;:39::i;:::-;-1:-1:-1;8745:4:0;8596:161;;;;;:::o;11083:313::-;11181:4;11198:36;11208:6;11216:9;11227:6;11198:9;:36::i;:::-;-1:-1:-1;11245:121:0;11254:6;2624:10;11276:89;11314:6;11276:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11276:19:0;;;;;;:11;:19;;;;;;;;2624:10;11276:33;;;;;;;;;;:37;:89::i;:::-;11245:8;:121::i;:::-;-1:-1:-1;11384:4:0;11083:313;;;;;;:::o;3477:148::-;3386:6;;-1:-1:-1;;;;;3386:6:0;2624:10;3386:22;3378:67;;;;-1:-1:-1;;;3378:67:0;;;;;;;:::i;:::-;;;;;;;;;3584:1:::1;3568:6:::0;;3547:40:::1;::::0;-1:-1:-1;;;;;3568:6:0;;::::1;::::0;3547:40:::1;::::0;3584:1;;3547:40:::1;3615:1;3598:19:::0;;-1:-1:-1;;;;;;3598:19:0::1;::::0;;3477:148::o;13427:229::-;3386:6;;-1:-1:-1;;;;;3386:6:0;2624:10;3386:22;3378:67;;;;-1:-1:-1;;;3378:67:0;;;;;;;:::i;:::-;13495:13:::1;::::0;13481:11:::1;:27:::0;13519:15:::1;:23:::0;;-1:-1:-1;;;;13519:23:0::1;::::0;;13566:1:::1;13553:10;:14:::0;;;13578:11:::1;:15:::0;;;13604:12:::1;:16:::0;;;-1:-1:-1;13631:17:0;13427:229::o;8301:87::-;8340:13;8373:7;8366:14;;;;;:::i;11404:167::-;11482:4;11499:42;2624:10;11523:9;11534:6;11499:9;:42::i;3633:244::-;3386:6;;-1:-1:-1;;;;;3386:6:0;2624:10;3386:22;3378:67;;;;-1:-1:-1;;;3378:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3722:22:0;::::1;3714:73;;;::::0;-1:-1:-1;;;3714:73:0;;4074:2:1;3714:73:0::1;::::0;::::1;4056:21:1::0;4113:2;4093:18;;;4086:30;4152:34;4132:18;;;4125:62;-1:-1:-1;;;4203:18:1;;;4196:36;4249:19;;3714:73:0::1;3872:402:1::0;3714:73:0::1;3824:6;::::0;;3803:38:::1;::::0;-1:-1:-1;;;;;3803:38:0;;::::1;::::0;3824:6;::::1;::::0;3803:38:::1;::::0;::::1;3852:6;:17:::0;;-1:-1:-1;;;;;;3852:17:0::1;-1:-1:-1::0;;;;;3852:17:0;;;::::1;::::0;;;::::1;::::0;;3633:244::o;10575:337::-;-1:-1:-1;;;;;10668:19:0;;10660:68;;;;-1:-1:-1;;;10660:68:0;;4481:2:1;10660:68:0;;;4463:21:1;4520:2;4500:18;;;4493:30;4559:34;4539:18;;;4532:62;-1:-1:-1;;;4610:18:1;;;4603:34;4654:19;;10660:68:0;4279:400:1;10660:68:0;-1:-1:-1;;;;;10747:21:0;;10739:68;;;;-1:-1:-1;;;10739:68:0;;4886:2:1;10739:68:0;;;4868:21:1;4925:2;4905:18;;;4898:30;4964:34;4944:18;;;4937:62;-1:-1:-1;;;5015:18:1;;;5008:32;5057:19;;10739:68:0;4684:398:1;10739:68:0;-1:-1:-1;;;;;10820:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10872:32;;1613:25:1;;;10872:32:0;;1586:18:1;10872:32:0;;;;;;;10575:337;;;:::o;8773:1790::-;8860:4;-1:-1:-1;;;;;8885:20:0;;8877:70;;;;-1:-1:-1;;;8877:70:0;;5289:2:1;8877:70:0;;;5271:21:1;5328:2;5308:18;;;5301:30;5367:34;5347:18;;;5340:62;-1:-1:-1;;;5418:18:1;;;5411:35;5463:19;;8877:70:0;5087:401:1;8877:70:0;-1:-1:-1;;;;;8966:23:0;;8958:71;;;;-1:-1:-1;;;8958:71:0;;5695:2:1;8958:71:0;;;5677:21:1;5734:2;5714:18;;;5707:30;5773:34;5753:18;;;5746:62;-1:-1:-1;;;5824:18:1;;;5817:33;5867:19;;8958:71:0;5493:399:1;8958:71:0;9043:8;;-1:-1:-1;;;9043:8:0;;;;9040:1516;;;9085:44;9103:6;9111:9;9122:6;9085:17;:44::i;:::-;9078:51;;;;9040:1516;-1:-1:-1;;;;;9185:23:0;;;;;;:15;:23;;;;;;;;9184:24;:55;;;;-1:-1:-1;;;;;;9213:26:0;;;;;;:15;:26;;;;;;;;9212:27;9184:55;9181:169;;;9278:11;;9268:6;:21;;9260:74;;;;-1:-1:-1;;;9260:74:0;;6099:2:1;9260:74:0;;;6081:21:1;6138:2;6118:18;;;6111:30;6177:34;6157:18;;;6150:62;-1:-1:-1;;;6228:18:1;;;6221:38;6276:19;;9260:74:0;5897:404:1;9260:74:0;9417:4;9378:18;11672;;;:9;:18;;;;;;9471:22;;9457:36;;;;;;;9526:24;;-1:-1:-1;9542:8:0;;-1:-1:-1;;;9542:8:0;;;;9541:9;9526:24;:55;;;;-1:-1:-1;;;;;;9554:27:0;;;;;;:16;:27;;;;;;;;9526:55;:73;;;;-1:-1:-1;9585:14:0;;-1:-1:-1;;;9585:14:0;;;;9526:73;:99;;;;-1:-1:-1;;;;;;9604:21:0;;;;;;:13;:21;;;;;;;;9603:22;9526:99;:134;;;;;9638:22;;9629:6;:31;9526:134;9522:310;;;9698:11;;-1:-1:-1;;;9698:11:0;;;;9695:72;;;9745:22;;9732:35;;9695:72;9786:26;9801:10;9786:14;:26::i;:::-;-1:-1:-1;;;;;9871:21:0;;9848:19;9871:21;;;:13;:21;;;;;;;;;:49;;-1:-1:-1;;;;;;9896:24:0;;;;;;:13;:24;;;;;;;;9871:49;9870:149;;9976:43;9993:6;10001:9;10012:6;9976:16;:43::i;:::-;9870:149;;;9967:6;9870:149;10039:15;;9848:171;;-1:-1:-1;;;;10039:15:0;;;;:50;;;;-1:-1:-1;;;;;;10059:30:0;;;;;;:19;:30;;;;;;;;10058:31;10039:50;10036:131;;;10157:9;;10116:37;10141:11;10116:20;10126:9;-1:-1:-1;;;;;11672:18:0;11645:7;11672:18;;;:9;:18;;;;;;;11579:119;10116:20;:24;;:37::i;:::-;:50;;10108:59;;;;;;10211:15;;10184:22;;-1:-1:-1;;;10211:15:0;;;;10210:16;:41;;;;-1:-1:-1;;;;;;10230:21:0;;;;;;:13;:21;;;;;;;;10210:41;10209:78;;10281:6;10209:78;;;10255:23;:6;10266:11;10255:10;:23::i;:::-;10184:103;;10322:61;10344:14;10322:61;;;;;;;;;;;;;-1:-1:-1;;;10322:61:0;;;:9;:17;10332:6;-1:-1:-1;;;;;10322:17:0;-1:-1:-1;;;;;10322:17:0;;;;;;;;;;;;;:21;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;10302:17:0;;;;;;;:9;:17;;;;;;:81;;;;10421:20;;;;;;;:37;;10446:11;10421:24;:37::i;:::-;-1:-1:-1;;;;;10398:20:0;;;;;;;:9;:20;;;;;;;:60;;;;10478:40;;;;;;;;;;10506:11;1613:25:1;;1601:2;1586:18;;1467:177;10478:40:0;;;;;;;;10540:4;10533:11;;;;;;;;1367:192;1453:7;1489:12;1481:6;;;;1473:29;;;;-1:-1:-1;;;1473:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1513:9:0;1525:5;1529:1;1525;:5;:::i;:::-;1513:17;1367:192;-1:-1:-1;;;;;1367:192:0:o;11714:333::-;11847:53;;;;;;;;;;;-1:-1:-1;;;11847:53:0;;;;;;;;-1:-1:-1;;;;;11847:17:0;;11810:4;11847:17;;;:9;:17;;;;;;;:53;;11869:6;;11847:21;:53::i;:::-;-1:-1:-1;;;;;11827:17:0;;;;;;;:9;:17;;;;;;:73;;;;11934:20;;;;;;;:32;;11959:6;11934:24;:32::i;:::-;-1:-1:-1;;;;;11911:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11982:35;;;;;;;;;;12010:6;1613:25:1;;1601:2;1586:18;;1467:177;11982:35:0;;;;;;;;-1:-1:-1;12035:4:0;11714:333;;;;;:::o;13668:854::-;6740:8;:15;;-1:-1:-1;;;;6740:15:0;-1:-1:-1;;;6740:15:0;;;:8;13785:11;13771:8:::1;::::0;6740:15;;13759:45:::1;::::0;13802:1:::1;::::0;13759:38:::1;::::0;;;:7;;:11:::1;:21::i;:::-;:25:::0;::::1;:38::i;:45::-;13737:67:::0;-1:-1:-1;13815:20:0::1;13838:24;:7:::0;13737:67;13838:11:::1;:24::i;:::-;13815:47;;13875:30;13892:12;13875:16;:30::i;:::-;14010:8;::::0;13938:21:::1;::::0;13916:19:::1;::::0;13994:32:::1;::::0;14010:15:::1;::::0;14023:1:::1;14010:12;:15::i;:::-;13994:11;::::0;;:15:::1;:32::i;:::-;13972:54;;14047:26;14076:49;14123:1;14076:42;14106:11;14076:25;14092:8;;14076:11;:15;;:25;;;;:::i;:49::-;14047:78;;14136:28;14167:43;14198:11;14167:26;14183:9;;14167:11;:15;;:26;;;;:::i;:43::-;14136:74:::0;-1:-1:-1;14221:26:0::1;14250:61;14136:74:::0;14250:35:::1;:11:::0;14266:18;14250:15:::1;:35::i;:::-;:39:::0;::::1;:61::i;:::-;14221:90:::0;-1:-1:-1;14327:22:0;;14324:87:::1;;14376:14;::::0;14364:47:::1;::::0;-1:-1:-1;;;;;14376:14:0::1;14392:18:::0;14364:11:::1;:47::i;:::-;14427:24:::0;;14424:90:::1;;14478:13;::::0;14466:48:::1;::::0;-1:-1:-1;;;;;14478:13:0::1;14493:20:::0;14466:11:::1;:48::i;:::-;-1:-1:-1::0;;6778:8:0;:16;;-1:-1:-1;;;;6778:16:0;;;-1:-1:-1;;;;;;13668:854:0:o;12055:629::-;-1:-1:-1;;;;;12225:24:0;;12150:7;12225:24;;;:16;:24;;;;;;12150:7;;12225:24;;12222:221;;;12278:33;12307:3;12278:24;12289:12;;12278:6;:10;;:24;;;;:::i;:33::-;12266:45;;12222:221;;;-1:-1:-1;;;;;12341:27:0;;;;;;:16;:27;;;;;;;;12338:105;;;12397:34;12427:3;12397:25;12408:13;;12397:6;:10;;:25;;;;:::i;:34::-;12385:46;;12338:105;12466:13;;12463:173;;12541:4;12523:24;;;;:9;:24;;;;;;:39;;12552:9;12523:28;:39::i;:::-;12514:4;12496:24;;;;:9;:24;;;;;;;:66;;;;12582:42;;-1:-1:-1;;;;;12582:42:0;;;;;;;12614:9;1613:25:1;;1601:2;1586:18;;1467:177;12582:42:0;;;;;;;;12463:173;12655:21;:6;12666:9;12655:10;:21::i;1022:187::-;1080:7;;1112:5;1116:1;1112;:5;:::i;:::-;1100:17;;1141:1;1136;:6;;1128:52;;;;-1:-1:-1;;;1128:52:0;;6903:2:1;1128:52:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:31;7073:19;;1128:52:0;6701:397:1;1217:142:0;1275:7;1302:49;1306:1;1309;1302:49;;;;;;;;;;;;;;;;;:3;:49::i;1567:256::-;1625:7;1649:1;1654;1649:6;1645:47;;-1:-1:-1;1679:1:0;1672:8;;1645:47;1704:9;1716:5;1720:1;1716;:5;:::i;:::-;1704:17;-1:-1:-1;1749:1:0;1740:5;1744:1;1704:17;1740:5;:::i;:::-;:10;1732:62;;;;-1:-1:-1;;;1732:62:0;;7700:2:1;1732:62:0;;;7682:21:1;7739:2;7719:18;;;7712:30;7778:34;7758:18;;;7751:62;-1:-1:-1;;;7829:18:1;;;7822:37;7876:19;;1732:62:0;7498:403:1;1831:138:0;1889:7;1916:45;1920:1;1923;1916:45;;;;;;;;;;;;;;;;;:3;:45::i;12866:549::-;12956:16;;;12970:1;12956:16;;;;;;;;12932:21;;12956:16;;;;;;;;;;-1:-1:-1;12956:16:0;12932:40;;13001:4;12983;12988:1;12983:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12983:23:0;;;:7;;;;;;;;;;:23;;;;13027:13;;:20;;;-1:-1:-1;;;13027:20:0;;;;:13;;;;;:18;;:20;;;;;12983:7;;13027:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13017:4;13022:1;13017:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13017:30:0;;;:7;;;;;;;;;:30;13092:13;;13060:60;;13077:4;;13092:13;13108:11;13060:8;:60::i;:::-;13169:13;;:238;;-1:-1:-1;;;13169:238:0;;-1:-1:-1;;;;;13169:13:0;;;;:64;;:238;;13248:11;;13169:13;;13318:4;;13345;;13381:15;;13169:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12921:494;12866:549;:::o;12696:117::-;12779:26;;-1:-1:-1;;;;;12779:18:0;;;:26;;;;;12798:6;;12779:26;;;;12798:6;12779:18;:26;;;;;;;;;;;;;;;;;;;;;12696:117;;:::o;1977:189::-;2063:7;2098:12;2091:5;2083:28;;;;-1:-1:-1;;;2083:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2122:9:0;2134:5;2138:1;2134;:5;:::i;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;814:70;759:131;:::o;895:315::-;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;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;2733:388::-;2801:6;2809;2862:2;2850:9;2841:7;2837:23;2833:32;2830:52;;;2878:1;2875;2868:12;2830:52;2917:9;2904:23;2936:31;2961:5;2936:31;:::i;:::-;2986:5;-1:-1:-1;3043:2:1;3028:18;;3015:32;3056:33;3015:32;3056:33;:::i;:::-;3108:7;3098:17;;;2733:388;;;;;:::o;3126:380::-;3205:1;3201:12;;;;3248;;;3269:61;;3323:4;3315:6;3311:17;3301:27;;3269:61;3376:2;3368:6;3365:14;3345:18;3342:38;3339:161;;3422:10;3417:3;3413:20;3410:1;3403:31;3457:4;3454:1;3447:15;3485:4;3482:1;3475:15;3339:161;;3126:380;;;:::o;3511:356::-;3713:2;3695:21;;;3732:18;;;3725:30;3791:34;3786:2;3771:18;;3764:62;3858:2;3843:18;;3511:356::o;6306:127::-;6367:10;6362:3;6358:20;6355:1;6348:31;6398:4;6395:1;6388:15;6422:4;6419:1;6412:15;6438:128;6505:9;;;6526:11;;;6523:37;;;6540:18;;:::i;6571:125::-;6636:9;;;6657:10;;;6654:36;;;6670:18;;:::i;7103:168::-;7176:9;;;7207;;7224:15;;;7218:22;;7204:37;7194:71;;7245:18;;:::i;7276:217::-;7316:1;7342;7332:132;;7386:10;7381:3;7377:20;7374:1;7367:31;7421:4;7418:1;7411:15;7449:4;7446:1;7439:15;7332:132;-1:-1:-1;7478:9:1;;7276:217::o;8038:127::-;8099:10;8094:3;8090:20;8087:1;8080:31;8130:4;8127:1;8120:15;8154:4;8151:1;8144:15;8170:251;8240:6;8293:2;8281:9;8272:7;8268:23;8264:32;8261:52;;;8309:1;8306;8299:12;8261:52;8341:9;8335:16;8360:31;8385:5;8360:31;:::i;8426:980::-;8688:4;8736:3;8725:9;8721:19;8767:6;8756:9;8749:25;8793:2;8831:6;8826:2;8815:9;8811:18;8804:34;8874:3;8869:2;8858:9;8854:18;8847:31;8898:6;8933;8927:13;8964:6;8956;8949:22;9002:3;8991:9;8987:19;8980:26;;9041:2;9033:6;9029:15;9015:29;;9062:1;9072:195;9086:6;9083:1;9080:13;9072:195;;;9151:13;;-1:-1:-1;;;;;9147:39:1;9135:52;;9242:15;;;;9207:12;;;;9183:1;9101:9;9072:195;;;-1:-1:-1;;;;;;;9323:32:1;;;;9318:2;9303:18;;9296:60;-1:-1:-1;;;9387:3:1;9372:19;9365:35;9284:3;8426:980;-1:-1:-1;;;8426:980:1:o

Swarm Source

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