ETH Price: $3,914.81 (+5.87%)

Token

ERC-20: Abe (ABE)
 

Overview

Max Total Supply

350,000,000 ABE

Holders

2

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
ABE

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-08
*/

/* 
Website: https://abe.lol
Telegram: https://t.me/ABEportal
X: https://x.com/abethebaldeagle
*/


// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.25;

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

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

contract Ownable is Context {
    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;
    }

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract ABE is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Abe";
    string private constant _symbol = "ABE";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 350000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x93497ab51817878F73639A216e5f0459Adf9599f);
    address payable private _marketingAddress = payable(0xCE396A223871e15F03397A07467F3743791e554D);


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 7000000 * 10**9;
    uint256 public _maxWalletSize = 7000000 * 10**9;
    uint256 public _swapTokensAtAmount = 3500000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading() public onlyOwner {
        require(tradingOpen == false, "Trading already open!");
        tradingOpen = true;
    }
    
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526100176704db7325476300005f19610356565b610022905f19610375565b6006555f600881905560196009819055600a829055600b819055600c829055600d819055600e91909155600f55601180546001600160a01b03199081167393497ab51817878f73639a216e5f0459adf9599f179091556012805490911673ce396a223871e15f03397a07467f3743791e554d1790556014805462ffffff60a01b1916600160b01b1790556618de76816d80006015819055601655660c6f3b40b6c0006017553480156100d2575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801561018b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101af919061039a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021e919061039a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028c919061039a565b601480546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601154851684528284208054821683179055601254909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6704db73254763000060405161034891815260200190565b60405180910390a3506103c7565b5f8261037057634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561039457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156103aa575f80fd5b81516001600160a01b03811681146103c0575f80fd5b9392505050565b611a42806103d45f395ff3fe608060405260043610610198575f3560e01c80637c519ffb116100e7578063a2a957bb11610087578063c492f04611610062578063c492f04614610480578063dd62ed3e1461049f578063ea1644d5146104e3578063f2fde38b14610502575f80fd5b8063a2a957bb1461042e578063a9059cbb1461044d578063c3c8cd801461046c575f80fd5b80638da5cb5b116100c25780638da5cb5b146103b35780638f9a55c0146103cf57806395d89b41146103e457806398a5c3151461040f575f80fd5b80637c519ffb1461035f5780637d1db4a5146103735780637f2feddc14610388575f80fd5b8063313ce567116101525780636fc3eaec1161012d5780636fc3eaec146102f957806370a082311461030d578063715018a61461032c57806374010ece14610340575f80fd5b8063313ce5671461029e57806349bd5a5e146102b95780636d8aa8f8146102d8575f80fd5b806306fdde03146101a3578063095ea7b3146101e05780631694505e1461020f57806318160ddd1461024657806323b872dd1461026a5780632fd689e314610289575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600381526241626560e81b60208201525b6040516101d791906116ac565b60405180910390f35b3480156101eb575f80fd5b506101ff6101fa3660046116f5565b610521565b60405190151581526020016101d7565b34801561021a575f80fd5b5060135461022e906001600160a01b031681565b6040516001600160a01b0390911681526020016101d7565b348015610251575f80fd5b506704db7325476300005b6040519081526020016101d7565b348015610275575f80fd5b506101ff61028436600461171f565b610537565b348015610294575f80fd5b5061025c60175481565b3480156102a9575f80fd5b50604051600981526020016101d7565b3480156102c4575f80fd5b5060145461022e906001600160a01b031681565b3480156102e3575f80fd5b506102f76102f2366004611771565b61059e565b005b348015610304575f80fd5b506102f76105ee565b348015610318575f80fd5b5061025c61032736600461178a565b610638565b348015610337575f80fd5b506102f7610659565b34801561034b575f80fd5b506102f761035a3660046117a5565b6106ca565b34801561036a575f80fd5b506102f76106f8565b34801561037e575f80fd5b5061025c60155481565b348015610393575f80fd5b5061025c6103a236600461178a565b60106020525f908152604090205481565b3480156103be575f80fd5b505f546001600160a01b031661022e565b3480156103da575f80fd5b5061025c60165481565b3480156103ef575f80fd5b5060408051808201909152600381526241424560e81b60208201526101ca565b34801561041a575f80fd5b506102f76104293660046117a5565b610788565b348015610439575f80fd5b506102f76104483660046117bc565b6107b6565b348015610458575f80fd5b506101ff6104673660046116f5565b6107f3565b348015610477575f80fd5b506102f76107ff565b34801561048b575f80fd5b506102f761049a3660046117eb565b610851565b3480156104aa575f80fd5b5061025c6104b9366004611868565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156104ee575f80fd5b506102f76104fd3660046117a5565b6108e4565b34801561050d575f80fd5b506102f761051c36600461178a565b610912565b5f61052d3384846109f9565b5060015b92915050565b5f610543848484610b1c565b610594843361058f856040518060600160405280602881526020016119e5602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610fb4565b6109f9565b5060019392505050565b5f546001600160a01b031633146105d05760405162461bcd60e51b81526004016105c79061189f565b60405180910390fd5b60148054911515600160b01b0260ff60b01b19909216919091179055565b6011546001600160a01b0316336001600160a01b0316148061062357506012546001600160a01b0316336001600160a01b0316145b61062b575f80fd5b4761063581610fec565b50565b6001600160a01b0381165f9081526002602052604081205461053190611027565b5f546001600160a01b031633146106825760405162461bcd60e51b81526004016105c79061189f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106f35760405162461bcd60e51b81526004016105c79061189f565b601555565b5f546001600160a01b031633146107215760405162461bcd60e51b81526004016105c79061189f565b601454600160a01b900460ff16156107735760405162461bcd60e51b815260206004820152601560248201527454726164696e6720616c7265616479206f70656e2160581b60448201526064016105c7565b6014805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146107b15760405162461bcd60e51b81526004016105c79061189f565b601755565b5f546001600160a01b031633146107df5760405162461bcd60e51b81526004016105c79061189f565b600893909355600a91909155600955600b55565b5f61052d338484610b1c565b6011546001600160a01b0316336001600160a01b0316148061083457506012546001600160a01b0316336001600160a01b0316145b61083c575f80fd5b5f61084630610638565b9050610635816110a9565b5f546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105c79061189f565b5f5b828110156108de578160055f86868581811061089a5761089a6118d4565b90506020020160208101906108af919061178a565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161087c565b50505050565b5f546001600160a01b0316331461090d5760405162461bcd60e51b81526004016105c79061189f565b601655565b5f546001600160a01b0316331461093b5760405162461bcd60e51b81526004016105c79061189f565b6001600160a01b0381166109a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a5b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c7565b6001600160a01b038216610abc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c7565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c7565b6001600160a01b038216610be25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c7565b5f8111610c435760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c7565b5f546001600160a01b03848116911614801590610c6d57505f546001600160a01b03838116911614155b15610eb057601454600160a01b900460ff16610d05575f546001600160a01b03848116911614610d055760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105c7565b601554811115610d575760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105c7565b6014546001600160a01b03838116911614610ddc5760165481610d7984610638565b610d8391906118fc565b10610ddc5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105c7565b5f610de630610638565b601754601554919250821015908210610dff5760155491505b808015610e165750601454600160a81b900460ff16155b8015610e3057506014546001600160a01b03868116911614155b8015610e455750601454600160b01b900460ff165b8015610e6957506001600160a01b0385165f9081526005602052604090205460ff16155b8015610e8d57506001600160a01b0384165f9081526005602052604090205460ff16155b15610ead57610e9b826110a9565b478015610eab57610eab47610fec565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610ef057506001600160a01b0383165f9081526005602052604090205460ff165b80610f2257506014546001600160a01b03858116911614801590610f2257506014546001600160a01b03848116911614155b15610f2e57505f610fa8565b6014546001600160a01b038581169116148015610f5957506013546001600160a01b03848116911614155b15610f6b57600854600c55600954600d555b6014546001600160a01b038481169116148015610f9657506013546001600160a01b03858116911614155b15610fa857600a54600c55600b54600d555b6108de84848484611219565b5f8184841115610fd75760405162461bcd60e51b81526004016105c791906116ac565b505f610fe3848661190f565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611023573d5f803e3d5ffd5b5050565b5f60065482111561108d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105c7565b5f611096611247565b90506110a28382611268565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106110ef576110ef6118d4565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611146573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116a9190611922565b8160018151811061117d5761117d6118d4565b6001600160a01b0392831660209182029290920101526013546111a391309116846109f9565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906111db9085905f9086903090429060040161193d565b5f604051808303815f87803b1580156111f2575f80fd5b505af1158015611204573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b80611226576112266112a9565b6112318484846112d6565b806108de576108de600e54600c55600f54600d55565b5f805f6112526113c7565b90925090506112618282611268565b9250505090565b5f6110a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611406565b600c541580156112b95750600d54155b156112c057565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806112e587611432565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506113169087611487565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461134490866114c8565b6001600160a01b0389165f9081526002602052604090205561136581611526565b61136f848361156c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113b491815260200190565b60405180910390a3505050505050505050565b6006545f9081906704db7325476300006113e18282611268565b8210156113fd575050600654926704db73254763000092509050565b90939092509050565b5f81836114265760405162461bcd60e51b81526004016105c791906116ac565b505f610fe384866119ae565b5f805f805f805f805f61144a8a600c54600d54611590565b9250925092505f611459611247565b90505f805f61146a8e8787876115e2565b919e509c509a509598509396509194505050505091939550919395565b5f6110a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fb4565b5f806114d483856118fc565b9050838110156110a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c7565b5f61152f611247565b90505f61153c838361162e565b305f9081526002602052604090205490915061155890826114c8565b305f90815260026020526040902055505050565b6006546115799083611487565b60065560075461158990826114c8565b6007555050565b5f8080806115a960646115a3898961162e565b90611268565b90505f6115bb60646115a38a8961162e565b90505f6115d2826115cc8b86611487565b90611487565b9992985090965090945050505050565b5f8080806115f0888661162e565b90505f6115fd888761162e565b90505f61160a888861162e565b90505f61161b826115cc8686611487565b939b939a50919850919650505050505050565b5f825f0361163d57505f610531565b5f61164883856119cd565b90508261165585836119ae565b146110a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610635575f80fd5b5f8060408385031215611706575f80fd5b8235611711816116e1565b946020939093013593505050565b5f805f60608486031215611731575f80fd5b833561173c816116e1565b9250602084013561174c816116e1565b929592945050506040919091013590565b8035801515811461176c575f80fd5b919050565b5f60208284031215611781575f80fd5b6110a28261175d565b5f6020828403121561179a575f80fd5b81356110a2816116e1565b5f602082840312156117b5575f80fd5b5035919050565b5f805f80608085870312156117cf575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f604084860312156117fd575f80fd5b833567ffffffffffffffff80821115611814575f80fd5b818601915086601f830112611827575f80fd5b813581811115611835575f80fd5b8760208260051b8501011115611849575f80fd5b60209283019550935061185f918601905061175d565b90509250925092565b5f8060408385031215611879575f80fd5b8235611884816116e1565b91506020830135611894816116e1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610531576105316118e8565b81810381811115610531576105316118e8565b5f60208284031215611932575f80fd5b81516110a2816116e1565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561198d5784516001600160a01b031683529383019391830191600101611968565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826119c857634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610531576105316118e856fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220060fd53e60010fd5079e298756094af3948d561be167971e478c67a3e66de48564736f6c63430008190033

