ETH Price: $3,342.19 (+0.52%)

Token

Doge Origin (KABOSU)
 

Overview

Max Total Supply

420,690,000,000 KABOSU

Holders

165

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*联合国银行.eth
Balance
120,000,000 KABOSU

Value
$0.00
0x1aB1C070c7F1958dbFC5537340cD8056580c43FC
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:
DOGEORIGIN

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
Doge Origin - $KABOSU

You know Kabosu, the Shiba Inu that sparked the legendary DOGE meme. 🐶 But did you know she’s named after a citrus fruit? 🍋 The Kabosu—sweet, unique, and unforgettable, just like the dog herself.

Now, we're bringing her story full circle with $KABOSU on Ethereum—a tribute to the meme that started it all and the sweet origin behind it.

Be a part of the $KABOSU journey and celebrate the roots of the meme coin revolution! 🚀

Socials:

Telegram : https://t.me/DogeoriginETH
Meme Channel : https://t.me/DogeOriginMemes
Twitter : https://x.com/DogeoriginETH  
Medium : https://medium.com/@DogeOriginKabosu
Website : https://kabosu.quest
*/

pragma solidity 0.8.23;

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

interface IToken {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

contract OwnerControl is Context {
    address private contractOwner;
    event OwnershipChanged(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        contractOwner = msgSender;
        emit OwnershipChanged(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return contractOwner;
    }

    modifier onlyContractOwner() {
        require(contractOwner == _msgSender(), "OwnerControl: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyContractOwner {
        emit OwnershipChanged(contractOwner, address(0));
        contractOwner = address(0);
        remove_Max_Limits();
    }

    function remove_Max_Limits() internal virtual {}

    function changeOwnership(address newOwner) public virtual onlyContractOwner {
        require(newOwner != address(0), "OwnerControl: new owner is the zero address");
        emit OwnershipChanged(contractOwner, newOwner);
        contractOwner = newOwner;
    }
}

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

interface IUniswapRouter {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract DOGEORIGIN is Context, IToken, OwnerControl {
    using MathLib for uint256;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private allowances;
    mapping (address => bool) private exAddrs;
    mapping (uint256 => uint256) private buyTxns_Count; 
    address payable private fee_Wallet_Addr;


    struct Fees {
        uint256 iBFee;
        uint256 iSFee;
        uint256 eBFee;
        uint256 eSFee;
    }

    struct Threshold {
        uint256 thresBFee;
        uint256 thresSFee;
        uint256 swapThresL;
    }
    
    uint256 private initialBlock = 0; uint256 private total_Buys_Count = 0; 
    uint256 private total_Sells_Count = 0; uint256 private lastSellBlock = 0;


    uint8 private constant DECIMALS = 9;
    uint256 private constant TOTAL_SUPPLY = 420690000000 * 10 ** DECIMALS;
    string private constant NAME = unicode"Doge Origin";
    string private constant SYMBOL = unicode"KABOSU";
    
    uint256 public maxTransactionAmount = 4206900000 * 10 ** DECIMALS;
    uint256 public maxWalletSize = 4206900000 * 10 ** DECIMALS;
    uint256 public swapFeeThreshold = 4200000000 * 10 ** DECIMALS;
    uint256 public feeSwapLimit = 4206900000 * 10 ** DECIMALS;

    IUniswapRouter private uniswapRouter;
    address public uniswapPair;
    bool private isTradingOpen;
    uint256 public maxCaNum = 3;
    bool private isSwapping = false;
    bool private swapEnabled = false;
    bool public swapCaNum = true;

    event MaxTransactionAmountUpdated(uint256 maxTransactionAmount);
    
    modifier swapLock {
        isSwapping = true;
        _;
        isSwapping = false;
    }

    constructor() {
        fee_Wallet_Addr = payable(0x1B5D4FA6799046B403b12bC96D910D1497529d6C);
        balances[_msgSender()] = TOTAL_SUPPLY;
        exAddrs[owner()] = true;
        exAddrs[address(this)] = true;
        exAddrs[address(uniswapPair)] = true;
        
        emit Transfer(address(0), _msgSender(), TOTAL_SUPPLY);
    }

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(_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) {
        _setApproval(_msgSender(), spender, amount);
        return true;
    }

    Fees private feeInfo = Fees(20, 20, 0, 0);
    Threshold private thresInfo = Threshold(40, 40, 40);

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(sender, recipient, amount);
        _setApproval(sender, _msgSender(), allowances[sender][_msgSender()].safeSub(amount, "transfer exceeds allowance"));
        return true;
    }

    function _setApproval(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "approve from zero address");
        require(spender != address(0), "approve to zero address");
        allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _executeTransfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from zero address");
        require(to != address(0), "transfer to zero address");
        require(amount > 0, "transfer amount must be greater than zero");
        
        uint256 feeAmount = 0;

        if (from != owner() && to != owner()) {
            feeAmount = amount.safeMul((total_Buys_Count > thresInfo.thresBFee) ? feeInfo.eBFee : feeInfo.iBFee).safeDiv(100);

            if (block.number == initialBlock) {
                require(buyTxns_Count[block.number] < 40, "exceeds buy limit for initial block.");
                buyTxns_Count[block.number]++;
            }

            if (from == uniswapPair && to != address(uniswapRouter) && !exAddrs[to]) {
                require(amount <= maxTransactionAmount, "exceeds max transaction amount.");
                require(balanceOf(to) + amount <= maxWalletSize, "exceeds max wallet size.");
                total_Buys_Count++;
            }

            if (to != uniswapPair && !exAddrs[to]) {
                require(balanceOf(to) + amount <= maxWalletSize, "exceeds max wallet size.");
            }

            if (to == uniswapPair && from != address(this)) {
                feeAmount = amount.safeMul((total_Buys_Count > thresInfo.thresSFee) ? feeInfo.eSFee : feeInfo.iSFee).safeDiv(100);
            }

            if (from != uniswapPair && to != uniswapPair && from != address(this)) {
                feeAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (swapCaNum && !isSwapping && to == uniswapPair && swapEnabled && contractTokenBalance > swapFeeThreshold && total_Buys_Count > thresInfo.swapThresL) {
                if (block.number > lastSellBlock) {
                    total_Sells_Count = 0;
                }
                require(total_Sells_Count < maxCaNum, "CA balance sell limit reached");
                _swapTokensForEth(min(amount, min(contractTokenBalance, feeSwapLimit)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                total_Sells_Count++;
                lastSellBlock = block.number;
            } else if (!isSwapping && to == uniswapPair && swapEnabled && contractTokenBalance > swapFeeThreshold && total_Buys_Count > thresInfo.swapThresL) {
                _swapTokensForEth(min(amount, min(contractTokenBalance, feeSwapLimit)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (feeAmount > 0) {
            balances[address(this)] = balances[address(this)].safeAdd(feeAmount);
            emit Transfer(from, address(this), feeAmount);
        }
        balances[from] = balances[from].safeSub(amount);
        balances[to] = balances[to].safeAdd(amount.safeSub(feeAmount));
        emit Transfer(from, to, amount.safeSub(feeAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function _swapTokensForEth(uint256 tokenAmount) private swapLock {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _setApproval(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function configThresLimit(bool swapStatus, uint256 swapAmount, bool caStatus, uint256 caAmount) external onlyContractOwner {
        swapEnabled = swapStatus;
        feeSwapLimit = swapAmount;
        swapCaNum = caStatus;
        maxCaNum = caAmount;
    }

    function rescue_StuckETH() external onlyContractOwner {
        payable(fee_Wallet_Addr).transfer(address(this).balance);
    }

    function rescue_Any_ERC20Tokens(address tokenAddr, uint amount) external onlyContractOwner {
        IToken(tokenAddr).transfer(fee_Wallet_Addr, amount);
    }

    function remove_Max_Limits() internal override {
        maxTransactionAmount = TOTAL_SUPPLY;
        maxWalletSize = TOTAL_SUPPLY;
        emit MaxTransactionAmountUpdated(TOTAL_SUPPLY);
    }

    function enableTrading() external onlyContractOwner() {
        require(!isTradingOpen, "trading is already open");
        uniswapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _setApproval(address(this), address(uniswapRouter), TOTAL_SUPPLY);
        uniswapPair = IUniswapFactory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        exAddrs[address(uniswapPair)] = true;
        uniswapRouter.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IToken(uniswapPair).approve(address(uniswapRouter), type(uint).max);
        swapEnabled = true;
        isTradingOpen = true;
        initialBlock = block.number;
    }

    receive() external payable {}
}

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":"maxTransactionAmount","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapStatus","type":"bool"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"bool","name":"caStatus","type":"bool"},{"internalType":"uint256","name":"caAmount","type":"uint256"}],"name":"configThresLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCaNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue_Any_ERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescue_StuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapCaNum","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6006555f6007555f6008555f6009556009600a62000024919062000399565b620000349063fac03320620003b0565b600a556009600a62000047919062000399565b620000579063fac03320620003b0565b600b55620000686009600a62000399565b620000789063fa56ea00620003b0565b600c55620000896009600a62000399565b620000999063fac03320620003b0565b600d5560036010556011805462ffffff19166201000017905560408051608081018252601480825260208083018290525f838501819052606093840181905260128390556013839055918290556015919091558251918201835260288083529082018190529101819052601681905560178190556018553480156200011c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908290a350600580546001600160a01b031916731b5d4fa6799046b403b12bc96d910d1497529d6c179055620001916009600a62000399565b620001a2906461f313f880620003b0565b335f908152600160208190526040822092909255600390620001cb5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600f54909116835291208054909216179055620002293390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002626009600a62000399565b62000273906461f313f880620003b0565b60405190815260200160405180910390a3620003ca565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002de57815f1904821115620002c257620002c26200028a565b80851615620002d057918102915b93841c9390800290620002a3565b509250929050565b5f82620002f65750600162000393565b816200030457505f62000393565b81600181146200031d5760028114620003285762000348565b600191505062000393565b60ff8411156200033c576200033c6200028a565b50506001821b62000393565b5060208310610133831016604e8410600b84101617156200036d575081810a62000393565b6200037983836200029e565b805f19048211156200038f576200038f6200028a565b0290505b92915050565b5f620003a960ff841683620002e6565b9392505050565b80820281158282048414176200039357620003936200028a565b611c8c80620003d85f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610391578063c816841b146103b0578063c8c8ebe4146103cf578063d5b3173e146103e4578063dd62ed3e146103f9578063fcb4082d1461043d575f80fd5b8063715018a6146102d75780638a8c523c146102eb5780638da5cb5b146102ff5780638f3fa8601461032f57806395d89b4114610344578063a5de50f914610372575f80fd5b806323b872dd1161010457806323b872dd14610214578063288db683146102335780632af4c31e14610248578063313ce5671461026957806345220c091461028457806370a08231146102a3575f80fd5b806306fdde031461014a578063095ea7b31461018f57806318160ddd146101be5780631a4dcd85146101e05780631e15007f146101ff575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600b81526a2237b3b29027b934b3b4b760a91b60208201525b6040516101869190611849565b60405180910390f35b34801561019a575f80fd5b506101ae6101a93660046118a9565b610451565b6040519015158152602001610186565b3480156101c9575f80fd5b506101d2610467565b604051908152602001610186565b3480156101eb575f80fd5b506011546101ae9062010000900460ff1681565b34801561020a575f80fd5b506101d2600c5481565b34801561021f575f80fd5b506101ae61022e3660046118d3565b610488565b34801561023e575f80fd5b506101d2600d5481565b348015610253575f80fd5b50610267610262366004611911565b61052d565b005b348015610274575f80fd5b5060405160098152602001610186565b34801561028f575f80fd5b5061026761029e3660046118a9565b610622565b3480156102ae575f80fd5b506101d26102bd366004611911565b6001600160a01b03165f9081526001602052604090205490565b3480156102e2575f80fd5b506102676106c4565b3480156102f6575f80fd5b5061026761073d565b34801561030a575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561033a575f80fd5b506101d2600b5481565b34801561034f575f80fd5b506040805180820190915260068152654b41424f535560d01b6020820152610179565b34801561037d575f80fd5b5061026761038c366004611939565b610b10565b34801561039c575f80fd5b506101ae6103ab3660046118a9565b610b72565b3480156103bb575f80fd5b50600f54610317906001600160a01b031681565b3480156103da575f80fd5b506101d2600a5481565b3480156103ef575f80fd5b506101d260105481565b348015610404575f80fd5b506101d261041336600461197e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610448575f80fd5b50610267610b7e565b5f61045d338484610be0565b5060015b92915050565b5f6104746009600a611aa9565b610483906461f313f880611ab7565b905090565b5f610494848484610cec565b610523843361051e856040518060400160405280601a81526020017f7472616e73666572206578636565647320616c6c6f77616e636500000000000081525060025f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6104fe3390565b6001600160a01b0316815260208101919091526040015f20549190611447565b610be0565b5060019392505050565b5f546001600160a01b0316331461055f5760405162461bcd60e51b815260040161055690611ace565b60405180910390fd5b6001600160a01b0381166105c95760405162461bcd60e51b815260206004820152602b60248201527f4f776e6572436f6e74726f6c3a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610556565b5f80546040516001600160a01b03808516939216917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461064b5760405162461bcd60e51b815260040161055690611ace565b60055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af115801561069b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bf9190611b13565b505050565b5f546001600160a01b031633146106ed5760405162461bcd60e51b815260040161055690611ace565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b031916905561073b61147f565b565b5f546001600160a01b031633146107665760405162461bcd60e51b815260040161055690611ace565b600f54600160a01b900460ff16156107c05760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610556565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561080a9030906107fb6009600a611aa9565b61051e906461f313f880611ab7565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087e9190611b2e565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109019190611b2e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561094b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096f9190611b2e565b600f80546001600160a01b039283166001600160a01b031990911681179091555f908152600360205260409020805460ff19166001179055600e541663f305d71947306109d0816001600160a01b03165f9081526001602052604090205490565b5f806109e35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a49573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a6e9190611b49565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610ac3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae79190611b13565b506011805461ff001916610100179055600f805460ff60a01b1916600160a01b17905543600655565b5f546001600160a01b03163314610b395760405162461bcd60e51b815260040161055690611ace565b60118054600d9490945562ffff00199093166101009415159490940262ff00001916939093176201000091151591909102179055601055565b5f61045d338484610cec565b5f546001600160a01b03163314610ba75760405162461bcd60e51b815260040161055690611ace565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610bdd573d5f803e3d5ffd5b50565b6001600160a01b038316610c365760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f2061646472657373000000000000006044820152606401610556565b6001600160a01b038216610c8c5760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f20616464726573730000000000000000006044820152606401610556565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d425760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f20616464726573730000000000006044820152606401610556565b6001600160a01b038216610d985760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610556565b5f8111610df95760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610556565b5f80546001600160a01b03858116911614801590610e2457505f546001600160a01b03848116911614155b1561130a57610e576064610e5160165f015460075411610e4657601254610e4a565b6014545b859061150c565b90611587565b90506006544303610eec57435f90815260046020526040902054602811610ecc5760405162461bcd60e51b8152602060048201526024808201527f6578636565647320627579206c696d697420666f7220696e697469616c20626c60448201526337b1b59760e11b6064820152608401610556565b435f908152600460205260408120805491610ee683611b74565b91905055505b600f546001600160a01b038581169116148015610f175750600e546001600160a01b03848116911614155b8015610f3b57506001600160a01b0383165f9081526003602052604090205460ff16155b1561101c57600a54821115610f925760405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d6178207472616e73616374696f6e20616d6f756e742e006044820152606401610556565b600b5482610fb4856001600160a01b03165f9081526001602052604090205490565b610fbe9190611b8c565b11156110075760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b6044820152606401610556565b60078054905f61101683611b74565b91905055505b600f546001600160a01b0384811691161480159061105257506001600160a01b0383165f9081526003602052604090205460ff16155b156110cc57600b5482611079856001600160a01b03165f9081526001602052604090205490565b6110839190611b8c565b11156110cc5760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b6044820152606401610556565b600f546001600160a01b0384811691161480156110f257506001600160a01b0384163014155b156111225761111f6064610e516016600101546007541161111557601354610e4a565b601554859061150c565b90505b600f546001600160a01b0385811691161480159061114e5750600f546001600160a01b03848116911614155b801561116357506001600160a01b0384163014155b1561116b57505f5b305f9081526001602052604090205460115462010000900460ff168015611195575060115460ff16155b80156111ae5750600f546001600160a01b038581169116145b80156111c15750601154610100900460ff165b80156111ce5750600c5481115b80156111dd5750601854600754115b1561128f576009544311156111f1575f6008555b601054600854106112445760405162461bcd60e51b815260206004820152601d60248201527f43412062616c616e63652073656c6c206c696d697420726561636865640000006044820152606401610556565b61126161125c8461125784600d546115c8565b6115c8565b6115dc565b4780156112715761127147611743565b60088054905f61128083611b74565b90915550504360095550611308565b60115460ff161580156112af5750600f546001600160a01b038581169116145b80156112c25750601154610100900460ff165b80156112cf5750600c5481115b80156112de5750601854600754115b15611308576112f661125c8461125784600d546115c8565b4780156113065761130647611743565b505b505b801561138257305f90815260016020526040902054611329908261177e565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113799085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546113a490836117dc565b6001600160a01b0385165f908152600160205260409020556113e76113c983836117dc565b6001600160a01b0385165f908152600160205260409020549061177e565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61143085856117dc565b60405190815260200160405180910390a350505050565b5f818484111561146a5760405162461bcd60e51b81526004016105569190611849565b505f6114768486611b9f565b95945050505050565b61148b6009600a611aa9565b61149a906461f313f880611ab7565b600a9081556114ab90600990611aa9565b6114ba906461f313f880611ab7565b600b557f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac6114ea6009600a611aa9565b6114f9906461f313f880611ab7565b60405190815260200160405180910390a1565b5f825f0361151b57505f610461565b5f6115268385611ab7565b9050826115338583611bb2565b146115805760405162461bcd60e51b815260206004820181905260248201527f4d6174684c69623a206d756c7469706c69636174696f6e206f766572666c6f776044820152606401610556565b9392505050565b5f61158083836040518060400160405280601981526020017f4d6174684c69623a206469766973696f6e206279207a65726f0000000000000081525061181d565b5f8183116115d65782611580565b50919050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161c5761161c611bd1565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611673573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116979190611b2e565b816001815181106116aa576116aa611bd1565b6001600160a01b039283166020918202929092010152600e546116d09130911684610be0565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117089085905f90869030904290600401611be5565b5f604051808303815f87803b15801561171f575f80fd5b505af1158015611731573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561177a573d5f803e3d5ffd5b5050565b5f8061178a8385611b8c565b9050838110156115805760405162461bcd60e51b815260206004820152601a60248201527f4d6174684c69623a206164646974696f6e206f766572666c6f770000000000006044820152606401610556565b5f61158083836040518060400160405280601d81526020017f4d6174684c69623a207375627472616374696f6e206f766572666c6f77000000815250611447565b5f818361183d5760405162461bcd60e51b81526004016105569190611849565b505f6114768486611bb2565b5f602080835283518060208501525f5b8181101561187557858101830151858201604001528201611859565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bdd575f80fd5b5f80604083850312156118ba575f80fd5b82356118c581611895565b946020939093013593505050565b5f805f606084860312156118e5575f80fd5b83356118f081611895565b9250602084013561190081611895565b929592945050506040919091013590565b5f60208284031215611921575f80fd5b813561158081611895565b8015158114610bdd575f80fd5b5f805f806080858703121561194c575f80fd5b84356119578161192c565b935060208501359250604085013561196e8161192c565b9396929550929360600135925050565b5f806040838503121561198f575f80fd5b823561199a81611895565b915060208301356119aa81611895565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a0357815f19048211156119e9576119e96119b5565b808516156119f657918102915b93841c93908002906119ce565b509250929050565b5f82611a1957506001610461565b81611a2557505f610461565b8160018114611a3b5760028114611a4557611a61565b6001915050610461565b60ff841115611a5657611a566119b5565b50506001821b610461565b5060208310610133831016604e8410600b8410161715611a84575081810a610461565b611a8e83836119c9565b805f1904821115611aa157611aa16119b5565b029392505050565b5f61158060ff841683611a0b565b8082028115828204841417610461576104616119b5565b60208082526025908201527f4f776e6572436f6e74726f6c3a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b5f60208284031215611b23575f80fd5b81516115808161192c565b5f60208284031215611b3e575f80fd5b815161158081611895565b5f805f60608486031215611b5b575f80fd5b8351925060208401519150604084015190509250925092565b5f60018201611b8557611b856119b5565b5060010190565b80820180821115610461576104616119b5565b81810381811115610461576104616119b5565b5f82611bcc57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c355784516001600160a01b031683529383019391830191600101611c10565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201fe5fb6575280fc10fe19ac617a97f48c2e6925dd5556c800dae0b327733e11864736f6c63430008170033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610391578063c816841b146103b0578063c8c8ebe4146103cf578063d5b3173e146103e4578063dd62ed3e146103f9578063fcb4082d1461043d575f80fd5b8063715018a6146102d75780638a8c523c146102eb5780638da5cb5b146102ff5780638f3fa8601461032f57806395d89b4114610344578063a5de50f914610372575f80fd5b806323b872dd1161010457806323b872dd14610214578063288db683146102335780632af4c31e14610248578063313ce5671461026957806345220c091461028457806370a08231146102a3575f80fd5b806306fdde031461014a578063095ea7b31461018f57806318160ddd146101be5780631a4dcd85146101e05780631e15007f146101ff575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600b81526a2237b3b29027b934b3b4b760a91b60208201525b6040516101869190611849565b60405180910390f35b34801561019a575f80fd5b506101ae6101a93660046118a9565b610451565b6040519015158152602001610186565b3480156101c9575f80fd5b506101d2610467565b604051908152602001610186565b3480156101eb575f80fd5b506011546101ae9062010000900460ff1681565b34801561020a575f80fd5b506101d2600c5481565b34801561021f575f80fd5b506101ae61022e3660046118d3565b610488565b34801561023e575f80fd5b506101d2600d5481565b348015610253575f80fd5b50610267610262366004611911565b61052d565b005b348015610274575f80fd5b5060405160098152602001610186565b34801561028f575f80fd5b5061026761029e3660046118a9565b610622565b3480156102ae575f80fd5b506101d26102bd366004611911565b6001600160a01b03165f9081526001602052604090205490565b3480156102e2575f80fd5b506102676106c4565b3480156102f6575f80fd5b5061026761073d565b34801561030a575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561033a575f80fd5b506101d2600b5481565b34801561034f575f80fd5b506040805180820190915260068152654b41424f535560d01b6020820152610179565b34801561037d575f80fd5b5061026761038c366004611939565b610b10565b34801561039c575f80fd5b506101ae6103ab3660046118a9565b610b72565b3480156103bb575f80fd5b50600f54610317906001600160a01b031681565b3480156103da575f80fd5b506101d2600a5481565b3480156103ef575f80fd5b506101d260105481565b348015610404575f80fd5b506101d261041336600461197e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610448575f80fd5b50610267610b7e565b5f61045d338484610be0565b5060015b92915050565b5f6104746009600a611aa9565b610483906461f313f880611ab7565b905090565b5f610494848484610cec565b610523843361051e856040518060400160405280601a81526020017f7472616e73666572206578636565647320616c6c6f77616e636500000000000081525060025f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6104fe3390565b6001600160a01b0316815260208101919091526040015f20549190611447565b610be0565b5060019392505050565b5f546001600160a01b0316331461055f5760405162461bcd60e51b815260040161055690611ace565b60405180910390fd5b6001600160a01b0381166105c95760405162461bcd60e51b815260206004820152602b60248201527f4f776e6572436f6e74726f6c3a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610556565b5f80546040516001600160a01b03808516939216917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461064b5760405162461bcd60e51b815260040161055690611ace565b60055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af115801561069b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bf9190611b13565b505050565b5f546001600160a01b031633146106ed5760405162461bcd60e51b815260040161055690611ace565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b031916905561073b61147f565b565b5f546001600160a01b031633146107665760405162461bcd60e51b815260040161055690611ace565b600f54600160a01b900460ff16156107c05760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610556565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561080a9030906107fb6009600a611aa9565b61051e906461f313f880611ab7565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087e9190611b2e565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109019190611b2e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561094b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096f9190611b2e565b600f80546001600160a01b039283166001600160a01b031990911681179091555f908152600360205260409020805460ff19166001179055600e541663f305d71947306109d0816001600160a01b03165f9081526001602052604090205490565b5f806109e35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a49573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a6e9190611b49565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610ac3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae79190611b13565b506011805461ff001916610100179055600f805460ff60a01b1916600160a01b17905543600655565b5f546001600160a01b03163314610b395760405162461bcd60e51b815260040161055690611ace565b60118054600d9490945562ffff00199093166101009415159490940262ff00001916939093176201000091151591909102179055601055565b5f61045d338484610cec565b5f546001600160a01b03163314610ba75760405162461bcd60e51b815260040161055690611ace565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610bdd573d5f803e3d5ffd5b50565b6001600160a01b038316610c365760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f2061646472657373000000000000006044820152606401610556565b6001600160a01b038216610c8c5760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f20616464726573730000000000000000006044820152606401610556565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d425760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f20616464726573730000000000006044820152606401610556565b6001600160a01b038216610d985760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610556565b5f8111610df95760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610556565b5f80546001600160a01b03858116911614801590610e2457505f546001600160a01b03848116911614155b1561130a57610e576064610e5160165f015460075411610e4657601254610e4a565b6014545b859061150c565b90611587565b90506006544303610eec57435f90815260046020526040902054602811610ecc5760405162461bcd60e51b8152602060048201526024808201527f6578636565647320627579206c696d697420666f7220696e697469616c20626c60448201526337b1b59760e11b6064820152608401610556565b435f908152600460205260408120805491610ee683611b74565b91905055505b600f546001600160a01b038581169116148015610f175750600e546001600160a01b03848116911614155b8015610f3b57506001600160a01b0383165f9081526003602052604090205460ff16155b1561101c57600a54821115610f925760405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d6178207472616e73616374696f6e20616d6f756e742e006044820152606401610556565b600b5482610fb4856001600160a01b03165f9081526001602052604090205490565b610fbe9190611b8c565b11156110075760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b6044820152606401610556565b60078054905f61101683611b74565b91905055505b600f546001600160a01b0384811691161480159061105257506001600160a01b0383165f9081526003602052604090205460ff16155b156110cc57600b5482611079856001600160a01b03165f9081526001602052604090205490565b6110839190611b8c565b11156110cc5760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b6044820152606401610556565b600f546001600160a01b0384811691161480156110f257506001600160a01b0384163014155b156111225761111f6064610e516016600101546007541161111557601354610e4a565b601554859061150c565b90505b600f546001600160a01b0385811691161480159061114e5750600f546001600160a01b03848116911614155b801561116357506001600160a01b0384163014155b1561116b57505f5b305f9081526001602052604090205460115462010000900460ff168015611195575060115460ff16155b80156111ae5750600f546001600160a01b038581169116145b80156111c15750601154610100900460ff165b80156111ce5750600c5481115b80156111dd5750601854600754115b1561128f576009544311156111f1575f6008555b601054600854106112445760405162461bcd60e51b815260206004820152601d60248201527f43412062616c616e63652073656c6c206c696d697420726561636865640000006044820152606401610556565b61126161125c8461125784600d546115c8565b6115c8565b6115dc565b4780156112715761127147611743565b60088054905f61128083611b74565b90915550504360095550611308565b60115460ff161580156112af5750600f546001600160a01b038581169116145b80156112c25750601154610100900460ff165b80156112cf5750600c5481115b80156112de5750601854600754115b15611308576112f661125c8461125784600d546115c8565b4780156113065761130647611743565b505b505b801561138257305f90815260016020526040902054611329908261177e565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113799085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546113a490836117dc565b6001600160a01b0385165f908152600160205260409020556113e76113c983836117dc565b6001600160a01b0385165f908152600160205260409020549061177e565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61143085856117dc565b60405190815260200160405180910390a350505050565b5f818484111561146a5760405162461bcd60e51b81526004016105569190611849565b505f6114768486611b9f565b95945050505050565b61148b6009600a611aa9565b61149a906461f313f880611ab7565b600a9081556114ab90600990611aa9565b6114ba906461f313f880611ab7565b600b557f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac6114ea6009600a611aa9565b6114f9906461f313f880611ab7565b60405190815260200160405180910390a1565b5f825f0361151b57505f610461565b5f6115268385611ab7565b9050826115338583611bb2565b146115805760405162461bcd60e51b815260206004820181905260248201527f4d6174684c69623a206d756c7469706c69636174696f6e206f766572666c6f776044820152606401610556565b9392505050565b5f61158083836040518060400160405280601981526020017f4d6174684c69623a206469766973696f6e206279207a65726f0000000000000081525061181d565b5f8183116115d65782611580565b50919050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161c5761161c611bd1565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611673573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116979190611b2e565b816001815181106116aa576116aa611bd1565b6001600160a01b039283166020918202929092010152600e546116d09130911684610be0565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117089085905f90869030904290600401611be5565b5f604051808303815f87803b15801561171f575f80fd5b505af1158015611731573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561177a573d5f803e3d5ffd5b5050565b5f8061178a8385611b8c565b9050838110156115805760405162461bcd60e51b815260206004820152601a60248201527f4d6174684c69623a206164646974696f6e206f766572666c6f770000000000006044820152606401610556565b5f61158083836040518060400160405280601d81526020017f4d6174684c69623a207375627472616374696f6e206f766572666c6f77000000815250611447565b5f818361183d5760405162461bcd60e51b81526004016105569190611849565b505f6114768486611bb2565b5f602080835283518060208501525f5b8181101561187557858101830151858201604001528201611859565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bdd575f80fd5b5f80604083850312156118ba575f80fd5b82356118c581611895565b946020939093013593505050565b5f805f606084860312156118e5575f80fd5b83356118f081611895565b9250602084013561190081611895565b929592945050506040919091013590565b5f60208284031215611921575f80fd5b813561158081611895565b8015158114610bdd575f80fd5b5f805f806080858703121561194c575f80fd5b84356119578161192c565b935060208501359250604085013561196e8161192c565b9396929550929360600135925050565b5f806040838503121561198f575f80fd5b823561199a81611895565b915060208301356119aa81611895565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a0357815f19048211156119e9576119e96119b5565b808516156119f657918102915b93841c93908002906119ce565b509250929050565b5f82611a1957506001610461565b81611a2557505f610461565b8160018114611a3b5760028114611a4557611a61565b6001915050610461565b60ff841115611a5657611a566119b5565b50506001821b610461565b5060208310610133831016604e8410600b8410161715611a84575081810a610461565b611a8e83836119c9565b805f1904821115611aa157611aa16119b5565b029392505050565b5f61158060ff841683611a0b565b8082028115828204841417610461576104616119b5565b60208082526025908201527f4f776e6572436f6e74726f6c3a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b5f60208284031215611b23575f80fd5b81516115808161192c565b5f60208284031215611b3e575f80fd5b815161158081611895565b5f805f60608486031215611b5b575f80fd5b8351925060208401519150604084015190509250925092565b5f60018201611b8557611b856119b5565b5060010190565b80820180821115610461576104616119b5565b81810381811115610461576104616119b5565b5f82611bcc57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c355784516001600160a01b031683529383019391830191600101611c10565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201fe5fb6575280fc10fe19ac617a97f48c2e6925dd5556c800dae0b327733e11864736f6c63430008170033

Deployed Bytecode Sourcemap

4604:9371:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6689:82;;;;;;;;;;-1:-1:-1;6759:4:0;;;;;;;;;;;;-1:-1:-1;;;6759:4:0;;;;6689:82;;;;;;;:::i;:::-;;;;;;;;7529:165;;;;;;;;;;-1:-1:-1;7529:165:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7529:165:0;1023:187:1;6963:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6963:100:0;1215:177:1;6120:28:0;;;;;;;;;;-1:-1:-1;6120:28:0;;;;;;;;;;;5766:61;;;;;;;;;;;;;;;;7810:313;;;;;;;;;;-1:-1:-1;7810:313:0;;;;;:::i;:::-;;:::i;5834:57::-;;;;;;;;;;;;;;;;3576:265;;;;;;;;;;-1:-1:-1;3576:265:0;;;;;:::i;:::-;;:::i;:::-;;6873:82;;;;;;;;;;-1:-1:-1;6873:82:0;;5426:1;2252:36:1;;2240:2;2225:18;6873:82:0;2110:184:1;12798:161:0;;;;;;;;;;-1:-1:-1;12798:161:0;;;;;:::i;:::-;;:::i;7071:118::-;;;;;;;;;;-1:-1:-1;7071:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;7164:17:0;7137:7;7164:17;;;:8;:17;;;;;;;7071:118;3316:196;;;;;;;;;;;;;:::i;13172:763::-;;;;;;;;;;;;;:::i;3075:86::-;;;;;;;;;;-1:-1:-1;3113:7:0;3140:13;-1:-1:-1;;;;;3140:13:0;3075:86;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3075:86:0;2299:203:1;5701:58:0;;;;;;;;;;;;;;;;6779:86;;;;;;;;;;-1:-1:-1;6851:6:0;;;;;;;;;;;;-1:-1:-1;;;6851:6:0;;;;6779:86;;12390:263;;;;;;;;;;-1:-1:-1;12390:263:0;;;;;:::i;:::-;;:::i;7197:174::-;;;;;;;;;;-1:-1:-1;7197:174:0;;;;;:::i;:::-;;:::i;5943:26::-;;;;;;;;;;-1:-1:-1;5943:26:0;;;;-1:-1:-1;;;;;5943:26:0;;;5629:65;;;;;;;;;;;;;;;;6009:27;;;;;;;;;;;;;;;;7379:142;;;;;;;;;;-1:-1:-1;7379:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;7487:17:0;;;7460:7;7487:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;7379:142;12661:129;;;;;;;;;;;;;:::i;7529:165::-;7604:4;7621:43;875:10;7648:7;7657:6;7621:12;:43::i;:::-;-1:-1:-1;7682:4:0;7529:165;;;;;:::o;6963:100::-;7016:7;5489:14;5426:1;5489:2;:14;:::i;:::-;5474:29;;:12;:29;:::i;:::-;7036:19;;6963:100;:::o;7810:313::-;7908:4;7925:43;7942:6;7950:9;7961:6;7925:16;:43::i;:::-;7979:114;7992:6;875:10;8014:78;8055:6;8014:78;;;;;;;;;;;;;;;;;:10;:18;8025:6;-1:-1:-1;;;;;8014:18:0;-1:-1:-1;;;;;8014:18:0;;;;;;;;;;;;:32;8033:12;875:10;;795:98;8033:12;-1:-1:-1;;;;;8014:32:0;;;;;;;;;;;;-1:-1:-1;8014:32:0;;;:78;:40;:78::i;:::-;7979:12;:114::i;:::-;-1:-1:-1;8111:4:0;7810:313;;;;;:::o;3576:265::-;3217:13;;-1:-1:-1;;;;;3217:13:0;875:10;3217:29;3209:79;;;;-1:-1:-1;;;3209:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;3671:22:0;::::1;3663:78;;;::::0;-1:-1:-1;;;3663:78:0;;5831:2:1;3663:78:0::1;::::0;::::1;5813:21:1::0;5870:2;5850:18;;;5843:30;5909:34;5889:18;;;5882:62;-1:-1:-1;;;5960:18:1;;;5953:41;6011:19;;3663:78:0::1;5629:407:1::0;3663:78:0::1;3774:13;::::0;;3757:41:::1;::::0;-1:-1:-1;;;;;3757:41:0;;::::1;::::0;3774:13;::::1;::::0;3757:41:::1;::::0;::::1;3809:13;:24:::0;;-1:-1:-1;;;;;;3809:24:0::1;-1:-1:-1::0;;;;;3809:24:0;;;::::1;::::0;;;::::1;::::0;;3576:265::o;12798:161::-;3217:13;;-1:-1:-1;;;;;3217:13:0;875:10;3217:29;3209:79;;;;-1:-1:-1;;;3209:79:0;;;;;;;:::i;:::-;12927:15:::1;::::0;12900:51:::1;::::0;-1:-1:-1;;;12900:51:0;;-1:-1:-1;;;;;12927:15:0;;::::1;12900:51;::::0;::::1;6223::1::0;6290:18;;;6283:34;;;12900:26:0;;::::1;::::0;::::1;::::0;6196:18:1;;12900:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12798:161:::0;;:::o;3316:196::-;3217:13;;-1:-1:-1;;;;;3217:13:0;875:10;3217:29;3209:79;;;;-1:-1:-1;;;3209:79:0;;;;;;;:::i;:::-;3434:1:::1;3411:13:::0;;3394:43:::1;::::0;-1:-1:-1;;;;;3411:13:0;;::::1;::::0;3394:43:::1;::::0;3434:1;;3394:43:::1;3472:1;3448:26:::0;;-1:-1:-1;;;;;;3448:26:0::1;::::0;;3485:19:::1;:17;:19::i;:::-;3316:196::o:0;13172:763::-;3217:13;;-1:-1:-1;;;;;3217:13:0;875:10;3217:29;3209:79;;;;-1:-1:-1;;;3209:79:0;;;;;;;:::i;:::-;13246:13:::1;::::0;-1:-1:-1;;;13246:13:0;::::1;;;13245:14;13237:50;;;::::0;-1:-1:-1;;;13237:50:0;;6780:2:1;13237:50:0::1;::::0;::::1;6762:21:1::0;6819:2;6799:18;;;6792:30;6858:25;6838:18;;;6831:53;6901:18;;13237:50:0::1;6578:347:1::0;13237:50:0::1;13298:13;:74:::0;;-1:-1:-1;;;;;;13298:74:0::1;13329:42;13298:74:::0;;::::1;::::0;;;13383:65:::1;::::0;13404:4:::1;::::0;5489:14:::1;5426:1;5489:2;:14;:::i;:::-;5474:29;::::0;:12:::1;:29;:::i;13383:65::-;13489:13;;;;;;;;;-1:-1:-1::0;;;;;13489:13:0::1;-1:-1:-1::0;;;;;13489:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13473:51:0::1;;13533:4;13540:13;;;;;;;;;-1:-1:-1::0;;;;;13540:13:0::1;-1:-1:-1::0;;;;;13540:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13473:88;::::0;-1:-1:-1;;;;;;13473:88:0::1;::::0;;;;;;-1:-1:-1;;;;;7416:15:1;;;13473:88:0::1;::::0;::::1;7398:34:1::0;7468:15;;7448:18;;;7441:43;7333:18;;13473:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13459:11;:102:::0;;-1:-1:-1;;;;;13459:102:0;;::::1;-1:-1:-1::0;;;;;;13459:102:0;;::::1;::::0;::::1;::::0;;;:11:::1;13572:29:::0;;;:7:::1;:29;::::0;;;;:36;;-1:-1:-1;;13572:36:0::1;13459:102:::0;13572:36:::1;::::0;;13619:13:::1;::::0;::::1;:29;13656:21;13687:4;13694:24;13687:4:::0;-1:-1:-1;;;;;7164:17:0;7137:7;7164:17;;;:8;:17;;;;;;;7071:118;13694:24:::1;13720:1;13723::::0;13726:7:::1;3113::::0;3140:13;-1:-1:-1;;;;;3140:13:0;;3075:86;13726:7:::1;13619:132;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13619:132:0;;;-1:-1:-1;;;;;7854:15:1;;;13619:132:0::1;::::0;::::1;7836:34:1::0;7886:18;;;7879:34;;;;7929:18;;;7922:34;;;;7972:18;;;7965:34;8036:15;;;8015:19;;;8008:44;13735:15:0::1;8068:19:1::0;;;8061:35;7770:19;;13619:132:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13769:11:0::1;::::0;13798:13:::1;::::0;13762:67:::1;::::0;-1:-1:-1;;;13762:67:0;;-1:-1:-1;;;;;13798:13:0;;::::1;13762:67;::::0;::::1;6223:51:1::0;-1:-1:-1;;6290:18:1;;;6283:34;13769:11:0;::::1;::::0;-1:-1:-1;13762:27:0::1;::::0;6196:18:1;;13762:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13840:11:0::1;:18:::0;;-1:-1:-1;;13840:18:0::1;;;::::0;;13869:13:::1;:20:::0;;-1:-1:-1;;;;13869:20:0::1;-1:-1:-1::0;;;13869:20:0::1;::::0;;13915:12:::1;13900;:27:::0;13172:763::o;12390:263::-;3217:13;;-1:-1:-1;;;;;3217:13:0;875:10;3217:29;3209:79;;;;-1:-1:-1;;;3209:79:0;;;;;;;:::i;:::-;12524:11:::1;:24:::0;;12559:12:::1;:25:::0;;;;-1:-1:-1;;12595:20:0;;;12524:24:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;12595:20:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;12626:8:::1;:19:::0;12390:263::o;7197:174::-;7275:4;7292:49;875:10;7323:9;7334:6;7292:16;:49::i;12661:129::-;3217:13;;-1:-1:-1;;;;;3217:13:0;875:10;3217:29;3209:79;;;;-1:-1:-1;;;3209:79:0;;;;;;;:::i;:::-;12734:15:::1;::::0;12726:56:::1;::::0;-1:-1:-1;;;;;12734:15:0;;::::1;::::0;12760:21:::1;12726:56:::0;::::1;;;::::0;12734:15:::1;12726:56:::0;12734:15;12726:56;12760:21;12734:15;12726:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12661:129::o:0;8131:316::-;-1:-1:-1;;;;;8228:19:0;;8220:57;;;;-1:-1:-1;;;8220:57:0;;8899:2:1;8220:57:0;;;8881:21:1;8938:2;8918:18;;;8911:30;8977:27;8957:18;;;8950:55;9022:18;;8220:57:0;8697:349:1;8220:57:0;-1:-1:-1;;;;;8296:21:0;;8288:57;;;;-1:-1:-1;;;8288:57:0;;9253:2:1;8288:57:0;;;9235:21:1;9292:2;9272:18;;;9265:30;9331:25;9311:18;;;9304:53;9374:18;;8288:57:0;9051:347:1;8288:57:0;-1:-1:-1;;;;;8356:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;:35;;;8407:32;;1361:25:1;;;8407:32:0;;1334:18:1;8407:32:0;;;;;;;8131:316;;;:::o;8455:3229::-;-1:-1:-1;;;;;8550:18:0;;8542:57;;;;-1:-1:-1;;;8542:57:0;;9605:2:1;8542:57:0;;;9587:21:1;9644:2;9624:18;;;9617:30;9683:28;9663:18;;;9656:56;9729:18;;8542:57:0;9403:350:1;8542:57:0;-1:-1:-1;;;;;8618:16:0;;8610:53;;;;-1:-1:-1;;;8610:53:0;;9960:2:1;8610:53:0;;;9942:21:1;9999:2;9979:18;;;9972:30;10038:26;10018:18;;;10011:54;10082:18;;8610:53:0;9758:348:1;8610:53:0;8691:1;8682:6;:10;8674:64;;;;-1:-1:-1;;;8674:64:0;;10313:2:1;8674:64:0;;;10295:21:1;10352:2;10332:18;;;10325:30;10391:34;10371:18;;;10364:62;-1:-1:-1;;;10442:18:1;;;10435:39;10491:19;;8674:64:0;10111:405:1;8674:64:0;8759:17;3140:13;;-1:-1:-1;;;;;8797:15:0;;;3140:13;;8797:15;;;;:32;;-1:-1:-1;3113:7:0;3140:13;-1:-1:-1;;;;;8816:13:0;;;3140;;8816;;8797:32;8793:2506;;;8858:101;8955:3;8858:88;8893:9;:19;;;8874:16;;:38;8873:72;;8932:7;:13;8873:72;;;8916:13;;8873:72;8858:6;;:14;:88::i;:::-;:96;;:101::i;:::-;8846:113;;8996:12;;8980;:28;8976:198;;9051:12;9037:27;;;;:13;:27;;;;;;9067:2;-1:-1:-1;9029:81:0;;;;-1:-1:-1;;;9029:81:0;;10723:2:1;9029:81:0;;;10705:21:1;10762:2;10742:18;;;10735:30;10801:34;10781:18;;;10774:62;-1:-1:-1;;;10852:18:1;;;10845:34;10896:19;;9029:81:0;10521:400:1;9029:81:0;9143:12;9129:27;;;;:13;:27;;;;;:29;;;;;;:::i;:::-;;;;;;8976:198;9202:11;;-1:-1:-1;;;;;9194:19:0;;;9202:11;;9194:19;:51;;;;-1:-1:-1;9231:13:0;;-1:-1:-1;;;;;9217:28:0;;;9231:13;;9217:28;;9194:51;:67;;;;-1:-1:-1;;;;;;9250:11:0;;;;;;:7;:11;;;;;;;;9249:12;9194:67;9190:314;;;9300:20;;9290:6;:30;;9282:74;;;;-1:-1:-1;;;9282:74:0;;11268:2:1;9282:74:0;;;11250:21:1;11307:2;11287:18;;;11280:30;11346:33;11326:18;;;11319:61;11397:18;;9282:74:0;11066:355:1;9282:74:0;9409:13;;9399:6;9383:13;9393:2;-1:-1:-1;;;;;7164:17:0;7137:7;7164:17;;;:8;:17;;;;;;;7071:118;9383:13;:22;;;;:::i;:::-;:39;;9375:76;;;;-1:-1:-1;;;9375:76:0;;11758:2:1;9375:76:0;;;11740:21:1;11797:2;11777:18;;;11770:30;-1:-1:-1;;;11816:18:1;;;11809:54;11880:18;;9375:76:0;11556:348:1;9375:76:0;9470:16;:18;;;:16;:18;;;:::i;:::-;;;;;;9190:314;9530:11;;-1:-1:-1;;;;;9524:17:0;;;9530:11;;9524:17;;;;:33;;-1:-1:-1;;;;;;9546:11:0;;;;;;:7;:11;;;;;;;;9545:12;9524:33;9520:150;;;9612:13;;9602:6;9586:13;9596:2;-1:-1:-1;;;;;7164:17:0;7137:7;7164:17;;;:8;:17;;;;;;;7071:118;9586:13;:22;;;;:::i;:::-;:39;;9578:76;;;;-1:-1:-1;;;9578:76:0;;11758:2:1;9578:76:0;;;11740:21:1;11797:2;11777:18;;;11770:30;-1:-1:-1;;;11816:18:1;;;11809:54;11880:18;;9578:76:0;11556:348:1;9578:76:0;9696:11;;-1:-1:-1;;;;;9690:17:0;;;9696:11;;9690:17;:42;;;;-1:-1:-1;;;;;;9711:21:0;;9727:4;9711:21;;9690:42;9686:196;;;9765:101;9862:3;9765:88;9800:9;:19;;;9781:16;;:38;9780:72;;9839:13;;9780:72;;;9823:13;;9765:6;;:14;:88::i;:101::-;9753:113;;9686:196;9910:11;;-1:-1:-1;;;;;9902:19:0;;;9910:11;;9902:19;;;;:40;;-1:-1:-1;9931:11:0;;-1:-1:-1;;;;;9925:17:0;;;9931:11;;9925:17;;9902:40;:65;;;;-1:-1:-1;;;;;;9946:21:0;;9962:4;9946:21;;9902:65;9898:119;;;-1:-1:-1;10000:1:0;9898:119;10082:4;10033:28;7164:17;;;:8;:17;;;;;;10107:9;;;;;;;:24;;;;-1:-1:-1;10121:10:0;;;;10120:11;10107:24;:45;;;;-1:-1:-1;10141:11:0;;-1:-1:-1;;;;;10135:17:0;;;10141:11;;10135:17;10107:45;:60;;;;-1:-1:-1;10156:11:0;;;;;;;10107:60;:103;;;;;10194:16;;10171:20;:39;10107:103;:146;;;;-1:-1:-1;10233:20:0;;10214:16;;:39;10107:146;10103:1185;;;10293:13;;10278:12;:28;10274:98;;;10351:1;10331:17;:21;10274:98;10418:8;;10398:17;;:28;10390:70;;;;-1:-1:-1;;;10390:70:0;;12111:2:1;10390:70:0;;;12093:21:1;12150:2;12130:18;;;12123:30;12189:31;12169:18;;;12162:59;12238:18;;10390:70:0;11909:353:1;10390:70:0;10479:71;10497:52;10501:6;10509:39;10513:20;10535:12;;10509:3;:39::i;:::-;10497:3;:52::i;:::-;10479:17;:71::i;:::-;10598:21;10642:22;;10638:106;;10689:35;10702:21;10689:12;:35::i;:::-;10762:17;:19;;;:17;:19;;;:::i;:::-;;;;-1:-1:-1;;10816:12:0;10800:13;:28;-1:-1:-1;10103:1185:0;;;10855:10;;;;10854:11;:32;;;;-1:-1:-1;10875:11:0;;-1:-1:-1;;;;;10869:17:0;;;10875:11;;10869:17;10854:32;:47;;;;-1:-1:-1;10890:11:0;;;;;;;10854:47;:90;;;;;10928:16;;10905:20;:39;10854:90;:133;;;;-1:-1:-1;10967:20:0;;10948:16;;:39;10854:133;10850:438;;;11008:71;11026:52;11030:6;11038:39;11042:20;11064:12;;11038:3;:39::i;11008:71::-;11127:21;11171:22;;11167:106;;11218:35;11231:21;11218:12;:35::i;:::-;10989:299;10850:438;8831:2468;8793:2506;11315:13;;11311:174;;11388:4;11371:23;;;;:8;:23;;;;;;:42;;11403:9;11371:31;:42::i;:::-;11362:4;11345:23;;;;:8;:23;;;;;;;:68;;;;11433:40;;-1:-1:-1;;;;;11433:40:0;;;;;;;11463:9;1361:25:1;;1349:2;1334:18;;1215:177;11433:40:0;;;;;;;;11311:174;-1:-1:-1;;;;;11512:14:0;;;;;;:8;:14;;;;;;:30;;11535:6;11512:22;:30::i;:::-;-1:-1:-1;;;;;11495:14:0;;;;;;:8;:14;;;;;:47;11568;11589:25;:6;11604:9;11589:14;:25::i;:::-;-1:-1:-1;;;;;11568:12:0;;;;;;:8;:12;;;;;;;:20;:47::i;:::-;-1:-1:-1;;;;;11553:12:0;;;;;;;:8;:12;;;;;:62;;;;11631:45;;;11650:25;:6;11665:9;11650:14;:25::i;:::-;11631:45;;1361:25:1;;;1349:2;1334:18;11631:45:0;;;;;;;8531:3153;8455:3229;;;:::o;1941:194::-;2031:7;2067:12;2059:6;;;;2051:29;;;;-1:-1:-1;;;2051:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2091:9:0;2103:5;2107:1;2103;:5;:::i;:::-;2091:17;1941:194;-1:-1:-1;;;;;1941:194:0:o;12967:197::-;5489:14;5426:1;5489:2;:14;:::i;:::-;5474:29;;:12;:29;:::i;:::-;13025:20;:35;;;5489:14;;5426:1;;5489:14;:::i;:::-;5474:29;;:12;:29;:::i;:::-;13071:13;:28;13115:41;5489:14;5426:1;5489:2;:14;:::i;:::-;5474:29;;:12;:29;:::i;:::-;13115:41;;1361:25:1;;;1349:2;1334:18;13115:41:0;;;;;;;12967:197::o;2143:249::-;2205:7;2229:1;2234;2229:6;2225:47;;-1:-1:-1;2259:1:0;2252:8;;2225:47;2282:9;2294:5;2298:1;2294;:5;:::i;:::-;2282:17;-1:-1:-1;2327:1:0;2318:5;2322:1;2282:17;2318:5;:::i;:::-;:10;2310:55;;;;-1:-1:-1;;;2310:55:0;;12824:2:1;2310:55:0;;;12806:21:1;;;12843:18;;;12836:30;12902:34;12882:18;;;12875:62;12954:18;;2310:55:0;12622:356:1;2310:55:0;2383:1;2143:249;-1:-1:-1;;;2143:249:0:o;2400:139::-;2462:7;2489:42;2497:1;2500;2489:42;;;;;;;;;;;;;;;;;:7;:42::i;11692:98::-;11749:7;11776:1;11774;:3;11773:9;;11781:1;11773:9;;;-1:-1:-1;11779:1:0;11692:98;-1:-1:-1;11692:98:0:o;11798:479::-;6262:10;:17;;-1:-1:-1;;6262:17:0;6275:4;6262:17;;;11898:16:::1;::::0;;11912:1:::1;11898:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11898:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11898:16:0::1;11874:40;;11943:4;11925;11930:1;11925:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11925:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11969:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;11969:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;11925:7;;11969:20;;;;;:13;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11959:4;11964:1;11959:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11959:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;12036:13:::1;::::0;12000:64:::1;::::0;12021:4:::1;::::0;12036:13:::1;12052:11:::0;12000:12:::1;:64::i;:::-;12075:13;::::0;:194:::1;::::0;-1:-1:-1;;;12075:194:0;;-1:-1:-1;;;;;12075:13:0;;::::1;::::0;:64:::1;::::0;:194:::1;::::0;12154:11;;12075:13:::1;::::0;12196:4;;12223::::1;::::0;12243:15:::1;::::0;12075:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6302:10:0;:18;;-1:-1:-1;;6302:18:0;;;-1:-1:-1;;;;11798:479:0:o;12285:97::-;12342:15;;:32;;-1:-1:-1;;;;;12342:15:0;;;;:32;;;;;12367:6;;12342:15;:32;:15;:32;12367:6;12342:15;:32;;;;;;;;;;;;;;;;;;;;;12285:97;:::o;1600:182::-;1662:7;;1694:5;1698:1;1694;:5;:::i;:::-;1682:17;;1723:1;1718;:6;;1710:45;;;;-1:-1:-1;;;1710:45:0;;14434:2:1;1710:45:0;;;14416:21:1;14473:2;14453:18;;;14446:30;14512:28;14492:18;;;14485:56;14558:18;;1710:45:0;14232:350:1;1790:143:0;1852:7;1879:46;1887:1;1890;1879:46;;;;;;;;;;;;;;;;;:7;:46::i;2547:193::-;2637:7;2672:12;2665:5;2657:28;;;;-1:-1:-1;;;2657:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2696:9:0;2708:5;2712:1;2708;:5;:::i;14:548:1:-;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: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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:118::-;2593:5;2586:13;2579:21;2572:5;2569:32;2559:60;;2615:1;2612;2605:12;2630:513;2710:6;2718;2726;2734;2787:3;2775:9;2766:7;2762:23;2758:33;2755:53;;;2804:1;2801;2794:12;2755:53;2843:9;2830:23;2862:28;2884:5;2862:28;:::i;:::-;2909:5;-1:-1:-1;2961:2:1;2946:18;;2933:32;;-1:-1:-1;3017:2:1;3002:18;;2989:32;3030:30;2989:32;3030:30;:::i;:::-;2630:513;;;;-1:-1:-1;3079:7:1;;3133:2;3118:18;3105:32;;-1:-1:-1;;2630:513:1:o;3148:388::-;3216:6;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3332:9;3319:23;3351:31;3376:5;3351:31;:::i;:::-;3401:5;-1:-1:-1;3458:2:1;3443:18;;3430:32;3471:33;3430:32;3471:33;:::i;:::-;3523:7;3513:17;;;3148:388;;;;;:::o;3541:127::-;3602:10;3597:3;3593:20;3590:1;3583:31;3633:4;3630:1;3623:15;3657:4;3654:1;3647:15;3673:416;3762:1;3799:5;3762:1;3813:270;3834:7;3824:8;3821:21;3813:270;;;3893:4;3889:1;3885:6;3881:17;3875:4;3872:27;3869:53;;;3902:18;;:::i;:::-;3952:7;3942:8;3938:22;3935:55;;;3972:16;;;;3935:55;4051:22;;;;4011:15;;;;3813:270;;;3817:3;3673:416;;;;;:::o;4094:806::-;4143:5;4173:8;4163:80;;-1:-1:-1;4214:1:1;4228:5;;4163:80;4262:4;4252:76;;-1:-1:-1;4299:1:1;4313:5;;4252:76;4344:4;4362:1;4357:59;;;;4430:1;4425:130;;;;4337:218;;4357:59;4387:1;4378:10;;4401:5;;;4425:130;4462:3;4452:8;4449:17;4446:43;;;4469:18;;:::i;:::-;-1:-1:-1;;4525:1:1;4511:16;;4540:5;;4337:218;;4639:2;4629:8;4626:16;4620:3;4614:4;4611:13;4607:36;4601:2;4591:8;4588:16;4583:2;4577:4;4574:12;4570:35;4567:77;4564:159;;;-1:-1:-1;4676:19:1;;;4708:5;;4564:159;4755:34;4780:8;4774:4;4755:34;:::i;:::-;4825:6;4821:1;4817:6;4813:19;4804:7;4801:32;4798:58;;;4836:18;;:::i;:::-;4874:20;;4094:806;-1:-1:-1;;;4094:806:1:o;4905:140::-;4963:5;4992:47;5033:4;5023:8;5019:19;5013:4;4992:47;:::i;5050:168::-;5123:9;;;5154;;5171:15;;;5165:22;;5151:37;5141:71;;5192:18;;:::i;5223:401::-;5425:2;5407:21;;;5464:2;5444:18;;;5437:30;5503:34;5498:2;5483:18;;5476:62;-1:-1:-1;;;5569:2:1;5554:18;;5547:35;5614:3;5599:19;;5223:401::o;6328:245::-;6395:6;6448:2;6436:9;6427:7;6423:23;6419:32;6416:52;;;6464:1;6461;6454:12;6416:52;6496:9;6490:16;6515:28;6537:5;6515:28;:::i;6930:251::-;7000:6;7053:2;7041:9;7032:7;7028:23;7024:32;7021:52;;;7069:1;7066;7059:12;7021:52;7101:9;7095:16;7120:31;7145:5;7120:31;:::i;8107:306::-;8195:6;8203;8211;8264:2;8252:9;8243:7;8239:23;8235:32;8232:52;;;8280:1;8277;8270:12;8232:52;8309:9;8303:16;8293:26;;8359:2;8348:9;8344:18;8338:25;8328:35;;8403:2;8392:9;8388:18;8382:25;8372:35;;8107:306;;;;;:::o;10926:135::-;10965:3;10986:17;;;10983:43;;11006:18;;:::i;:::-;-1:-1:-1;11053:1:1;11042:13;;10926:135::o;11426:125::-;11491:9;;;11512:10;;;11509:36;;;11525:18;;:::i;12267:128::-;12334:9;;;12355:11;;;12352:37;;;12369:18;;:::i;12400:217::-;12440:1;12466;12456:132;;12510:10;12505:3;12501:20;12498:1;12491:31;12545:4;12542:1;12535:15;12573:4;12570:1;12563:15;12456:132;-1:-1:-1;12602:9:1;;12400:217::o;13115:127::-;13176:10;13171:3;13167:20;13164:1;13157:31;13207:4;13204:1;13197:15;13231:4;13228:1;13221:15;13247:980;13509:4;13557:3;13546:9;13542:19;13588:6;13577:9;13570:25;13614:2;13652:6;13647:2;13636:9;13632:18;13625:34;13695:3;13690:2;13679:9;13675:18;13668:31;13719:6;13754;13748:13;13785:6;13777;13770:22;13823:3;13812:9;13808:19;13801:26;;13862:2;13854:6;13850:15;13836:29;;13883:1;13893:195;13907:6;13904:1;13901:13;13893:195;;;13972:13;;-1:-1:-1;;;;;13968:39:1;13956:52;;14063:15;;;;14028:12;;;;14004:1;13922:9;13893:195;;;-1:-1:-1;;;;;;;14144:32:1;;;;14139:2;14124:18;;14117:60;-1:-1:-1;;;14208:3:1;14193:19;14186:35;14105:3;13247:980;-1:-1:-1;;;13247:980:1:o

Swarm Source

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