ETH Price: $2,315.11 (-7.79%)

Token

Gru (GRU)
 

Overview

Max Total Supply

1,000,000,000 GRU

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 GRU

Value
$0.00
0x507834873C010c058579BbAeD1220929Bd725EdB
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:
Gru

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

//website : https://grutoken.xyz/
//twitter : https://twitter.com/gru_token
//tg : https://t.me/GruEntry
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
contract Gru is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Gru";
    string private constant _symbol = "GRU";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 20;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 99;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _developmentAddress = payable(0x6254CB03878a06c74Cc7D0bb4FDED77e9fa1C266); 
    address payable private _marketingAddress = payable(0x6254CB03878a06c74Cc7D0bb4FDED77e9fa1C266);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20000000 * 10**9; 
    uint256 public _maxWalletSize = 20000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 10000000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount/2);
        _developmentAddress.transfer(amount/2);
    }
 
    function enableTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function addBots(address[] memory bots_,bool _status) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = _status;
        }
    }
 
    function removeBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        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;

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"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":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"removeBot","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":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000019670de0b6b3a76400005f1962000354565b62000026905f1962000374565b6006555f60088190556014600955600a8190556063600b819055600c829055600d819055600e91909155600f55601280546001600160a01b0319908116736254cb03878a06c74cc7d0bb4fded77e9fa1c2669081179092556013805490911690911790556015805461ffff60a81b1916600160b01b17905566470de4df8200006016819055601755662386f26fc10000601855348015620000c5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a591906200039a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021791906200039a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000262573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028891906200039a565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200034591815260200190565b60405180910390a350620003c9565b5f826200036f57634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200039457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003ab575f80fd5b81516001600160a01b0381168114620003c2575f80fd5b9392505050565b611ef680620003d75f395ff3fe6080604052600436106101c8575f3560e01c80637f2feddc116100f2578063a9059cbb11610092578063dd62ed3e11610062578063dd62ed3e14610527578063ea1644d51461056b578063f275f64b1461058a578063f2fde38b146105a9575f80fd5b8063a9059cbb146104a7578063bfd79284146104c6578063c3c8cd80146104f4578063c492f04614610508575f80fd5b806395d89b41116100cd57806395d89b411461041f57806398a5c3151461044a578063a0916b8214610469578063a2a957bb14610488575f80fd5b80637f2feddc146103c35780638da5cb5b146103ee5780638f9a55c01461040a575f80fd5b806349bd5a5e1161016857806370a082311161013857806370a082311461035c578063715018a61461037b57806374010ece1461038f5780637d1db4a5146103ae575f80fd5b806349bd5a5e146102e95780635fecd926146103085780636d8aa8f8146103295780636fc3eaec14610348575f80fd5b806318160ddd116101a357806318160ddd1461027657806323b872dd1461029a5780632fd689e3146102b9578063313ce567146102ce575f80fd5b806306fdde03146101d3578063095ea7b3146102105780631694505e1461023f575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600381526247727560e81b60208201525b6040516102079190611a43565b60405180910390f35b34801561021b575f80fd5b5061022f61022a366004611ab2565b6105c8565b6040519015158152602001610207565b34801561024a575f80fd5b5060145461025e906001600160a01b031681565b6040516001600160a01b039091168152602001610207565b348015610281575f80fd5b50670de0b6b3a76400005b604051908152602001610207565b3480156102a5575f80fd5b5061022f6102b4366004611adc565b6105de565b3480156102c4575f80fd5b5061028c60185481565b3480156102d9575f80fd5b5060405160098152602001610207565b3480156102f4575f80fd5b5060155461025e906001600160a01b031681565b348015610313575f80fd5b50610327610322366004611b1a565b610645565b005b348015610334575f80fd5b50610327610343366004611b44565b610697565b348015610353575f80fd5b506103276106de565b348015610367575f80fd5b5061028c610376366004611b1a565b610728565b348015610386575f80fd5b50610327610749565b34801561039a575f80fd5b506103276103a9366004611b5d565b6107ba565b3480156103b9575f80fd5b5061028c60165481565b3480156103ce575f80fd5b5061028c6103dd366004611b1a565b60116020525f908152604090205481565b3480156103f9575f80fd5b505f546001600160a01b031661025e565b348015610415575f80fd5b5061028c60175481565b34801561042a575f80fd5b5060408051808201909152600381526247525560e81b60208201526101fa565b348015610455575f80fd5b50610327610464366004611b5d565b6107e8565b348015610474575f80fd5b50610327610483366004611b88565b610816565b348015610493575f80fd5b506103276104a2366004611c5a565b6108a8565b3480156104b2575f80fd5b5061022f6104c1366004611ab2565b610a5d565b3480156104d1575f80fd5b5061022f6104e0366004611b1a565b60106020525f908152604090205460ff1681565b3480156104ff575f80fd5b50610327610a69565b348015610513575f80fd5b50610327610522366004611c89565b610abb565b348015610532575f80fd5b5061028c610541366004611d06565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610576575f80fd5b50610327610585366004611b5d565b610b58565b348015610595575f80fd5b506103276105a4366004611b44565b610b86565b3480156105b4575f80fd5b506103276105c3366004611b1a565b610bcd565b5f6105d4338484610cb4565b5060015b92915050565b5f6105ea848484610dd7565b61063b843361063685604051806060016040528060288152602001611e99602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611303565b610cb4565b5060019392505050565b5f546001600160a01b031633146106775760405162461bcd60e51b815260040161066e90611d3d565b60405180910390fd5b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146106c05760405162461bcd60e51b815260040161066e90611d3d565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061071357506013546001600160a01b0316336001600160a01b0316145b61071b575f80fd5b476107258161133b565b50565b6001600160a01b0381165f908152600260205260408120546105d8906113be565b5f546001600160a01b031633146107725760405162461bcd60e51b815260040161066e90611d3d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107e35760405162461bcd60e51b815260040161066e90611d3d565b601655565b5f546001600160a01b031633146108115760405162461bcd60e51b815260040161066e90611d3d565b601855565b5f546001600160a01b0316331461083f5760405162461bcd60e51b815260040161066e90611d3d565b5f5b82518110156108a3578160105f85848151811061086057610860611d72565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061089b81611d9a565b915050610841565b505050565b5f546001600160a01b031633146108d15760405162461bcd60e51b815260040161066e90611d3d565b60048411156109305760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b606482015260840161066e565b606282111561098c5760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261382560f01b606482015260840161066e565b60048311156109ec5760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b606482015260840161066e565b6062811115610a495760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239382560e81b606482015260840161066e565b600893909355600a91909155600955600b55565b5f6105d4338484610dd7565b6012546001600160a01b0316336001600160a01b03161480610a9e57506013546001600160a01b0316336001600160a01b0316145b610aa6575f80fd5b5f610ab030610728565b905061072581611440565b5f546001600160a01b03163314610ae45760405162461bcd60e51b815260040161066e90611d3d565b5f5b82811015610b52578160055f868685818110610b0457610b04611d72565b9050602002016020810190610b199190611b1a565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610b4a81611d9a565b915050610ae6565b50505050565b5f546001600160a01b03163314610b815760405162461bcd60e51b815260040161066e90611d3d565b601755565b5f546001600160a01b03163314610baf5760405162461bcd60e51b815260040161066e90611d3d565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610bf65760405162461bcd60e51b815260040161066e90611d3d565b6001600160a01b038116610c5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066e565b6001600160a01b038216610d775760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066e565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066e565b6001600160a01b038216610e9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066e565b5f8111610efe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161066e565b5f546001600160a01b03848116911614801590610f2857505f546001600160a01b03838116911614155b156111ff57601554600160a01b900460ff16610fc0575f546001600160a01b03848116911614610fc05760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161066e565b6016548111156110125760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161066e565b6001600160a01b0383165f9081526010602052604090205460ff1615801561105257506001600160a01b0382165f9081526010602052604090205460ff16155b6110aa5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161066e565b6015546001600160a01b0383811691161461112f57601754816110cc84610728565b6110d69190611db2565b1061112f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161066e565b5f61113930610728565b601854909150811080159061114e5760185491505b8080156111655750601554600160a81b900460ff16155b801561117f57506015546001600160a01b03868116911614155b80156111945750601554600160b01b900460ff165b80156111b857506001600160a01b0385165f9081526005602052604090205460ff16155b80156111dc57506001600160a01b0384165f9081526005602052604090205460ff16155b156111fc576111ea82611440565b4780156111fa576111fa4761133b565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061123f57506001600160a01b0383165f9081526005602052604090205460ff165b8061127157506015546001600160a01b0385811691161480159061127157506015546001600160a01b03848116911614155b1561127d57505f6112f7565b6015546001600160a01b0385811691161480156112a857506014546001600160a01b03848116911614155b156112ba57600854600c55600954600d555b6015546001600160a01b0384811691161480156112e557506014546001600160a01b03858116911614155b156112f757600a54600c55600b54600d555b610b52848484846115b0565b5f81848411156113265760405162461bcd60e51b815260040161066e9190611a43565b505f6113328486611dc5565b95945050505050565b6013546001600160a01b03166108fc611355600284611dd8565b6040518115909202915f818181858888f1935050505015801561137a573d5f803e3d5ffd5b506012546001600160a01b03166108fc611395600284611dd8565b6040518115909202915f818181858888f193505050501580156113ba573d5f803e3d5ffd5b5050565b5f6006548211156114245760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161066e565b5f61142d6115de565b905061143983826115ff565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061148657611486611d72565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115019190611df7565b8160018151811061151457611514611d72565b6001600160a01b03928316602091820292909201015260145461153a9130911684610cb4565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906115729085905f90869030904290600401611e12565b5f604051808303815f87803b158015611589575f80fd5b505af115801561159b573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b806115bd576115bd611640565b6115c884848461166d565b80610b5257610b52600e54600c55600f54600d55565b5f805f6115e961175e565b90925090506115f882826115ff565b9250505090565b5f61143983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061179d565b600c541580156116505750600d54155b1561165757565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061167c876117c9565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506116ad908761181e565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546116db908661185f565b6001600160a01b0389165f908152600260205260409020556116fc816118bd565b6117068483611903565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161174b91815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a764000061177882826115ff565b82101561179457505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836117bd5760405162461bcd60e51b815260040161066e9190611a43565b505f6113328486611dd8565b5f805f805f805f805f6117e18a600c54600d54611927565b9250925092505f6117f06115de565b90505f805f6118018e878787611979565b919e509c509a509598509396509194505050505091939550919395565b5f61143983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611303565b5f8061186b8385611db2565b9050838110156114395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161066e565b5f6118c66115de565b90505f6118d383836119c5565b305f908152600260205260409020549091506118ef908261185f565b305f90815260026020526040902055505050565b600654611910908361181e565b600655600754611920908261185f565b6007555050565b5f808080611940606461193a89896119c5565b906115ff565b90505f611952606461193a8a896119c5565b90505f611969826119638b8661181e565b9061181e565b9992985090965090945050505050565b5f80808061198788866119c5565b90505f61199488876119c5565b90505f6119a188886119c5565b90505f6119b282611963868661181e565b939b939a50919850919650505050505050565b5f825f036119d457505f6105d8565b5f6119df8385611e81565b9050826119ec8583611dd8565b146114395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161066e565b5f6020808352835180828501525f5b81811015611a6e57858101830151858201604001528201611a52565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610725575f80fd5b8035611aad81611a8e565b919050565b5f8060408385031215611ac3575f80fd5b8235611ace81611a8e565b946020939093013593505050565b5f805f60608486031215611aee575f80fd5b8335611af981611a8e565b92506020840135611b0981611a8e565b929592945050506040919091013590565b5f60208284031215611b2a575f80fd5b813561143981611a8e565b80358015158114611aad575f80fd5b5f60208284031215611b54575f80fd5b61143982611b35565b5f60208284031215611b6d575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611b99575f80fd5b823567ffffffffffffffff80821115611bb0575f80fd5b818501915085601f830112611bc3575f80fd5b8135602082821115611bd757611bd7611b74565b8160051b604051601f19603f83011681018181108682111715611bfc57611bfc611b74565b604052928352818301935084810182019289841115611c19575f80fd5b948201945b83861015611c3e57611c2f86611aa2565b85529482019493820193611c1e565b9650611c4d9050878201611b35565b9450505050509250929050565b5f805f8060808587031215611c6d575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611c9b575f80fd5b833567ffffffffffffffff80821115611cb2575f80fd5b818601915086601f830112611cc5575f80fd5b813581811115611cd3575f80fd5b8760208260051b8501011115611ce7575f80fd5b602092830195509350611cfd9186019050611b35565b90509250925092565b5f8060408385031215611d17575f80fd5b8235611d2281611a8e565b91506020830135611d3281611a8e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611dab57611dab611d86565b5060010190565b808201808211156105d8576105d8611d86565b818103818111156105d8576105d8611d86565b5f82611df257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611e07575f80fd5b815161143981611a8e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e605784516001600160a01b031683529383019391830191600101611e3b565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176105d8576105d8611d8656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200478b3ec11c193a31e69088aea643e6e7516e655031a13f7146acfd90e8859c264736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c80637f2feddc116100f2578063a9059cbb11610092578063dd62ed3e11610062578063dd62ed3e14610527578063ea1644d51461056b578063f275f64b1461058a578063f2fde38b146105a9575f80fd5b8063a9059cbb146104a7578063bfd79284146104c6578063c3c8cd80146104f4578063c492f04614610508575f80fd5b806395d89b41116100cd57806395d89b411461041f57806398a5c3151461044a578063a0916b8214610469578063a2a957bb14610488575f80fd5b80637f2feddc146103c35780638da5cb5b146103ee5780638f9a55c01461040a575f80fd5b806349bd5a5e1161016857806370a082311161013857806370a082311461035c578063715018a61461037b57806374010ece1461038f5780637d1db4a5146103ae575f80fd5b806349bd5a5e146102e95780635fecd926146103085780636d8aa8f8146103295780636fc3eaec14610348575f80fd5b806318160ddd116101a357806318160ddd1461027657806323b872dd1461029a5780632fd689e3146102b9578063313ce567146102ce575f80fd5b806306fdde03146101d3578063095ea7b3146102105780631694505e1461023f575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600381526247727560e81b60208201525b6040516102079190611a43565b60405180910390f35b34801561021b575f80fd5b5061022f61022a366004611ab2565b6105c8565b6040519015158152602001610207565b34801561024a575f80fd5b5060145461025e906001600160a01b031681565b6040516001600160a01b039091168152602001610207565b348015610281575f80fd5b50670de0b6b3a76400005b604051908152602001610207565b3480156102a5575f80fd5b5061022f6102b4366004611adc565b6105de565b3480156102c4575f80fd5b5061028c60185481565b3480156102d9575f80fd5b5060405160098152602001610207565b3480156102f4575f80fd5b5060155461025e906001600160a01b031681565b348015610313575f80fd5b50610327610322366004611b1a565b610645565b005b348015610334575f80fd5b50610327610343366004611b44565b610697565b348015610353575f80fd5b506103276106de565b348015610367575f80fd5b5061028c610376366004611b1a565b610728565b348015610386575f80fd5b50610327610749565b34801561039a575f80fd5b506103276103a9366004611b5d565b6107ba565b3480156103b9575f80fd5b5061028c60165481565b3480156103ce575f80fd5b5061028c6103dd366004611b1a565b60116020525f908152604090205481565b3480156103f9575f80fd5b505f546001600160a01b031661025e565b348015610415575f80fd5b5061028c60175481565b34801561042a575f80fd5b5060408051808201909152600381526247525560e81b60208201526101fa565b348015610455575f80fd5b50610327610464366004611b5d565b6107e8565b348015610474575f80fd5b50610327610483366004611b88565b610816565b348015610493575f80fd5b506103276104a2366004611c5a565b6108a8565b3480156104b2575f80fd5b5061022f6104c1366004611ab2565b610a5d565b3480156104d1575f80fd5b5061022f6104e0366004611b1a565b60106020525f908152604090205460ff1681565b3480156104ff575f80fd5b50610327610a69565b348015610513575f80fd5b50610327610522366004611c89565b610abb565b348015610532575f80fd5b5061028c610541366004611d06565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610576575f80fd5b50610327610585366004611b5d565b610b58565b348015610595575f80fd5b506103276105a4366004611b44565b610b86565b3480156105b4575f80fd5b506103276105c3366004611b1a565b610bcd565b5f6105d4338484610cb4565b5060015b92915050565b5f6105ea848484610dd7565b61063b843361063685604051806060016040528060288152602001611e99602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611303565b610cb4565b5060019392505050565b5f546001600160a01b031633146106775760405162461bcd60e51b815260040161066e90611d3d565b60405180910390fd5b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146106c05760405162461bcd60e51b815260040161066e90611d3d565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061071357506013546001600160a01b0316336001600160a01b0316145b61071b575f80fd5b476107258161133b565b50565b6001600160a01b0381165f908152600260205260408120546105d8906113be565b5f546001600160a01b031633146107725760405162461bcd60e51b815260040161066e90611d3d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107e35760405162461bcd60e51b815260040161066e90611d3d565b601655565b5f546001600160a01b031633146108115760405162461bcd60e51b815260040161066e90611d3d565b601855565b5f546001600160a01b0316331461083f5760405162461bcd60e51b815260040161066e90611d3d565b5f5b82518110156108a3578160105f85848151811061086057610860611d72565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061089b81611d9a565b915050610841565b505050565b5f546001600160a01b031633146108d15760405162461bcd60e51b815260040161066e90611d3d565b60048411156109305760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b606482015260840161066e565b606282111561098c5760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261382560f01b606482015260840161066e565b60048311156109ec5760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b606482015260840161066e565b6062811115610a495760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239382560e81b606482015260840161066e565b600893909355600a91909155600955600b55565b5f6105d4338484610dd7565b6012546001600160a01b0316336001600160a01b03161480610a9e57506013546001600160a01b0316336001600160a01b0316145b610aa6575f80fd5b5f610ab030610728565b905061072581611440565b5f546001600160a01b03163314610ae45760405162461bcd60e51b815260040161066e90611d3d565b5f5b82811015610b52578160055f868685818110610b0457610b04611d72565b9050602002016020810190610b199190611b1a565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610b4a81611d9a565b915050610ae6565b50505050565b5f546001600160a01b03163314610b815760405162461bcd60e51b815260040161066e90611d3d565b601755565b5f546001600160a01b03163314610baf5760405162461bcd60e51b815260040161066e90611d3d565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610bf65760405162461bcd60e51b815260040161066e90611d3d565b6001600160a01b038116610c5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066e565b6001600160a01b038216610d775760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066e565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066e565b6001600160a01b038216610e9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066e565b5f8111610efe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161066e565b5f546001600160a01b03848116911614801590610f2857505f546001600160a01b03838116911614155b156111ff57601554600160a01b900460ff16610fc0575f546001600160a01b03848116911614610fc05760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161066e565b6016548111156110125760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161066e565b6001600160a01b0383165f9081526010602052604090205460ff1615801561105257506001600160a01b0382165f9081526010602052604090205460ff16155b6110aa5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161066e565b6015546001600160a01b0383811691161461112f57601754816110cc84610728565b6110d69190611db2565b1061112f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161066e565b5f61113930610728565b601854909150811080159061114e5760185491505b8080156111655750601554600160a81b900460ff16155b801561117f57506015546001600160a01b03868116911614155b80156111945750601554600160b01b900460ff165b80156111b857506001600160a01b0385165f9081526005602052604090205460ff16155b80156111dc57506001600160a01b0384165f9081526005602052604090205460ff16155b156111fc576111ea82611440565b4780156111fa576111fa4761133b565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061123f57506001600160a01b0383165f9081526005602052604090205460ff165b8061127157506015546001600160a01b0385811691161480159061127157506015546001600160a01b03848116911614155b1561127d57505f6112f7565b6015546001600160a01b0385811691161480156112a857506014546001600160a01b03848116911614155b156112ba57600854600c55600954600d555b6015546001600160a01b0384811691161480156112e557506014546001600160a01b03858116911614155b156112f757600a54600c55600b54600d555b610b52848484846115b0565b5f81848411156113265760405162461bcd60e51b815260040161066e9190611a43565b505f6113328486611dc5565b95945050505050565b6013546001600160a01b03166108fc611355600284611dd8565b6040518115909202915f818181858888f1935050505015801561137a573d5f803e3d5ffd5b506012546001600160a01b03166108fc611395600284611dd8565b6040518115909202915f818181858888f193505050501580156113ba573d5f803e3d5ffd5b5050565b5f6006548211156114245760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161066e565b5f61142d6115de565b905061143983826115ff565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061148657611486611d72565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115019190611df7565b8160018151811061151457611514611d72565b6001600160a01b03928316602091820292909201015260145461153a9130911684610cb4565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906115729085905f90869030904290600401611e12565b5f604051808303815f87803b158015611589575f80fd5b505af115801561159b573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b806115bd576115bd611640565b6115c884848461166d565b80610b5257610b52600e54600c55600f54600d55565b5f805f6115e961175e565b90925090506115f882826115ff565b9250505090565b5f61143983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061179d565b600c541580156116505750600d54155b1561165757565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061167c876117c9565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506116ad908761181e565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546116db908661185f565b6001600160a01b0389165f908152600260205260409020556116fc816118bd565b6117068483611903565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161174b91815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a764000061177882826115ff565b82101561179457505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836117bd5760405162461bcd60e51b815260040161066e9190611a43565b505f6113328486611dd8565b5f805f805f805f805f6117e18a600c54600d54611927565b9250925092505f6117f06115de565b90505f805f6118018e878787611979565b919e509c509a509598509396509194505050505091939550919395565b5f61143983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611303565b5f8061186b8385611db2565b9050838110156114395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161066e565b5f6118c66115de565b90505f6118d383836119c5565b305f908152600260205260409020549091506118ef908261185f565b305f90815260026020526040902055505050565b600654611910908361181e565b600655600754611920908261185f565b6007555050565b5f808080611940606461193a89896119c5565b906115ff565b90505f611952606461193a8a896119c5565b90505f611969826119638b8661181e565b9061181e565b9992985090965090945050505050565b5f80808061198788866119c5565b90505f61199488876119c5565b90505f6119a188886119c5565b90505f6119b282611963868661181e565b939b939a50919850919650505050505050565b5f825f036119d457505f6105d8565b5f6119df8385611e81565b9050826119ec8583611dd8565b146114395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161066e565b5f6020808352835180828501525f5b81811015611a6e57858101830151858201604001528201611a52565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610725575f80fd5b8035611aad81611a8e565b919050565b5f8060408385031215611ac3575f80fd5b8235611ace81611a8e565b946020939093013593505050565b5f805f60608486031215611aee575f80fd5b8335611af981611a8e565b92506020840135611b0981611a8e565b929592945050506040919091013590565b5f60208284031215611b2a575f80fd5b813561143981611a8e565b80358015158114611aad575f80fd5b5f60208284031215611b54575f80fd5b61143982611b35565b5f60208284031215611b6d575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611b99575f80fd5b823567ffffffffffffffff80821115611bb0575f80fd5b818501915085601f830112611bc3575f80fd5b8135602082821115611bd757611bd7611b74565b8160051b604051601f19603f83011681018181108682111715611bfc57611bfc611b74565b604052928352818301935084810182019289841115611c19575f80fd5b948201945b83861015611c3e57611c2f86611aa2565b85529482019493820193611c1e565b9650611c4d9050878201611b35565b9450505050509250929050565b5f805f8060808587031215611c6d575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611c9b575f80fd5b833567ffffffffffffffff80821115611cb2575f80fd5b818601915086601f830112611cc5575f80fd5b813581811115611cd3575f80fd5b8760208260051b8501011115611ce7575f80fd5b602092830195509350611cfd9186019050611b35565b90509250925092565b5f8060408385031215611d17575f80fd5b8235611d2281611a8e565b91506020830135611d3281611a8e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611dab57611dab611d86565b5060010190565b808201808211156105d8576105d8611d86565b818103818111156105d8576105d8611d86565b5f82611df257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611e07575f80fd5b815161143981611a8e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e605784516001600160a01b031683529383019391830191600101611e3b565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176105d8576105d8611d8656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200478b3ec11c193a31e69088aea643e6e7516e655031a13f7146acfd90e8859c264736f6c63430008140033