Deployed Bytecode

0x608060405260043610610198575f3560e01c80637c519ffb116100e7578063a2a957bb11610087578063c492f04611610062578063c492f04614610480578063dd62ed3e1461049f578063ea1644d5146104e3578063f2fde38b14610502575f80fd5b8063a2a957bb1461042e578063a9059cbb1461044d578063c3c8cd801461046c575f80fd5b80638da5cb5b116100c25780638da5cb5b146103b35780638f9a55c0146103cf57806395d89b41146103e457806398a5c3151461040f575f80fd5b80637c519ffb1461035f5780637d1db4a5146103735780637f2feddc14610388575f80fd5b8063313ce567116101525780636fc3eaec1161012d5780636fc3eaec146102f957806370a082311461030d578063715018a61461032c57806374010ece14610340575f80fd5b8063313ce5671461029e57806349bd5a5e146102b95780636d8aa8f8146102d8575f80fd5b806306fdde03146101a3578063095ea7b3146101e05780631694505e1461020f57806318160ddd1461024657806323b872dd1461026a5780632fd689e314610289575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600381526241626560e81b60208201525b6040516101d791906116ac565b60405180910390f35b3480156101eb575f80fd5b506101ff6101fa3660046116f5565b610521565b60405190151581526020016101d7565b34801561021a575f80fd5b5060135461022e906001600160a01b031681565b6040516001600160a01b0390911681526020016101d7565b348015610251575f80fd5b506704db7325476300005b6040519081526020016101d7565b348015610275575f80fd5b506101ff61028436600461171f565b610537565b348015610294575f80fd5b5061025c60175481565b3480156102a9575f80fd5b50604051600981526020016101d7565b3480156102c4575f80fd5b5060145461022e906001600160a01b031681565b3480156102e3575f80fd5b506102f76102f2366004611771565b61059e565b005b348015610304575f80fd5b506102f76105ee565b348015610318575f80fd5b5061025c61032736600461178a565b610638565b348015610337575f80fd5b506102f7610659565b34801561034b575f80fd5b506102f761035a3660046117a5565b6106ca565b34801561036a575f80fd5b506102f76106f8565b34801561037e575f80fd5b5061025c60155481565b348015610393575f80fd5b5061025c6103a236600461178a565b60106020525f908152604090205481565b3480156103be575f80fd5b505f546001600160a01b031661022e565b3480156103da575f80fd5b5061025c60165481565b3480156103ef575f80fd5b5060408051808201909152600381526241424560e81b60208201526101ca565b34801561041a575f80fd5b506102f76104293660046117a5565b610788565b348015610439575f80fd5b506102f76104483660046117bc565b6107b6565b348015610458575f80fd5b506101ff6104673660046116f5565b6107f3565b348015610477575f80fd5b506102f76107ff565b34801561048b575f80fd5b506102f761049a3660046117eb565b610851565b3480156104aa575f80fd5b5061025c6104b9366004611868565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156104ee575f80fd5b506102f76104fd3660046117a5565b6108e4565b34801561050d575f80fd5b506102f761051c36600461178a565b610912565b5f61052d3384846109f9565b5060015b92915050565b5f610543848484610b1c565b610594843361058f856040518060600160405280602881526020016119e5602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610fb4565b6109f9565b5060019392505050565b5f546001600160a01b031633146105d05760405162461bcd60e51b81526004016105c79061189f565b60405180910390fd5b60148054911515600160b01b0260ff60b01b19909216919091179055565b6011546001600160a01b0316336001600160a01b0316148061062357506012546001600160a01b0316336001600160a01b0316145b61062b575f80fd5b4761063581610fec565b50565b6001600160a01b0381165f9081526002602052604081205461053190611027565b5f546001600160a01b031633146106825760405162461bcd60e51b81526004016105c79061189f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106f35760405162461bcd60e51b81526004016105c79061189f565b601555565b5f546001600160a01b031633146107215760405162461bcd60e51b81526004016105c79061189f565b601454600160a01b900460ff16156107735760405162461bcd60e51b815260206004820152601560248201527454726164696e6720616c7265616479206f70656e2160581b60448201526064016105c7565b6014805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146107b15760405162461bcd60e51b81526004016105c79061189f565b601755565b5f546001600160a01b031633146107df5760405162461bcd60e51b81526004016105c79061189f565b600893909355600a91909155600955600b55565b5f61052d338484610b1c565b6011546001600160a01b0316336001600160a01b0316148061083457506012546001600160a01b0316336001600160a01b0316145b61083c575f80fd5b5f61084630610638565b9050610635816110a9565b5f546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105c79061189f565b5f5b828110156108de578160055f86868581811061089a5761089a6118d4565b90506020020160208101906108af919061178a565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161087c565b50505050565b5f546001600160a01b0316331461090d5760405162461bcd60e51b81526004016105c79061189f565b601655565b5f546001600160a01b0316331461093b5760405162461bcd60e51b81526004016105c79061189f565b6001600160a01b0381166109a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a5b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c7565b6001600160a01b038216610abc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c7565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c7565b6001600160a01b038216610be25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c7565b5f8111610c435760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c7565b5f546001600160a01b03848116911614801590610c6d57505f546001600160a01b03838116911614155b15610eb057601454600160a01b900460ff16610d05575f546001600160a01b03848116911614610d055760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105c7565b601554811115610d575760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105c7565b6014546001600160a01b03838116911614610ddc5760165481610d7984610638565b610d8391906118fc565b10610ddc5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105c7565b5f610de630610638565b601754601554919250821015908210610dff5760155491505b808015610e165750601454600160a81b900460ff16155b8015610e3057506014546001600160a01b03868116911614155b8015610e455750601454600160b01b900460ff165b8015610e6957506001600160a01b0385165f9081526005602052604090205460ff16155b8015610e8d57506001600160a01b0384165f9081526005602052604090205460ff16155b15610ead57610e9b826110a9565b478015610eab57610eab47610fec565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610ef057506001600160a01b0383165f9081526005602052604090205460ff165b80610f2257506014546001600160a01b03858116911614801590610f2257506014546001600160a01b03848116911614155b15610f2e57505f610fa8565b6014546001600160a01b038581169116148015610f5957506013546001600160a01b03848116911614155b15610f6b57600854600c55600954600d555b6014546001600160a01b038481169116148015610f9657506013546001600160a01b03858116911614155b15610fa857600a54600c55600b54600d555b6108de84848484611219565b5f8184841115610fd75760405162461bcd60e51b81526004016105c791906116ac565b505f610fe3848661190f565b95945050505050565b6012546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611023573d5f803e3d5ffd5b5050565b5f60065482111561108d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105c7565b5f611096611247565b90506110a28382611268565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106110ef576110ef6118d4565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611146573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116a9190611922565b8160018151811061117d5761117d6118d4565b6001600160a01b0392831660209182029290920101526013546111a391309116846109f9565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906111db9085905f9086903090429060040161193d565b5f604051808303815f87803b1580156111f2575f80fd5b505af1158015611204573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b80611226576112266112a9565b6112318484846112d6565b806108de576108de600e54600c55600f54600d55565b5f805f6112526113c7565b90925090506112618282611268565b9250505090565b5f6110a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611406565b600c541580156112b95750600d54155b156112c057565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806112e587611432565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506113169087611487565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461134490866114c8565b6001600160a01b0389165f9081526002602052604090205561136581611526565b61136f848361156c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113b491815260200190565b60405180910390a3505050505050505050565b6006545f9081906704db7325476300006113e18282611268565b8210156113fd575050600654926704db73254763000092509050565b90939092509050565b5f81836114265760405162461bcd60e51b81526004016105c791906116ac565b505f610fe384866119ae565b5f805f805f805f805f61144a8a600c54600d54611590565b9250925092505f611459611247565b90505f805f61146a8e8787876115e2565b919e509c509a509598509396509194505050505091939550919395565b5f6110a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fb4565b5f806114d483856118fc565b9050838110156110a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c7565b5f61152f611247565b90505f61153c838361162e565b305f9081526002602052604090205490915061155890826114c8565b305f90815260026020526040902055505050565b6006546115799083611487565b60065560075461158990826114c8565b6007555050565b5f8080806115a960646115a3898961162e565b90611268565b90505f6115bb60646115a38a8961162e565b90505f6115d2826115cc8b86611487565b90611487565b9992985090965090945050505050565b5f8080806115f0888661162e565b90505f6115fd888761162e565b90505f61160a888861162e565b90505f61161b826115cc8686611487565b939b939a50919850919650505050505050565b5f825f0361163d57505f610531565b5f61164883856119cd565b90508261165585836119ae565b146110a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610635575f80fd5b5f8060408385031215611706575f80fd5b8235611711816116e1565b946020939093013593505050565b5f805f60608486031215611731575f80fd5b833561173c816116e1565b9250602084013561174c816116e1565b929592945050506040919091013590565b8035801515811461176c575f80fd5b919050565b5f60208284031215611781575f80fd5b6110a28261175d565b5f6020828403121561179a575f80fd5b81356110a2816116e1565b5f602082840312156117b5575f80fd5b5035919050565b5f805f80608085870312156117cf575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f604084860312156117fd575f80fd5b833567ffffffffffffffff80821115611814575f80fd5b818601915086601f830112611827575f80fd5b813581811115611835575f80fd5b8760208260051b8501011115611849575f80fd5b60209283019550935061185f918601905061175d565b90509250925092565b5f8060408385031215611879575f80fd5b8235611884816116e1565b91506020830135611894816116e1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610531576105316118e8565b81810381811115610531576105316118e8565b5f60208284031215611932575f80fd5b81516110a2816116e1565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561198d5784516001600160a01b031683529383019391830191600101611968565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826119c857634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610531576105316118e856fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220060fd53e60010fd5079e298756094af3948d561be167971e478c67a3e66de48564736f6c63430008190033

Deployed Bytecode Sourcemap

4177:13132:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6630:83;;;;;;;;;;-1:-1:-1;6700:5:0;;;;;;;;;;;;-1:-1:-1;;;6700:5:0;;;;6630:83;;;;;;;:::i;:::-;;;;;;;;7555:193;;;;;;;;;;-1:-1:-1;7555:193:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;7555:193:0;893:187:1;5472:41:0;;;;;;;;;;-1:-1:-1;5472:41:0;;;;-1:-1:-1;;;;;5472:41:0;;;;;;-1:-1:-1;;;;;1275:32:1;;;1257:51;;1245:2;1230:18;5472:41:0;1085:229:1;6907:95:0;;;;;;;;;;-1:-1:-1;4713:17:0;6907:95;;;1465:25:1;;;1453:2;1438:18;6907:95:0;1319:177:1;7756:446:0;;;;;;;;;;-1:-1:-1;7756:446:0;;;;;:::i;:::-;;:::i;5776:52::-;;;;;;;;;;;;;;;;6816:83;;;;;;;;;;-1:-1:-1;6816:83:0;;4387:1;2104:36:1;;2092:2;2077:18;6816:83:0;1962:184:1;5520:28:0;;;;;;;;;;-1:-1:-1;5520:28:0;;;;-1:-1:-1;;;;;5520:28:0;;;16691:101;;;;;;;;;;-1:-1:-1;16691:101:0;;;;;:::i;:::-;;:::i;:::-;;12516:235;;;;;;;;;;;;;:::i;7010:138::-;;;;;;;;;;-1:-1:-1;7010:138:0;;;;;:::i;:::-;;:::i;1664:148::-;;;;;;;;;;;;;:::i;16831:108::-;;;;;;;;;;-1:-1:-1;16831:108:0;;;;;:::i;:::-;;:::i;12119:141::-;;;;;;;;;;;;;:::i;5670:45::-;;;;;;;;;;;;;;;;5212:43;;;;;;;;;;-1:-1:-1;5212:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1450:79;;;;;;;;;;-1:-1:-1;1488:7:0;1515:6;-1:-1:-1;;;;;1515:6:0;1450:79;;5722:47;;;;;;;;;;;;;;;;6721:87;;;;;;;;;;-1:-1:-1;6793:7:0;;;;;;;;;;;;-1:-1:-1;;;6793:7:0;;;;6721:87;;16500:139;;;;;;;;;;-1:-1:-1;16500:139:0;;;;;:::i;:::-;;:::i;16157:291::-;;;;;;;;;;-1:-1:-1;16157:291:0;;;;;:::i;:::-;;:::i;7156:199::-;;;;;;;;;;-1:-1:-1;7156:199:0;;;;;:::i;:::-;;:::i;12272:236::-;;;;;;;;;;;;;:::i;17070:234::-;;;;;;;;;;-1:-1:-1;17070:234:0;;;;;:::i;:::-;;:::i;7363:184::-;;;;;;;;;;-1:-1:-1;7363:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7512:18:0;;;7480:7;7512:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7363:184;16947:115;;;;;;;;;;-1:-1:-1;16947:115:0;;;;;:::i;:::-;;:::i;1820:244::-;;;;;;;;;;-1:-1:-1;1820:244:0;;;;;:::i;:::-;;:::i;7555:193::-;7657:4;7679:39;289:10;7702:7;7711:6;7679:8;:39::i;:::-;-1:-1:-1;7736:4:0;7555:193;;;;;:::o;7756:446::-;7888:4;7905:36;7915:6;7923:9;7934:6;7905:9;:36::i;:::-;7952:220;7975:6;289:10;8023:138;8079:6;8023:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8023:19:0;;;;;;:11;:19;;;;;;;;289:10;8023:33;;;;;;;;;;:37;:138::i;:::-;7952:8;:220::i;:::-;-1:-1:-1;8190:4:0;7756:446;;;;;:::o;16691:101::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;;;;;;;;;16758:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16758:26:0::1;-1:-1:-1::0;;;;16758:26:0;;::::1;::::0;;;::::1;::::0;;16691:101::o;12516:235::-;12582:19;;-1:-1:-1;;;;;12582:19:0;289:10;-1:-1:-1;;;;;12566:35:0;;:72;;;-1:-1:-1;12621:17:0;;-1:-1:-1;;;;;12621:17:0;289:10;-1:-1:-1;;;;;12605:33:0;;12566:72;12558:81;;;;;;12679:21;12711:32;12679:21;12711:12;:32::i;:::-;12547:204;12516:235::o;7010:138::-;-1:-1:-1;;;;;7123:16:0;;7076:7;7123:16;;;:7;:16;;;;;;7103:37;;:19;:37::i;1664:148::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;1771:1:::1;1755:6:::0;;1734:40:::1;::::0;-1:-1:-1;;;;;1755:6:0;;::::1;::::0;1734:40:::1;::::0;1771:1;;1734:40:::1;1802:1;1785:19:::0;;-1:-1:-1;;;;;;1785:19:0::1;::::0;;1664:148::o;16831:108::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;16905:12:::1;:26:::0;16831:108::o;12119:141::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;12177:11:::1;::::0;-1:-1:-1;;;12177:11:0;::::1;;;:20;12169:54;;;::::0;-1:-1:-1;;;12169:54:0;;5186:2:1;12169:54:0::1;::::0;::::1;5168:21:1::0;5225:2;5205:18;;;5198:30;-1:-1:-1;;;5244:18:1;;;5237:51;5305:18;;12169:54:0::1;4984:345:1::0;12169:54:0::1;12234:11;:18:::0;;-1:-1:-1;;;;12234:18:0::1;-1:-1:-1::0;;;12234:18:0::1;::::0;;12119:141::o;16500:139::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;16591:19:::1;:40:::0;16500:139::o;16157:291::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;16291:14:::1;:30:::0;;;;16332:15:::1;:32:::0;;;;16375:12:::1;:26:::0;16412:13:::1;:28:::0;16157:291::o;7156:199::-;7261:4;7283:42;289:10;7307:9;7318:6;7283:9;:42::i;12272:236::-;12338:19;;-1:-1:-1;;;;;12338:19:0;289:10;-1:-1:-1;;;;;12322:35:0;;:72;;;-1:-1:-1;12377:17:0;;-1:-1:-1;;;;;12377:17:0;289:10;-1:-1:-1;;;;;12361:33:0;;12322:72;12314:81;;;;;;12406:23;12432:24;12450:4;12432:9;:24::i;:::-;12406:50;;12467:33;12484:15;12467:16;:33::i;17070:234::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;17187:9:::1;17183:114;17202:19:::0;;::::1;17183:114;;;17277:8;17243:18;:31;17262:8;;17271:1;17262:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17243:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17243:31:0;:42;;-1:-1:-1;;17243:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17223:3:0::1;17183:114;;;;17070:234:::0;;;:::o;16947:115::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;17024:14:::1;:30:::0;16947:115::o;1820:244::-;1577:6;;-1:-1:-1;;;;;1577:6:0;289:10;1577:22;1569:67;;;;-1:-1:-1;;;1569:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1909:22:0;::::1;1901:73;;;::::0;-1:-1:-1;;;1901:73:0;;5668:2:1;1901:73:0::1;::::0;::::1;5650:21:1::0;5707:2;5687:18;;;5680:30;5746:34;5726:18;;;5719:62;-1:-1:-1;;;5797:18:1;;;5790:36;5843:19;;1901:73:0::1;5466:402:1::0;1901:73:0::1;2011:6;::::0;;1990:38:::1;::::0;-1:-1:-1;;;;;1990:38:0;;::::1;::::0;2011:6;::::1;::::0;1990:38:::1;::::0;::::1;2039:6;:17:::0;;-1:-1:-1;;;;;;2039:17:0::1;-1:-1:-1::0;;;;;2039:17:0;;;::::1;::::0;;;::::1;::::0;;1820:244::o;8893:369::-;-1:-1:-1;;;;;9020:19:0;;9012:68;;;;-1:-1:-1;;;9012:68:0;;6075:2:1;9012:68:0;;;6057:21:1;6114:2;6094:18;;;6087:30;6153:34;6133:18;;;6126:62;-1:-1:-1;;;6204:18:1;;;6197:34;6248:19;;9012:68:0;5873:400:1;9012:68:0;-1:-1:-1;;;;;9099:21:0;;9091:68;;;;-1:-1:-1;;;9091:68:0;;6480:2:1;9091:68:0;;;6462:21:1;6519:2;6499:18;;;6492:30;6558:34;6538:18;;;6531:62;-1:-1:-1;;;6609:18:1;;;6602:32;6651:19;;9091:68:0;6278:398:1;9091:68:0;-1:-1:-1;;;;;9170:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9222:32;;1465:25:1;;;9222:32:0;;1438:18:1;9222:32:0;;;;;;;8893:369;;;:::o;9270:2243::-;-1:-1:-1;;;;;9392:18:0;;9384:68;;;;-1:-1:-1;;;9384:68:0;;6883:2:1;9384:68:0;;;6865:21:1;6922:2;6902:18;;;6895:30;6961:34;6941:18;;;6934:62;-1:-1:-1;;;7012:18:1;;;7005:35;7057:19;;9384:68:0;6681:401:1;9384:68:0;-1:-1:-1;;;;;9471:16:0;;9463:64;;;;-1:-1:-1;;;9463:64:0;;7289:2:1;9463:64:0;;;7271:21:1;7328:2;7308:18;;;7301:30;7367:34;7347:18;;;7340:62;-1:-1:-1;;;7418:18:1;;;7411:33;7461:19;;9463:64:0;7087:399:1;9463:64:0;9555:1;9546:6;:10;9538:64;;;;-1:-1:-1;;;9538:64:0;;7693:2:1;9538:64:0;;;7675:21:1;7732:2;7712:18;;;7705:30;7771:34;7751:18;;;7744:62;-1:-1:-1;;;7822:18:1;;;7815:39;7871:19;;9538:64:0;7491:405:1;9538:64:0;1488:7;1515:6;-1:-1:-1;;;;;9619:15:0;;;1515:6;;9619:15;;;;:32;;-1:-1:-1;1488:7:0;1515:6;-1:-1:-1;;;;;9638:13:0;;;1515:6;;9638:13;;9619:32;9615:1172;;;9708:11;;-1:-1:-1;;;9708:11:0;;;;9703:144;;1488:7;1515:6;-1:-1:-1;;;;;9748:15:0;;;1515:6;;9748:15;9740:91;;;;-1:-1:-1;;;9740:91:0;;8103:2:1;9740:91:0;;;8085:21:1;8142:2;8122:18;;;8115:30;8181:34;8161:18;;;8154:62;8252:33;8232:18;;;8225:61;8303:19;;9740:91:0;7901:427:1;9740:91:0;9881:12;;9871:6;:22;;9863:63;;;;-1:-1:-1;;;9863:63:0;;8535:2:1;9863:63:0;;;8517:21:1;8574:2;8554:18;;;8547:30;8613;8593:18;;;8586:58;8661:18;;9863:63:0;8333:352:1;9863:63:0;9952:13;;-1:-1:-1;;;;;9946:19:0;;;9952:13;;9946:19;9943:146;;10019:14;;10010:6;9994:13;10004:2;9994:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9986:87;;;;-1:-1:-1;;;9986:87:0;;9154:2:1;9986:87:0;;;9136:21:1;9193:2;9173:18;;;9166:30;9232:34;9212:18;;;9205:62;-1:-1:-1;;;9283:18:1;;;9276:33;9326:19;;9986:87:0;8952:399:1;9986:87:0;10105:28;10136:24;10154:4;10136:9;:24::i;:::-;10214:19;;10277:12;;10105:55;;-1:-1:-1;10190:43:0;;;;10253:36;;10250:124;;10346:12;;10323:35;;10250:124;10394:7;:18;;;;-1:-1:-1;10406:6:0;;-1:-1:-1;;;10406:6:0;;;;10405:7;10394:18;:43;;;;-1:-1:-1;10424:13:0;;-1:-1:-1;;;;;10416:21:0;;;10424:13;;10416:21;;10394:43;:58;;;;-1:-1:-1;10441:11:0;;-1:-1:-1;;;10441:11:0;;;;10394:58;:87;;;;-1:-1:-1;;;;;;10457:24:0;;;;;;:18;:24;;;;;;;;10456:25;10394:87;:114;;;;-1:-1:-1;;;;;;10486:22:0;;;;;;:18;:22;;;;;;;;10485:23;10394:114;10390:386;;;10529:38;10546:20;10529:16;:38::i;:::-;10615:21;10659:22;;10655:106;;10706:35;10719:21;10706:12;:35::i;:::-;10510:266;10390:386;9653:1134;;9615:1172;-1:-1:-1;;;;;10863:24:0;;10799:12;10863:24;;;:18;:24;;;;;;10814:4;;10863:24;;;:50;;-1:-1:-1;;;;;;10891:22:0;;;;;;:18;:22;;;;;;;;10863:50;10862:102;;;-1:-1:-1;10927:13:0;;-1:-1:-1;;;;;10919:21:0;;;10927:13;;10919:21;;;;:44;;-1:-1:-1;10950:13:0;;-1:-1:-1;;;;;10944:19:0;;;10950:13;;10944:19;;10919:44;10858:594;;;-1:-1:-1;10991:5:0;10858:594;;;11074:13;;-1:-1:-1;;;;;11066:21:0;;;11074:13;;11066:21;:55;;;;-1:-1:-1;11105:15:0;;-1:-1:-1;;;;;11091:30:0;;;11105:15;;11091:30;;11066:55;11063:162;;;11154:14;;11142:9;:26;11197:12;;11187:7;:22;11063:162;11284:13;;-1:-1:-1;;;;;11278:19:0;;;11284:13;;11278:19;:55;;;;-1:-1:-1;11317:15:0;;-1:-1:-1;;;;;11301:32:0;;;11317:15;;11301:32;;11278:55;11274:165;;;11366:15;;11354:9;:27;11410:13;;11400:7;:23;11274:165;11464:41;11479:4;11485:2;11489:6;11497:7;11464:14;:41::i;2428:224::-;2548:7;2584:12;2576:6;;;;2568:29;;;;-1:-1:-1;;;2568:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2608:9:0;2620:5;2624:1;2620;:5;:::i;:::-;2608:17;2428:224;-1:-1:-1;;;;;2428:224:0:o;12012:99::-;12069:17;;:34;;-1:-1:-1;;;;;12069:17:0;;;;:34;;;;;12096:6;;12069:17;:34;:17;:34;12096:6;12069:17;:34;;;;;;;;;;;;;;;;;;;;;12012:99;:::o;8210:323::-;8305:7;8363;;8352;:18;;8330:110;;;;-1:-1:-1;;;8330:110:0;;9691:2:1;8330:110:0;;;9673:21:1;9730:2;9710:18;;;9703:30;9769:34;9749:18;;;9742:62;-1:-1:-1;;;9820:18:1;;;9813:40;9870:19;;8330:110:0;9489:406:1;8330:110:0;8451:19;8473:10;:8;:10::i;:::-;8451:32;-1:-1:-1;8501:24:0;:7;8451:32;8501:11;:24::i;:::-;8494:31;8210:323;-1:-1:-1;;;8210:323:0:o;11521:483::-;5922:6;:13;;-1:-1:-1;;;;5922:13:0;-1:-1:-1;;;5922:13:0;;;11623:16:::1;::::0;;11637:1:::1;11623:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11623:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11623:16:0::1;11599:40;;11668:4;11650;11655:1;11650:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11650:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11694:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11694:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11650:7;;11694:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11684:4;11689:1;11684:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11684:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11759:15:::1;::::0;11727:62:::1;::::0;11744:4:::1;::::0;11759:15:::1;11777:11:::0;11727:8:::1;:62::i;:::-;11800:15;::::0;:196:::1;::::0;-1:-1:-1;;;11800:196:0;;-1:-1:-1;;;;;11800:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11881:11;;11800:15:::1;::::0;11923:4;;11950::::1;::::0;11970:15:::1;::::0;11800:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5958:6:0;:14;;-1:-1:-1;;;;5958:14:0;;;-1:-1:-1;;;;11521:483:0:o;12759:282::-;12915:7;12910:28;;12924:14;:12;:14::i;:::-;12949:44;12967:6;12975:9;12986:6;12949:17;:44::i;:::-;13009:7;13004:29;;13018:15;8824:17;;8812:9;:29;8862:15;;8852:7;:25;8768:117;15720:164;15762:7;15783:15;15800;15819:19;:17;:19::i;:::-;15782:56;;-1:-1:-1;15782:56:0;-1:-1:-1;15856:20:0;15782:56;;15856:11;:20::i;:::-;15849:27;;;;15720:164;:::o;2914:132::-;2972:7;2999:39;3003:1;3006;2999:39;;;;;;;;;;;;;;;;;:3;:39::i;8541:219::-;8588:9;;:14;:30;;;;-1:-1:-1;8606:7:0;;:12;8588:30;8584:43;;;8541:219::o;8584:43::-;8659:9;;;8639:17;:29;8697:7;;;8679:15;:25;-1:-1:-1;8717:13:0;;;;8741:11;8541:219::o;13049:610::-;13196:15;13226:23;13264:12;13291:23;13329:12;13356:13;13383:19;13394:7;13383:10;:19::i;:::-;-1:-1:-1;;;;;13431:15:0;;;;;;:7;:15;;;;;;13181:221;;-1:-1:-1;13181:221:0;;-1:-1:-1;13181:221:0;;-1:-1:-1;13181:221:0;-1:-1:-1;13181:221:0;-1:-1:-1;13181:221:0;-1:-1:-1;13431:28:0;;13181:221;13431:19;:28::i;:::-;-1:-1:-1;;;;;13413:15:0;;;;;;;:7;:15;;;;;;:46;;;;13491:18;;;;;;;:39;;13514:15;13491:22;:39::i;:::-;-1:-1:-1;;;;;13470:18:0;;;;;;:7;:18;;;;;:60;13541:16;13551:5;13541:9;:16::i;:::-;13568:23;13580:4;13586;13568:11;:23::i;:::-;13624:9;-1:-1:-1;;;;;13607:44:0;13616:6;-1:-1:-1;;;;;13607:44:0;;13635:15;13607:44;;;;1465:25:1;;1453:2;1438:18;;1319:177;13607:44:0;;;;;;;;13170:489;;;;;;13049:610;;;:::o;15892:257::-;15990:7;;15943;;;;4713:17;16058:20;15990:7;4713:17;16058:11;:20::i;:::-;16048:7;:30;16044:61;;;-1:-1:-1;;16088:7:0;;;4713:17;;-1:-1:-1;15892:257:0;-1:-1:-1;15892:257:0:o;16044:61::-;16124:7;;16133;;-1:-1:-1;15892:257:0;-1:-1:-1;15892:257:0:o;3054:223::-;3174:7;3209:12;3202:5;3194:28;;;;-1:-1:-1;;;3194:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3233:9:0;3245:5;3249:1;3245;:5;:::i;14078:615::-;14178:7;14200;14222;14244;14266;14288;14324:23;14349:12;14363:13;14393:40;14405:7;14414:9;;14425:7;;14393:11;:40::i;:::-;14323:110;;;;;;14444:19;14466:10;:8;:10::i;:::-;14444:32;;14488:15;14505:23;14530:12;14559:46;14571:7;14580:4;14586:5;14593:11;14559;:46::i;:::-;14487:118;;-1:-1:-1;14487:118:0;-1:-1:-1;14487:118:0;-1:-1:-1;14656:15:0;;-1:-1:-1;14673:4:0;;-1:-1:-1;14679:5:0;;-1:-1:-1;;;;;14078:615:0;;;;;;;:::o;2284:136::-;2342:7;2369:43;2373:1;2376;2369:43;;;;;;;;;;;;;;;;;:3;:43::i;2097:179::-;2155:7;;2187:5;2191:1;2187;:5;:::i;:::-;2175:17;;2216:1;2211;:6;;2203:46;;;;-1:-1:-1;;;2203:46:0;;11697:2:1;2203:46:0;;;11679:21:1;11736:2;11716:18;;;11709:30;11775:29;11755:18;;;11748:57;11822:18;;2203:46:0;11495:351:1;13667:211:0;13720:19;13742:10;:8;:10::i;:::-;13720:32;-1:-1:-1;13763:13:0;13779:22;:5;13720:32;13779:9;:22::i;:::-;13853:4;13837:22;;;;:7;:22;;;;;;13763:38;;-1:-1:-1;13837:33:0;;13763:38;13837:26;:33::i;:::-;13828:4;13812:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13667:211:0:o;13886:147::-;13964:7;;:17;;13976:4;13964:11;:17::i;:::-;13954:7;:27;14005:10;;:20;;14020:4;14005:14;:20::i;:::-;13992:10;:33;-1:-1:-1;;13886:147:0:o;14701:469::-;14870:7;;;;14964:30;14990:3;14964:21;:7;14976:8;14964:11;:21::i;:::-;:25;;:30::i;:::-;14949:45;-1:-1:-1;15005:13:0;15021:28;15045:3;15021:19;:7;15033:6;15021:11;:19::i;:28::-;15005:44;-1:-1:-1;15060:23:0;15086:28;15005:44;15086:17;:7;15098:4;15086:11;:17::i;:::-;:21;;:28::i;:::-;15060:54;15150:4;;-1:-1:-1;15156:5:0;;-1:-1:-1;14701:469:0;;-1:-1:-1;;;;;14701:469:0:o;15178:534::-;15372:7;;;;15469:24;:7;15481:11;15469;:24::i;:::-;15451:42;-1:-1:-1;15504:12:0;15519:21;:4;15528:11;15519:8;:21::i;:::-;15504:36;-1:-1:-1;15551:13:0;15567:22;:5;15577:11;15567:9;:22::i;:::-;15551:38;-1:-1:-1;15600:23:0;15626:28;15551:38;15626:17;:7;15638:4;15626:11;:17::i;:28::-;15673:7;;;;-1:-1:-1;15699:4:0;;-1:-1:-1;15178:534:0;;-1:-1:-1;;;;;;;15178:534:0:o;2660:246::-;2718:7;2742:1;2747;2742:6;2738:47;;-1:-1:-1;2772:1:0;2765:8;;2738:47;2795:9;2807:5;2811:1;2807;:5;:::i;:::-;2795:17;-1:-1:-1;2840:1:0;2831:5;2835:1;2795:17;2831:5;:::i;:::-;:10;2823:56;;;;-1:-1:-1;;;2823:56:0;;12226:2:1;2823:56:0;;;12208:21:1;12265:2;12245:18;;;12238:30;12304:34;12284:18;;;12277:62;-1:-1:-1;;;12355:18:1;;;12348:31;12396:19;;2823:56:0;12024:397:1;14:418;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1501:456::-;1578:6;1586;1594;1647:2;1635:9;1626:7;1622:23;1618:32;1615:52;;;1663:1;1660;1653:12;1615:52;1702:9;1689:23;1721:31;1746:5;1721:31;:::i;:::-;1771:5;-1:-1:-1;1828:2:1;1813:18;;1800:32;1841:33;1800:32;1841:33;:::i;:::-;1501:456;;1893:7;;-1:-1:-1;;;1947:2:1;1932:18;;;;1919:32;;1501:456::o;2359:160::-;2424:20;;2480:13;;2473:21;2463:32;;2453:60;;2509:1;2506;2499:12;2453:60;2359:160;;;:::o;2524:180::-;2580:6;2633:2;2621:9;2612:7;2608:23;2604:32;2601:52;;;2649:1;2646;2639:12;2601:52;2672:26;2688:9;2672:26;:::i;2709:247::-;2768:6;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;2961:180::-;3020:6;3073:2;3061:9;3052:7;3048:23;3044:32;3041:52;;;3089:1;3086;3079:12;3041:52;-1:-1:-1;3112:23:1;;2961:180;-1:-1:-1;2961:180:1:o;3146:385::-;3232:6;3240;3248;3256;3309:3;3297:9;3288:7;3284:23;3280:33;3277:53;;;3326:1;3323;3316:12;3277:53;-1:-1:-1;;3349:23:1;;;3419:2;3404:18;;3391:32;;-1:-1:-1;3470:2:1;3455:18;;3442:32;;3521:2;3506:18;3493:32;;-1:-1:-1;3146:385:1;-1:-1:-1;3146:385:1:o;3536:689::-;3628:6;3636;3644;3697:2;3685:9;3676:7;3672:23;3668:32;3665:52;;;3713:1;3710;3703:12;3665:52;3753:9;3740:23;3782:18;3823:2;3815:6;3812:14;3809:34;;;3839:1;3836;3829:12;3809:34;3877:6;3866:9;3862:22;3852:32;;3922:7;3915:4;3911:2;3907:13;3903:27;3893:55;;3944:1;3941;3934:12;3893:55;3984:2;3971:16;4010:2;4002:6;3999:14;3996:34;;;4026:1;4023;4016:12;3996:34;4081:7;4074:4;4064:6;4061:1;4057:14;4053:2;4049:23;4045:34;4042:47;4039:67;;;4102:1;4099;4092:12;4039:67;4133:4;4125:13;;;;-1:-1:-1;4157:6:1;-1:-1:-1;4182:37:1;;4198:20;;;-1:-1:-1;4182:37:1;:::i;:::-;4172:47;;3536:689;;;;;:::o;4230:388::-;4298:6;4306;4359:2;4347:9;4338:7;4334:23;4330:32;4327:52;;;4375:1;4372;4365:12;4327:52;4414:9;4401:23;4433:31;4458:5;4433:31;:::i;:::-;4483:5;-1:-1:-1;4540:2:1;4525:18;;4512:32;4553:33;4512:32;4553:33;:::i;:::-;4605:7;4595:17;;;4230:388;;;;;:::o;4623:356::-;4825:2;4807:21;;;4844:18;;;4837:30;4903:34;4898:2;4883:18;;4876:62;4970:2;4955:18;;4623:356::o;5334:127::-;5395:10;5390:3;5386:20;5383:1;5376:31;5426:4;5423:1;5416:15;5450:4;5447:1;5440:15;8690:127;8751:10;8746:3;8742:20;8739:1;8732:31;8782:4;8779:1;8772:15;8806:4;8803:1;8796:15;8822:125;8887:9;;;8908:10;;;8905:36;;;8921:18;;:::i;9356:128::-;9423:9;;;9444:11;;;9441:37;;;9458:18;;:::i;10032:251::-;10102:6;10155:2;10143:9;10134:7;10130:23;10126:32;10123:52;;;10171:1;10168;10161:12;10123:52;10203:9;10197:16;10222:31;10247:5;10222:31;:::i;10288:980::-;10550:4;10598:3;10587:9;10583:19;10629:6;10618:9;10611:25;10655:2;10693:6;10688:2;10677:9;10673:18;10666:34;10736:3;10731:2;10720:9;10716:18;10709:31;10760:6;10795;10789:13;10826:6;10818;10811:22;10864:3;10853:9;10849:19;10842:26;;10903:2;10895:6;10891:15;10877:29;;10924:1;10934:195;10948:6;10945:1;10942:13;10934:195;;;11013:13;;-1:-1:-1;;;;;11009:39:1;10997:52;;11104:15;;;;11069:12;;;;11045:1;10963:9;10934:195;;;-1:-1:-1;;;;;;;11185:32:1;;;;11180:2;11165:18;;11158:60;-1:-1:-1;;;11249:3:1;11234:19;11227:35;11146:3;10288:980;-1:-1:-1;;;10288:980:1:o;11273:217::-;11313:1;11339;11329:132;;11383:10;11378:3;11374:20;11371:1;11364:31;11418:4;11415:1;11408:15;11446:4;11443:1;11436:15;11329:132;-1:-1:-1;11475:9:1;;11273:217::o;11851:168::-;11924:9;;;11955;;11972:15;;;11966:22;;11952:37;11942:71;;11993:18;;:::i

Swarm Source

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