Deployed Bytecode Sourcemap

4200:14044:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6700:83;;;;;;;;;;-1:-1:-1;6770:5:0;;;;;;;;;;;;-1:-1:-1;;;6770:5:0;;;;6700:83;;;;;;;:::i;:::-;;;;;;;;7632:193;;;;;;;;;;-1:-1:-1;7632:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7632:193:0;1162:187:1;5538:41:0;;;;;;;;;;-1:-1:-1;5538:41:0;;;;-1:-1:-1;;;;;5538:41:0;;;;;;-1:-1:-1;;;;;1544:32:1;;;1526:51;;1514:2;1499:18;5538:41:0;1354:229:1;6980:95:0;;;;;;;;;;-1:-1:-1;4730:18:0;6980:95;;;1734:25:1;;;1722:2;1707:18;6980:95:0;1588:177:1;7834:446:0;;;;;;;;;;-1:-1:-1;7834:446:0;;;;;:::i;:::-;;:::i;5840:53::-;;;;;;;;;;;;;;;;6888:83;;;;;;;;;;-1:-1:-1;6888:83:0;;4406:1;2373:36:1;;2361:2;2346:18;6888:83:0;2231:184:1;5586:28:0;;;;;;;;;;-1:-1:-1;5586:28:0;;;;-1:-1:-1;;;;;5586:28:0;;;13166:91;;;;;;;;;;-1:-1:-1;13166:91:0;;;;;:::i;:::-;;:::i;:::-;;17612:101;;;;;;;;;;-1:-1:-1;17612:101:0;;;;;:::i;:::-;;:::i;12730:235::-;;;;;;;;;;;;;:::i;7084:138::-;;;;;;;;;;-1:-1:-1;7084:138:0;;;;;:::i;:::-;;:::i;1712:148::-;;;;;;;;;;;;;:::i;17753:121::-;;;;;;;;;;-1:-1:-1;17753:121:0;;;;;:::i;:::-;;:::i;5730:46::-;;;;;;;;;;;;;;;;5277:43;;;;;;;;;;-1:-1:-1;5277:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1502:79;;;;;;;;;;-1:-1:-1;1540:7:0;1567:6;-1:-1:-1;;;;;1567:6:0;1502:79;;5784:48;;;;;;;;;;;;;;;;6792:87;;;;;;;;;;-1:-1:-1;6864:7:0;;;;;;;;;;;;-1:-1:-1;;;6864:7:0;;;;6792:87;;17420:139;;;;;;;;;;-1:-1:-1;17420:139:0;;;;;:::i;:::-;;:::i;12974:183::-;;;;;;;;;;-1:-1:-1;12974:183:0;;;;;:::i;:::-;;:::i;16674:693::-;;;;;;;;;;-1:-1:-1;16674:693:0;;;;;:::i;:::-;;:::i;7231:199::-;;;;;;;;;;-1:-1:-1;7231:199:0;;;;;:::i;:::-;;:::i;5239:36::-;;;;;;;;;;-1:-1:-1;5239:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12485:236;;;;;;;;;;;;;:::i;18007:234::-;;;;;;;;;;-1:-1:-1;18007:234:0;;;;;:::i;:::-;;:::i;7439:184::-;;;;;;;;;;-1:-1:-1;7439:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7588:18:0;;;7556:7;7588:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7439:184;17883:115;;;;;;;;;;-1:-1:-1;17883:115:0;;;;;:::i;:::-;;:::i;12372:104::-;;;;;;;;;;-1:-1:-1;12372:104:0;;;;;:::i;:::-;;:::i;1869:244::-;;;;;;;;;;-1:-1:-1;1869:244:0;;;;;:::i;:::-;;:::i;7632:193::-;7734:4;7756:39;361:10;7779:7;7788:6;7756:8;:39::i;:::-;-1:-1:-1;7813:4:0;7632:193;;;;;:::o;7834:446::-;7966:4;7983:36;7993:6;8001:9;8012:6;7983:9;:36::i;:::-;8030:220;8053:6;361:10;8101:138;8157:6;8101:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8101:19:0;;;;;;:11;:19;;;;;;;;361:10;8101:33;;;;;;;;;;:37;:138::i;:::-;8030:8;:220::i;:::-;-1:-1:-1;8268:4:0;7834:446;;;;;:::o;13166:91::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13229:12:0::1;13244:5;13229:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13229:20:0::1;::::0;;13166:91::o;17612:101::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;17679:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17679:26:0::1;-1:-1:-1::0;;;;17679:26:0;;::::1;::::0;;;::::1;::::0;;17612:101::o;12730:235::-;12796:19;;-1:-1:-1;;;;;12796:19:0;361:10;-1:-1:-1;;;;;12780:35:0;;:72;;;-1:-1:-1;12835:17:0;;-1:-1:-1;;;;;12835:17:0;361:10;-1:-1:-1;;;;;12819:33:0;;12780:72;12772:81;;;;;;12893:21;12925:32;12893:21;12925:12;:32::i;:::-;12761:204;12730:235::o;7084:138::-;-1:-1:-1;;;;;7197:16:0;;7150:7;7197:16;;;:7;:16;;;;;;7177:37;;:19;:37::i;1712:148::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;1819:1:::1;1803:6:::0;;1782:40:::1;::::0;-1:-1:-1;;;;;1803:6:0;;::::1;::::0;1782:40:::1;::::0;1819:1;;1782:40:::1;1850:1;1833:19:::0;;-1:-1:-1;;;;;;1833:19:0::1;::::0;;1712:148::o;17753:121::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;17830:12:::1;:26:::0;17753:121::o;17420:139::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;17511:19:::1;:40:::0;17420:139::o;12974:183::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;13061:9:::1;13056:94;13080:5;:12;13076:1;:16;13056:94;;;13131:7;13114:4;:14;13119:5;13125:1;13119:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13114:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13114:14:0;:24;;-1:-1:-1;;13114:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13094:3;::::1;::::0;::::1;:::i;:::-;;;;13056:94;;;;12974:183:::0;;:::o;16674:693::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;16855:1:::1;16838:13;:18;;16808:90;;;::::0;-1:-1:-1;;;16808:90:0;;7187:2:1;16808:90:0::1;::::0;::::1;7169:21:1::0;7226:2;7206:18;;;7199:30;7265:34;7245:18;;;7238:62;-1:-1:-1;;;7316:18:1;;;7309:35;7361:19;;16808:90:0::1;6985:401:1::0;16808:90:0::1;16952:2;16937:11;:17;;16909:84;;;::::0;-1:-1:-1;;;16909:84:0;;7593:2:1;16909:84:0::1;::::0;::::1;7575:21:1::0;7632:2;7612:18;;;7605:30;7671:34;7651:18;;;7644:62;-1:-1:-1;;;7722:18:1;;;7715:32;7764:19;;16909:84:0::1;7391:398:1::0;16909:84:0::1;17053:1;17035:14;:19;;17004:93;;;::::0;-1:-1:-1;;;17004:93:0;;7996:2:1;17004:93:0::1;::::0;::::1;7978:21:1::0;8035:2;8015:18;;;8008:30;8074:34;8054:18;;;8047:62;-1:-1:-1;;;8125:18:1;;;8118:36;8171:19;;17004:93:0::1;7794:402:1::0;17004:93:0::1;17153:2;17137:12;:18;;17108:87;;;::::0;-1:-1:-1;;;17108:87:0;;8403:2:1;17108:87:0::1;::::0;::::1;8385:21:1::0;8442:2;8422:18;;;8415:30;8481:34;8461:18;;;8454:62;-1:-1:-1;;;8532:18:1;;;8525:33;8575:19;;17108:87:0::1;8201:399:1::0;17108:87:0::1;17208:14;:30:::0;;;;17249:15:::1;:32:::0;;;;17292:12:::1;:26:::0;17329:13:::1;:28:::0;16674:693::o;7231:199::-;7336:4;7358:42;361:10;7382:9;7393:6;7358:9;:42::i;12485:236::-;12551:19;;-1:-1:-1;;;;;12551:19:0;361:10;-1:-1:-1;;;;;12535:35:0;;:72;;;-1:-1:-1;12590:17:0;;-1:-1:-1;;;;;12590:17:0;361:10;-1:-1:-1;;;;;12574:33:0;;12535:72;12527:81;;;;;;12619:23;12645:24;12663:4;12645:9;:24::i;:::-;12619:50;;12680:33;12697:15;12680:16;:33::i;18007:234::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;18124:9:::1;18120:114;18139:19:::0;;::::1;18120:114;;;18214:8;18180:18;:31;18199:8;;18208:1;18199:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18180:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18180:31:0;:42;;-1:-1:-1;;18180:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18160:3;::::1;::::0;::::1;:::i;:::-;;;;18120:114;;;;18007:234:::0;;;:::o;17883:115::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;17960:14:::1;:30:::0;17883:115::o;12372:104::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;12442:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12442:26:0::1;-1:-1:-1::0;;;;12442:26:0;;::::1;::::0;;;::::1;::::0;;12372:104::o;1869:244::-;1627:6;;-1:-1:-1;;;;;1627:6:0;361:10;1627:22;1619:67;;;;-1:-1:-1;;;1619:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1958:22:0;::::1;1950:73;;;::::0;-1:-1:-1;;;1950:73:0;;8807:2:1;1950:73:0::1;::::0;::::1;8789:21:1::0;8846:2;8826:18;;;8819:30;8885:34;8865:18;;;8858:62;-1:-1:-1;;;8936:18:1;;;8929:36;8982:19;;1950:73:0::1;8605:402:1::0;1950:73:0::1;2060:6;::::0;;2039:38:::1;::::0;-1:-1:-1;;;;;2039:38:0;;::::1;::::0;2060:6;::::1;::::0;2039:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:0::1;-1:-1:-1::0;;;;;2088:17:0;;;::::1;::::0;;;::::1;::::0;;1869:244::o;8977:369::-;-1:-1:-1;;;;;9104:19:0;;9096:68;;;;-1:-1:-1;;;9096:68:0;;9214:2:1;9096:68:0;;;9196:21:1;9253:2;9233:18;;;9226:30;9292:34;9272:18;;;9265:62;-1:-1:-1;;;9343:18:1;;;9336:34;9387:19;;9096:68:0;9012:400:1;9096:68:0;-1:-1:-1;;;;;9183:21:0;;9175:68;;;;-1:-1:-1;;;9175:68:0;;9619:2:1;9175:68:0;;;9601:21:1;9658:2;9638:18;;;9631:30;9697:34;9677:18;;;9670:62;-1:-1:-1;;;9748:18:1;;;9741:32;9790:19;;9175:68:0;9417:398:1;9175:68:0;-1:-1:-1;;;;;9254:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9306:32;;1734:25:1;;;9306:32:0;;1707:18:1;9306:32:0;;;;;;;8977:369;;;:::o;9355:2357::-;-1:-1:-1;;;;;9477:18:0;;9469:68;;;;-1:-1:-1;;;9469:68:0;;10022:2:1;9469:68:0;;;10004:21:1;10061:2;10041:18;;;10034:30;10100:34;10080:18;;;10073:62;-1:-1:-1;;;10151:18:1;;;10144:35;10196:19;;9469:68:0;9820:401:1;9469:68:0;-1:-1:-1;;;;;9556:16:0;;9548:64;;;;-1:-1:-1;;;9548:64:0;;10428:2:1;9548:64:0;;;10410:21:1;10467:2;10447:18;;;10440:30;10506:34;10486:18;;;10479:62;-1:-1:-1;;;10557:18:1;;;10550:33;10600:19;;9548:64:0;10226:399:1;9548:64:0;9640:1;9631:6;:10;9623:64;;;;-1:-1:-1;;;9623:64:0;;10832:2:1;9623:64:0;;;10814:21:1;10871:2;10851:18;;;10844:30;10910:34;10890:18;;;10883:62;-1:-1:-1;;;10961:18:1;;;10954:39;11010:19;;9623:64:0;10630:405:1;9623:64:0;1540:7;1567:6;-1:-1:-1;;;;;9705:15:0;;;1567:6;;9705:15;;;;:32;;-1:-1:-1;1540:7:0;1567:6;-1:-1:-1;;;;;9724:13:0;;;1567:6;;9724:13;;9705:32;9701:1279;;;9795:11;;-1:-1:-1;;;9795:11:0;;;;9790:144;;1540:7;1567:6;-1:-1:-1;;;;;9835:15:0;;;1567:6;;9835:15;9827:91;;;;-1:-1:-1;;;9827:91:0;;11242:2:1;9827:91:0;;;11224:21:1;11281:2;11261:18;;;11254:30;11320:34;11300:18;;;11293:62;11391:33;11371:18;;;11364:61;11442:19;;9827:91:0;11040:427:1;9827:91:0;9969:12;;9959:6;:22;;9951:63;;;;-1:-1:-1;;;9951:63:0;;11674:2:1;9951:63:0;;;11656:21:1;11713:2;11693:18;;;11686:30;11752;11732:18;;;11725:58;11800:18;;9951:63:0;11472:352:1;9951:63:0;-1:-1:-1;;;;;10038:10:0;;;;;;:4;:10;;;;;;;;10037:11;:24;;;;-1:-1:-1;;;;;;10053:8:0;;;;;;:4;:8;;;;;;;;10052:9;10037:24;10029:72;;;;-1:-1:-1;;;10029:72:0;;12031:2:1;10029:72:0;;;12013:21:1;12070:2;12050:18;;;12043:30;12109:34;12089:18;;;12082:62;-1:-1:-1;;;12160:18:1;;;12153:33;12203:19;;10029:72:0;11829:399:1;10029:72:0;10128:13;;-1:-1:-1;;;;;10122:19:0;;;10128:13;;10122:19;10119:146;;10195:14;;10186:6;10170:13;10180:2;10170:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10162:87;;;;-1:-1:-1;;;10162:87:0;;12565:2:1;10162:87:0;;;12547:21:1;12604:2;12584:18;;;12577:30;12643:34;12623:18;;;12616:62;-1:-1:-1;;;12694:18:1;;;12687:33;12737:19;;10162:87:0;12363:399:1;10162:87:0;10282:28;10313:24;10331:4;10313:9;:24::i;:::-;10391:19;;10282:55;;-1:-1:-1;10367:43:0;;;;;10428:138;;10531:19;;10508:42;;10428:138;10587:7;:18;;;;-1:-1:-1;10599:6:0;;-1:-1:-1;;;10599:6:0;;;;10598:7;10587:18;:43;;;;-1:-1:-1;10617:13:0;;-1:-1:-1;;;;;10609:21:0;;;10617:13;;10609:21;;10587:43;:58;;;;-1:-1:-1;10634:11:0;;-1:-1:-1;;;10634:11:0;;;;10587:58;:87;;;;-1:-1:-1;;;;;;10650:24:0;;;;;;:18;:24;;;;;;;;10649:25;10587:87;:114;;;;-1:-1:-1;;;;;;10679:22:0;;;;;;:18;:22;;;;;;;;10678:23;10587:114;10583:386;;;10722:38;10739:20;10722:16;:38::i;:::-;10808:21;10852:22;;10848:106;;10899:35;10912:21;10899:12;:35::i;:::-;10703:266;10583:386;9739:1241;;9701:1279;-1:-1:-1;;;;;11058:24:0;;10993:12;11058:24;;;:18;:24;;;;;;11008:4;;11058:24;;;:50;;-1:-1:-1;;;;;;11086:22:0;;;;;;:18;:22;;;;;;;;11058:50;11057:102;;;-1:-1:-1;11122:13:0;;-1:-1:-1;;;;;11114:21:0;;;11122:13;;11114:21;;;;:44;;-1:-1:-1;11145:13:0;;-1:-1:-1;;;;;11139:19:0;;;11145:13;;11139:19;;11114:44;11053:597;;;-1:-1:-1;11186:5:0;11053:597;;;11270:13;;-1:-1:-1;;;;;11262:21:0;;;11270:13;;11262:21;:55;;;;-1:-1:-1;11301:15:0;;-1:-1:-1;;;;;11287:30:0;;;11301:15;;11287:30;;11262:55;11259:162;;;11350:14;;11338:9;:26;11393:12;;11383:7;:22;11259:162;11481:13;;-1:-1:-1;;;;;11475:19:0;;;11481:13;;11475:19;:55;;;;-1:-1:-1;11514:15:0;;-1:-1:-1;;;;;11498:32:0;;;11514:15;;11498:32;;11475:55;11471:165;;;11563:15;;11551:9;:27;11607:13;;11597:7;:23;11471:165;11663:41;11678:4;11684:2;11688:6;11696:7;11663:14;:41::i;2469:224::-;2589:7;2625:12;2617:6;;;;2609:29;;;;-1:-1:-1;;;2609:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2649:9:0;2661:5;2665:1;2661;:5;:::i;:::-;2649:17;2469:224;-1:-1:-1;;;;;2469:224:0:o;12213:150::-;12270:17;;-1:-1:-1;;;;;12270:17:0;:36;12297:8;12304:1;12297:6;:8;:::i;:::-;12270:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12317:19:0;;-1:-1:-1;;;;;12317:19:0;:38;12346:8;12353:1;12346:6;:8;:::i;:::-;12317:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12213:150;:::o;8289:323::-;8384:7;8442;;8431;:18;;8409:110;;;;-1:-1:-1;;;8409:110:0;;13324:2:1;8409:110:0;;;13306:21:1;13363:2;13343:18;;;13336:30;13402:34;13382:18;;;13375:62;-1:-1:-1;;;13453:18:1;;;13446:40;13503:19;;8409:110:0;13122:406:1;8409:110:0;8530:19;8552:10;:8;:10::i;:::-;8530:32;-1:-1:-1;8580:24:0;:7;8530:32;8580:11;:24::i;:::-;8573:31;8289:323;-1:-1:-1;;;8289:323:0:o;11721:483::-;5988:6;:13;;-1:-1:-1;;;;5988:13:0;-1:-1:-1;;;5988:13:0;;;11823:16:::1;::::0;;11837:1:::1;11823:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11823:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11823:16:0::1;11799:40;;11868:4;11850;11855:1;11850:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11850:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11894:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11894:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11850:7;;11894:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11884:4;11889:1;11884:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11884:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11959:15:::1;::::0;11927:62:::1;::::0;11944:4:::1;::::0;11959:15:::1;11977:11:::0;11927:8:::1;:62::i;:::-;12000:15;::::0;:196:::1;::::0;-1:-1:-1;;;12000:196:0;;-1:-1:-1;;;;;12000:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12081:11;;12000:15:::1;::::0;12123:4;;12150::::1;::::0;12170:15:::1;::::0;12000:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6024:6:0;:14;;-1:-1:-1;;;;6024:14:0;;;-1:-1:-1;;;;11721:483:0:o;13266:282::-;13422:7;13417:28;;13431:14;:12;:14::i;:::-;13456:44;13474:6;13482:9;13493:6;13456:17;:44::i;:::-;13516:7;13511:29;;13525:15;8907:17;;8895:9;:29;8945:15;;8935:7;:25;8851:117;16235:164;16277:7;16298:15;16315;16334:19;:17;:19::i;:::-;16297:56;;-1:-1:-1;16297:56:0;-1:-1:-1;16371:20:0;16297:56;;16371:11;:20::i;:::-;16364:27;;;;16235:164;:::o;2951:132::-;3009:7;3036:39;3040:1;3043;3036:39;;;;;;;;;;;;;;;;;:3;:39::i;8621:221::-;8668:9;;:14;:30;;;;-1:-1:-1;8686:7:0;;:12;8668:30;8664:43;;;8621:221::o;8664:43::-;8740:9;;;8720:17;:29;8778:7;;;8760:15;:25;-1:-1:-1;8799:13:0;;;;8823:11;8621:221::o;13557:610::-;13704:15;13734:23;13772:12;13799:23;13837:12;13864:13;13891:19;13902:7;13891:10;:19::i;:::-;-1:-1:-1;;;;;13939:15:0;;;;;;:7;:15;;;;;;13689:221;;-1:-1:-1;13689:221:0;;-1:-1:-1;13689:221:0;;-1:-1:-1;13689:221:0;-1:-1:-1;13689:221:0;-1:-1:-1;13689:221:0;-1:-1:-1;13939:28:0;;13689:221;13939:19;:28::i;:::-;-1:-1:-1;;;;;13921:15:0;;;;;;;:7;:15;;;;;;:46;;;;13999:18;;;;;;;:39;;14022:15;13999:22;:39::i;:::-;-1:-1:-1;;;;;13978:18:0;;;;;;:7;:18;;;;;:60;14049:16;14059:5;14049:9;:16::i;:::-;14076:23;14088:4;14094;14076:11;:23::i;:::-;14132:9;-1:-1:-1;;;;;14115:44:0;14124:6;-1:-1:-1;;;;;14115:44:0;;14143:15;14115:44;;;;1734:25:1;;1722:2;1707:18;;1588:177;14115:44:0;;;;;;;;13678:489;;;;;;13557:610;;;:::o;16408:257::-;16506:7;;16459;;;;4730:18;16574:20;16506:7;4730:18;16574:11;:20::i;:::-;16564:7;:30;16560:61;;;-1:-1:-1;;16604:7:0;;;4730:18;;-1:-1:-1;16408:257:0;-1:-1:-1;16408:257:0:o;16560:61::-;16640:7;;16649;;-1:-1:-1;16408:257:0;-1:-1:-1;16408:257:0:o;3089:223::-;3209:7;3244:12;3237:5;3229:28;;;;-1:-1:-1;;;3229:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3268:9:0;3280:5;3284:1;3280;:5;:::i;14590:615::-;14690:7;14712;14734;14756;14778;14800;14836:23;14861:12;14875:13;14905:40;14917:7;14926:9;;14937:7;;14905:11;:40::i;:::-;14835:110;;;;;;14956:19;14978:10;:8;:10::i;:::-;14956:32;;15000:15;15017:23;15042:12;15071:46;15083:7;15092:4;15098:5;15105:11;15071;:46::i;:::-;14999:118;;-1:-1:-1;14999:118:0;-1:-1:-1;14999:118:0;-1:-1:-1;15168:15:0;;-1:-1:-1;15185:4:0;;-1:-1:-1;15191:5:0;;-1:-1:-1;;;;;14590:615:0;;;;;;;:::o;2327:136::-;2385:7;2412:43;2416:1;2419;2412:43;;;;;;;;;;;;;;;;;:3;:43::i;2142:179::-;2200:7;;2232:5;2236:1;2232;:5;:::i;:::-;2220:17;;2261:1;2256;:6;;2248:46;;;;-1:-1:-1;;;2248:46:0;;14976:2:1;2248:46:0;;;14958:21:1;15015:2;14995:18;;;14988:30;15054:29;15034:18;;;15027:57;15101:18;;2248:46:0;14774:351:1;14176:211:0;14229:19;14251:10;:8;:10::i;:::-;14229:32;-1:-1:-1;14272:13:0;14288:22;:5;14229:32;14288:9;:22::i;:::-;14362:4;14346:22;;;;:7;:22;;;;;;14272:38;;-1:-1:-1;14346:33:0;;14272:38;14346:26;:33::i;:::-;14337:4;14321:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14176:211:0:o;14396:147::-;14474:7;;:17;;14486:4;14474:11;:17::i;:::-;14464:7;:27;14515:10;;:20;;14530:4;14515:14;:20::i;:::-;14502:10;:33;-1:-1:-1;;14396:147:0:o;15214:469::-;15383:7;;;;15477:30;15503:3;15477:21;:7;15489:8;15477:11;:21::i;:::-;:25;;:30::i;:::-;15462:45;-1:-1:-1;15518:13:0;15534:28;15558:3;15534:19;:7;15546:6;15534:11;:19::i;:28::-;15518:44;-1:-1:-1;15573:23:0;15599:28;15518:44;15599:17;:7;15611:4;15599:11;:17::i;:::-;:21;;:28::i;:::-;15573:54;15663:4;;-1:-1:-1;15669:5:0;;-1:-1:-1;15214:469:0;;-1:-1:-1;;;;;15214:469:0:o;15692:534::-;15886:7;;;;15983:24;:7;15995:11;15983;:24::i;:::-;15965:42;-1:-1:-1;16018:12:0;16033:21;:4;16042:11;16033:8;:21::i;:::-;16018:36;-1:-1:-1;16065:13:0;16081:22;:5;16091:11;16081:9;:22::i;:::-;16065:38;-1:-1:-1;16114:23:0;16140:28;16065:38;16140:17;:7;16152:4;16140:11;:17::i;:28::-;16187:7;;;;-1:-1:-1;16213:4:0;;-1:-1:-1;15692:534:0;;-1:-1:-1;;;;;;;15692:534:0:o;2699:246::-;2757:7;2781:1;2786;2781:6;2777:47;;-1:-1:-1;2811:1:0;2804:8;;2777:47;2834:9;2846:5;2850:1;2846;:5;:::i;:::-;2834:17;-1:-1:-1;2879:1:0;2870:5;2874:1;2834:17;2870:5;:::i;:::-;:10;2862:56;;;;-1:-1:-1;;;2862:56:0;;15505:2:1;2862:56:0;;;15487:21:1;15544:2;15524:18;;;15517:30;15583:34;15563:18;;;15556:62;-1:-1:-1;;;15634:18:1;;;15627:31;15675:19;;2862:56:0;15303: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;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1770:456::-;1847:6;1855;1863;1916:2;1904:9;1895:7;1891:23;1887:32;1884:52;;;1932:1;1929;1922:12;1884:52;1971:9;1958:23;1990:31;2015:5;1990:31;:::i;:::-;2040:5;-1:-1:-1;2097:2:1;2082:18;;2069:32;2110:33;2069:32;2110:33;:::i;:::-;1770:456;;2162:7;;-1:-1:-1;;;2216:2:1;2201:18;;;;2188:32;;1770:456::o;2628:247::-;2687:6;2740:2;2728:9;2719:7;2715:23;2711:32;2708:52;;;2756:1;2753;2746:12;2708:52;2795:9;2782:23;2814:31;2839:5;2814:31;:::i;2880:160::-;2945:20;;3001:13;;2994:21;2984:32;;2974:60;;3030:1;3027;3020:12;3045:180;3101:6;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3193:26;3209:9;3193:26;:::i;3230:180::-;3289:6;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;3381:23:1;;3230:180;-1:-1:-1;3230:180:1:o;3415:127::-;3476:10;3471:3;3467:20;3464:1;3457:31;3507:4;3504:1;3497:15;3531:4;3528:1;3521:15;3547:1191;3637:6;3645;3698:2;3686:9;3677:7;3673:23;3669:32;3666:52;;;3714:1;3711;3704:12;3666:52;3754:9;3741:23;3783:18;3824:2;3816:6;3813:14;3810:34;;;3840:1;3837;3830:12;3810:34;3878:6;3867:9;3863:22;3853:32;;3923:7;3916:4;3912:2;3908:13;3904:27;3894:55;;3945:1;3942;3935:12;3894:55;3981:2;3968:16;4003:4;4026:2;4022;4019:10;4016:36;;;4032:18;;:::i;:::-;4078:2;4075:1;4071:10;4110:2;4104:9;4173:2;4169:7;4164:2;4160;4156:11;4152:25;4144:6;4140:38;4228:6;4216:10;4213:22;4208:2;4196:10;4193:18;4190:46;4187:72;;;4239:18;;:::i;:::-;4275:2;4268:22;4325:18;;;4359:15;;;;-1:-1:-1;4401:11:1;;;4397:20;;;4429:19;;;4426:39;;;4461:1;4458;4451:12;4426:39;4485:11;;;;4505:148;4521:6;4516:3;4513:15;4505:148;;;4587:23;4606:3;4587:23;:::i;:::-;4575:36;;4538:12;;;;4631;;;;4505:148;;;4672:6;-1:-1:-1;4697:35:1;;-1:-1:-1;4713:18:1;;;4697:35;:::i;:::-;4687:45;;;;;;3547:1191;;;;;:::o;4743:385::-;4829:6;4837;4845;4853;4906:3;4894:9;4885:7;4881:23;4877:33;4874:53;;;4923:1;4920;4913:12;4874:53;-1:-1:-1;;4946:23:1;;;5016:2;5001:18;;4988:32;;-1:-1:-1;5067:2:1;5052:18;;5039:32;;5118:2;5103:18;5090:32;;-1:-1:-1;4743:385:1;-1:-1:-1;4743:385:1:o;5133:689::-;5225:6;5233;5241;5294:2;5282:9;5273:7;5269:23;5265:32;5262:52;;;5310:1;5307;5300:12;5262:52;5350:9;5337:23;5379:18;5420:2;5412:6;5409:14;5406:34;;;5436:1;5433;5426:12;5406:34;5474:6;5463:9;5459:22;5449:32;;5519:7;5512:4;5508:2;5504:13;5500:27;5490:55;;5541:1;5538;5531:12;5490:55;5581:2;5568:16;5607:2;5599:6;5596:14;5593:34;;;5623:1;5620;5613:12;5593:34;5678:7;5671:4;5661:6;5658:1;5654:14;5650:2;5646:23;5642:34;5639:47;5636:67;;;5699:1;5696;5689:12;5636:67;5730:4;5722:13;;;;-1:-1:-1;5754:6:1;-1:-1:-1;5779:37:1;;5795:20;;;-1:-1:-1;5779:37:1;:::i;:::-;5769:47;;5133:689;;;;;:::o;5827:388::-;5895:6;5903;5956:2;5944:9;5935:7;5931:23;5927:32;5924:52;;;5972:1;5969;5962:12;5924:52;6011:9;5998:23;6030:31;6055:5;6030:31;:::i;:::-;6080:5;-1:-1:-1;6137:2:1;6122:18;;6109:32;6150:33;6109:32;6150:33;:::i;:::-;6202:7;6192:17;;;5827:388;;;;;:::o;6220:356::-;6422:2;6404:21;;;6441:18;;;6434:30;6500:34;6495:2;6480:18;;6473:62;6567:2;6552:18;;6220:356::o;6581:127::-;6642:10;6637:3;6633:20;6630:1;6623:31;6673:4;6670:1;6663:15;6697:4;6694:1;6687:15;6713:127;6774:10;6769:3;6765:20;6762:1;6755:31;6805:4;6802:1;6795:15;6829:4;6826:1;6819:15;6845:135;6884:3;6905:17;;;6902:43;;6925:18;;:::i;:::-;-1:-1:-1;6972:1:1;6961:13;;6845:135::o;12233:125::-;12298:9;;;12319:10;;;12316:36;;;12332:18;;:::i;12767:128::-;12834:9;;;12855:11;;;12852:37;;;12869:18;;:::i;12900:217::-;12940:1;12966;12956:132;;13010:10;13005:3;13001:20;12998:1;12991:31;13045:4;13042:1;13035:15;13073:4;13070:1;13063:15;12956:132;-1:-1:-1;13102:9:1;;12900:217::o;13533:251::-;13603:6;13656:2;13644:9;13635:7;13631:23;13627:32;13624:52;;;13672:1;13669;13662:12;13624:52;13704:9;13698:16;13723:31;13748:5;13723:31;:::i;13789:980::-;14051:4;14099:3;14088:9;14084:19;14130:6;14119:9;14112:25;14156:2;14194:6;14189:2;14178:9;14174:18;14167:34;14237:3;14232:2;14221:9;14217:18;14210:31;14261:6;14296;14290:13;14327:6;14319;14312:22;14365:3;14354:9;14350:19;14343:26;;14404:2;14396:6;14392:15;14378:29;;14425:1;14435:195;14449:6;14446:1;14443:13;14435:195;;;14514:13;;-1:-1:-1;;;;;14510:39:1;14498:52;;14605:15;;;;14570:12;;;;14546:1;14464:9;14435:195;;;-1:-1:-1;;;;;;;14686:32:1;;;;14681:2;14666:18;;14659:60;-1:-1:-1;;;14750:3:1;14735:19;14728:35;14647:3;13789:980;-1:-1:-1;;;13789:980:1:o;15130:168::-;15203:9;;;15234;;15251:15;;;15245:22;;15231:37;15221:71;;15272:18;;:::i

Swarm Source

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