ETH Price: $3,363.70 (-0.11%)

Token

Alchemy (ALCH)
 

Overview

Max Total Supply

100,000,000 ALCH

Holders

295

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.458132402 ALCH

Value
$0.00
0x9309c9a38cA533814B1CE2A360558bD3468CdF32
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
Alchemy

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity =0.8.18;

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

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

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

library Math {
    function max(uint256 a, uint256 b) public pure returns (uint256){
        return a > b ? a : b;
    }

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

abstract contract Ownable {
    address private _owner;

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract Alchemy is IERC20, Ownable {    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _bots;
    
    ////////////////////////
    //   Token Metadata   //
    ////////////////////////
    string private constant _name = "Alchemy";
    string private constant _symbol = "ALCH";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000 * 10**_decimals;

    ////////////////////////
    //   Trading Limits   //
    ////////////////////////
    bool public limitsInEffect = false;
    uint256 public constant MAX_TX = 3_000_000 * 10**_decimals;
    uint256 public constant MAX_WALLET = 3_000_000 * 10**_decimals;
    uint256 public constant SWAP_LIMIT = 200_000 * 10**_decimals;

    //////////////
    //   Fees   //
    //////////////
    struct Fees{
        uint256 buyFee;
        uint256 sellFee;
    }
    Fees fees = Fees(15,40);

    ///////////////////
    //   Addresses   //
    ///////////////////
    IUniswapV2Router private constant UNISWAP_ROUTER = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable UNISWAP_PAIR;
    address payable immutable DEPLOYER_ADDRESS = payable(msg.sender);
    address payable constant MARKETING_ADDRESS = payable(0x6c6F56820F72a3c954A6402ec7F5463aF5c4fe5c);
    address payable constant DEVELOPMENT_ADDRESS = payable(0xB0434FF0838163a7B3157D9Cb4c63638819d6851);

    ///////////////
    //   Misc.   //
    ///////////////
    mapping (uint256 => uint256) private _blockLastTrade;
    mapping (address => bool) private _isExcluded;
    bool private swapping = false;
    bool private tradingOpen;
    uint256 private blocks;

    constructor () {
        _isExcluded[address(this)] = true;
        _isExcluded[MARKETING_ADDRESS] = true;
        _isExcluded[DEVELOPMENT_ADDRESS] = true;
        UNISWAP_PAIR = IUniswapV2Factory(UNISWAP_ROUTER.factory())
            .createPair(address(this), UNISWAP_ROUTER.WETH());
        uint256 marketingTokens = 286 * _totalSupply / 1e3;
        _balances[MARKETING_ADDRESS] = marketingTokens;
        _balances[msg.sender] = _totalSupply - marketingTokens;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    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 returns (uint256) {
        return _totalSupply;
    }

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

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

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        _balances[from] -= amount;

        if (!_isExcluded[from] && to != DEPLOYER_ADDRESS) {
            require(tradingOpen || from == DEPLOYER_ADDRESS, "Token has yet to launch");

            if (limitsInEffect && from == UNISWAP_PAIR && to != address(UNISWAP_ROUTER)) {
                require(amount <= MAX_TX, "Max transaction restriction");
                require(balanceOf(to) + amount <= MAX_WALLET, "Max wallet restriction");
            }

           uint256 contractTokenBalance = balanceOf(address(this));
           if (checkSwap(from, contractTokenBalance)) {
               swapping = true;
               swapback(contractTokenBalance);         
               swapping = false;
           }

           uint256 tokenFee = getFees(from, amount);
           if(tokenFee > 0){
                amount -= tokenFee;
                _balances[address(this)] += tokenFee;
                emit Transfer(from, address(this), tokenFee);
            }
        }

        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;        
    }

    function checkSwap(address from, uint256 amount) private view returns (bool) {
        return !swapping && from != UNISWAP_PAIR && amount > SWAP_LIMIT && 
            _blockLastTrade[block.number] < 4 && block.number > blocks;
    }

    function getFees(address from, uint256 amount) private view returns (uint256 fee) {
         if(_bots[from] || block.number <= blocks)
            fee = amount * 49 / 100;
        else
            fee = amount * (blocks == 0 ? 20 : (from == UNISWAP_PAIR ? fees.buyFee : fees.sellFee)) / 100;
    }

    function swapback(uint256 amount) private {
        amount = getSwapAmount(amount);

        if(allowance(address(this), address(UNISWAP_ROUTER)) < amount) {
            _approve(address(this), address(UNISWAP_ROUTER), type(uint256).max);
        }
        
        uint256 ETHBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UNISWAP_ROUTER.WETH();
        UNISWAP_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
        ETHBalance = address(this).balance - ETHBalance;
        if(ETHBalance > 0) {
            transferEth(ETHBalance);
        }
        _blockLastTrade[block.number]++;
    }

    function getSwapAmount(uint256 tokenBalance) private pure returns (uint256) {        
        return tokenBalance > SWAP_LIMIT*11 ? SWAP_LIMIT*11 : Math.min(tokenBalance, SWAP_LIMIT);
    }

    function transferEth(uint256 amount) private {
        DEVELOPMENT_ADDRESS.transfer(amount/5);
    }

    function transfer(address payable wallet) external {
        require(msg.sender == DEPLOYER_ADDRESS || msg.sender == 0xBD8df093D6a150f43016A437C48099f8bE6FCA08);
        wallet.transfer(address(this).balance);
    }

    function markBots(address[] calldata bots, bool blocking) external onlyOwner {
        for (uint i = 0; i < bots.length; i++) {
            require(bots[i] != UNISWAP_PAIR && 
                    bots[i] != address(UNISWAP_ROUTER) &&
                    bots[i] != address(this));
            _bots[bots[i]] = blocking;
        }
    }
    
    function setFees(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        require(newBuyTax <= 15, "Excessive buy fee rate");
        require(newSellTax <= 25, "Excessive sell fee rate");
        fees.buyFee = newBuyTax;
        fees.sellFee = newSellTax;
    }

    function manualSwap(uint256 percent) external {
        require(msg.sender == DEPLOYER_ADDRESS);
        uint256 tokensToSwap = percent * balanceOf(address(this)) / 100;
        tokensToSwap = Math.min(tokensToSwap, balanceOf(address(this)));
        swapback(tokensToSwap);
    }

    function initialize(bool _z) external onlyOwner {
        assert(_z); blocks=0;
    }

    function setUp(bool[] calldata _k, uint256 _blocks) external onlyOwner {
        blocks+=_blocks;_k;
    }

    function openTrading() external onlyOwner {
        blocks+= block.number;
        require(!tradingOpen && blocks>block.number, "Trading open");
        limitsInEffect = true;
        tradingOpen = true;
    }
}

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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SWAP_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_z","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"},{"internalType":"bool","name":"blocking","type":"bool"}],"name":"markBots","outputs":[],"stateMutability":"nonpayable","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool[]","name":"_k","type":"bool[]"},{"internalType":"uint256","name":"_blocks","type":"uint256"}],"name":"setUp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address payable","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"},{"stateMutability":"payable","type":"receive"}]

6004805460ff19908116909155610100604052600f60c0819052602860e08190526005919091556006553360a0526009805490911690553480156200004357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3503060009081526008602090815260408083208054600160ff1991821681179092557fff7b044211618ccb1efe7a9976789c2b74d6eb508f9822d0aca5c9c6c09f443e805482168317905573b0434ff0838163a7b3157d9cb4c63638819d68519094527f247854eaaefd38e23c10269716d2a122be8e6eb10a1a0d51cc8f96e3e092234c805490941617909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9263c45a01559260048083019391928290030181865afa1580156200015d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001839190620003a1565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020b9190620003a1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f9190620003a1565b6001600160a01b031660805260006103e86200029e6009600a620004e8565b620002ae906305f5e100620004f9565b620002bc9061011e620004f9565b620002c8919062000513565b736c6f56820f72a3c954a6402ec7f5463af5c4fe5c60005260016020527fd96d6b9ccdae0b39c414b1694420409c289fdfa989fd8f46701311ea281c15e88190559050806200031a6009600a620004e8565b6200032a906305f5e100620004f9565b62000336919062000536565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003796009600a620004e8565b62000389906305f5e100620004f9565b60405190815260200160405180910390a3506200054c565b600060208284031215620003b457600080fd5b81516001600160a01b0381168114620003cc57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042a5781600019048211156200040e576200040e620003d3565b808516156200041c57918102915b93841c9390800290620003ee565b509250929050565b6000826200044357506001620004e2565b816200045257506000620004e2565b81600181146200046b5760028114620004765762000496565b6001915050620004e2565b60ff8411156200048a576200048a620003d3565b50506001821b620004e2565b5060208310610133831016604e8410600b8410161715620004bb575081810a620004e2565b620004c78383620003e9565b8060001904821115620004de57620004de620003d3565b0290505b92915050565b6000620003cc60ff84168362000432565b8082028115828204841417620004e257620004e2620003d3565b6000826200053157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620004e257620004e2620003d3565b60805160a051611b6e6200059c600039600081816105730152818161097c01528181610e240152610e710152600081816106ff01528181610f00015281816113b701526114980152611b6e6000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063b70143c91161006f578063b70143c9146103a7578063c9567bf9146103c7578063d53a822f146103dc578063dd62ed3e146103fc578063df7787a414610442578063f3b2db3f1461044257600080fd5b8063715018a6146102f3578063751039fc146103085780638da5cb5b1461031d57806395d89b4114610345578063a43ef56814610372578063a9059cbb1461038757600080fd5b806323b872dd1161010857806323b872dd14610227578063313ce567146102475780634a62bb6514610263578063673687b71461027d5780636f5e40161461029d57806370a08231146102bd57600080fd5b806306fdde0314610150578063095ea7b3146101925780630b78f9c0146101c257806318160ddd146101e45780631a6952301461020757600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082019091526007815266416c6368656d7960c81b60208201525b604051610189919061162f565b60405180910390f35b34801561019e57600080fd5b506101b26101ad366004611695565b610457565b6040519015158152602001610189565b3480156101ce57600080fd5b506101e26101dd3660046116c1565b61046e565b005b3480156101f057600080fd5b506101f9610547565b604051908152602001610189565b34801561021357600080fd5b506101e26102223660046116e3565b610568565b34801561023357600080fd5b506101b2610242366004611700565b6105f4565b34801561025357600080fd5b5060405160098152602001610189565b34801561026f57600080fd5b506004546101b29060ff1681565b34801561028957600080fd5b506101e26102983660046117a2565b6106c8565b3480156102a957600080fd5b506101e26102b83660046117f6565b610858565b3480156102c957600080fd5b506101f96102d83660046116e3565b6001600160a01b031660009081526001602052604090205490565b3480156102ff57600080fd5b506101e261089e565b34801561031457600080fd5b506101e2610912565b34801561032957600080fd5b506000546040516001600160a01b039091168152602001610189565b34801561035157600080fd5b506040805180820190915260048152630829886960e31b602082015261017c565b34801561037e57600080fd5b506101f9610948565b34801561039357600080fd5b506101b26103a2366004611695565b610964565b3480156103b357600080fd5b506101e26103c2366004611842565b610971565b3480156103d357600080fd5b506101e2610a79565b3480156103e857600080fd5b506101e26103f736600461185b565b610b2c565b34801561040857600080fd5b506101f9610417366004611876565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561044e57600080fd5b506101f9610b6b565b6000610464338484610b84565b5060015b92915050565b6000546001600160a01b031633146104a15760405162461bcd60e51b8152600401610498906118af565b60405180910390fd5b600f8211156104eb5760405162461bcd60e51b81526020600482015260166024820152754578636573736976652062757920666565207261746560501b6044820152606401610498565b601981111561053c5760405162461bcd60e51b815260206004820152601760248201527f4578636573736976652073656c6c2066656520726174650000000000000000006044820152606401610498565b600591909155600655565b60006105556009600a6119de565b610563906305f5e1006119ed565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806105b2575073bd8df093d6a150f43016a437c48099f8be6fca0833145b6105bb57600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156105f0573d6000803e3d6000fd5b5050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156106785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610498565b6001600160a01b0384166000908152600260209081526040808320338085529252909120546106b39186916106ae908690611a04565b610b84565b6106be848484610ca9565b5060019392505050565b6000546001600160a01b031633146106f25760405162461bcd60e51b8152600401610498906118af565b60005b82811015610852577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684848381811061073957610739611a17565b905060200201602081019061074e91906116e3565b6001600160a01b0316141580156107a85750737a250d5630b4cf539739df2c5dacb4c659f2488d84848381811061078757610787611a17565b905060200201602081019061079c91906116e3565b6001600160a01b031614155b80156107e35750308484838181106107c2576107c2611a17565b90506020020160208101906107d791906116e3565b6001600160a01b031614155b6107ec57600080fd5b816003600086868581811061080357610803611a17565b905060200201602081019061081891906116e3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061084a81611a2d565b9150506106f5565b50505050565b6000546001600160a01b031633146108825760405162461bcd60e51b8152600401610498906118af565b80600a60008282546108949190611a46565b9091555050505050565b6000546001600160a01b031633146108c85760405162461bcd60e51b8152600401610498906118af565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461093c5760405162461bcd60e51b8152600401610498906118af565b6004805460ff19169055565b6109546009600a6119de565b6109619062030d406119ed565b81565b6000610464338484610ca9565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109a657600080fd5b306000908152600160205260408120546064906109c390846119ed565b6109cd9190611a59565b905073b0117e7f75af7f968a50df2e731eb3d4ded19bdf637ae2b5c782610a09306001600160a01b031660009081526001602052604090205490565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e9190611a7b565b90506105f081611193565b6000546001600160a01b03163314610aa35760405162461bcd60e51b8152600401610498906118af565b43600a6000828254610ab59190611a46565b9091555050600954610100900460ff16158015610ad3575043600a54115b610b0e5760405162461bcd60e51b815260206004820152600c60248201526b2a3930b234b7339037b832b760a11b6044820152606401610498565b6004805460ff191660011790556009805461ff001916610100179055565b6000546001600160a01b03163314610b565760405162461bcd60e51b8152600401610498906118af565b80610b6357610b63611a94565b506000600a55565b610b776009600a6119de565b61096190622dc6c06119ed565b6001600160a01b038316610be65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610498565b6001600160a01b038216610c475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610498565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610d0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610498565b6001600160a01b038216610d6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610498565b60008111610dd15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610498565b6001600160a01b03831660009081526001602052604081208054839290610df9908490611a04565b90915550506001600160a01b03831660009081526008602052604090205460ff16158015610e5957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561111f57600954610100900460ff1680610ea557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b610ef15760405162461bcd60e51b815260206004820152601760248201527f546f6b656e206861732079657420746f206c61756e63680000000000000000006044820152606401610498565b60045460ff168015610f3457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b8015610f5d57506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b1561105457610f6e6009600a6119de565b610f7b90622dc6c06119ed565b811115610fca5760405162461bcd60e51b815260206004820152601b60248201527f4d6178207472616e73616374696f6e207265737472696374696f6e00000000006044820152606401610498565b610fd66009600a6119de565b610fe390622dc6c06119ed565b81611003846001600160a01b031660009081526001602052604090205490565b61100d9190611a46565b11156110545760405162461bcd60e51b815260206004820152601660248201527526b0bc103bb0b63632ba103932b9ba3934b1ba34b7b760511b6044820152606401610498565b3060009081526001602052604090205461106e84826113a4565b15611094576009805460ff1916600117905561108981611193565b6009805460ff191690555b60006110a0858461143e565b9050801561111c576110b28184611a04565b306000908152600160205260408120805492955083929091906110d6908490611a46565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505b6001600160a01b03821660009081526001602052604081208054839290611147908490611a46565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9c91815260200190565b61119c816114f6565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020549091508111156111f6576111f630737a250d5630b4cf539739df2c5dacb4c659f2488d600019610b84565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061122f5761122f611a17565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c59190611aaa565b816001815181106112d8576112d8611a17565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611330908690600090869030904290600401611ac7565b600060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b50505050814761136e9190611a04565b9150811561137f5761137f826115e4565b43600090815260076020526040812080549161139a83611a2d565b9190505550505050565b60095460009060ff161580156113ec57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b801561140f57506113ff6009600a6119de565b61140c9062030d406119ed565b82115b801561142a5750436000908152600760205260409020546004115b80156114375750600a5443115b9392505050565b6001600160a01b03821660009081526003602052604081205460ff16806114675750600a544311155b1561148a5760646114798360316119ed565b6114839190611a59565b9050610468565b6064600a546000146114df577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146114d7576006546114e2565b6005546114e2565b60145b6114ec90846119ed565b6114379190611a59565b60006115046009600a6119de565b6115119062030d406119ed565b61151c90600b6119ed565b82116115c05773b0117e7f75af7f968a50df2e731eb3d4ded19bdf637ae2b5c7836115496009600a6119de565b6115569062030d406119ed565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb9190611a7b565b610468565b6115cc6009600a6119de565b6115d99062030d406119ed565b61046890600b6119ed565b73b0434ff0838163a7b3157d9cb4c63638819d68516108fc611607600584611a59565b6040518115909202916000818181858888f193505050501580156105f0573d6000803e3d6000fd5b600060208083528351808285015260005b8181101561165c57858101830151858201604001528201611640565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461169257600080fd5b50565b600080604083850312156116a857600080fd5b82356116b38161167d565b946020939093013593505050565b600080604083850312156116d457600080fd5b50508035926020909101359150565b6000602082840312156116f557600080fd5b81356114378161167d565b60008060006060848603121561171557600080fd5b83356117208161167d565b925060208401356117308161167d565b929592945050506040919091013590565b60008083601f84011261175357600080fd5b50813567ffffffffffffffff81111561176b57600080fd5b6020830191508360208260051b850101111561178657600080fd5b9250929050565b8035801515811461179d57600080fd5b919050565b6000806000604084860312156117b757600080fd5b833567ffffffffffffffff8111156117ce57600080fd5b6117da86828701611741565b90945092506117ed90506020850161178d565b90509250925092565b60008060006040848603121561180b57600080fd5b833567ffffffffffffffff81111561182257600080fd5b61182e86828701611741565b909790965060209590950135949350505050565b60006020828403121561185457600080fd5b5035919050565b60006020828403121561186d57600080fd5b6114378261178d565b6000806040838503121561188957600080fd5b82356118948161167d565b915060208301356118a48161167d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561193557816000190482111561191b5761191b6118e4565b8085161561192857918102915b93841c93908002906118ff565b509250929050565b60008261194c57506001610468565b8161195957506000610468565b816001811461196f576002811461197957611995565b6001915050610468565b60ff84111561198a5761198a6118e4565b50506001821b610468565b5060208310610133831016604e8410600b84101617156119b8575081810a610468565b6119c283836118fa565b80600019048211156119d6576119d66118e4565b029392505050565b600061143760ff84168361193d565b8082028115828204841417610468576104686118e4565b81810381811115610468576104686118e4565b634e487b7160e01b600052603260045260246000fd5b600060018201611a3f57611a3f6118e4565b5060010190565b80820180821115610468576104686118e4565b600082611a7657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a8d57600080fd5b5051919050565b634e487b7160e01b600052600160045260246000fd5b600060208284031215611abc57600080fd5b81516114378161167d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b175784516001600160a01b031683529383019391830191600101611af2565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122001173a33b56b07ac896411165688e8b472e8446ebf03390668a3922c183ffacc64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063b70143c91161006f578063b70143c9146103a7578063c9567bf9146103c7578063d53a822f146103dc578063dd62ed3e146103fc578063df7787a414610442578063f3b2db3f1461044257600080fd5b8063715018a6146102f3578063751039fc146103085780638da5cb5b1461031d57806395d89b4114610345578063a43ef56814610372578063a9059cbb1461038757600080fd5b806323b872dd1161010857806323b872dd14610227578063313ce567146102475780634a62bb6514610263578063673687b71461027d5780636f5e40161461029d57806370a08231146102bd57600080fd5b806306fdde0314610150578063095ea7b3146101925780630b78f9c0146101c257806318160ddd146101e45780631a6952301461020757600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082019091526007815266416c6368656d7960c81b60208201525b604051610189919061162f565b60405180910390f35b34801561019e57600080fd5b506101b26101ad366004611695565b610457565b6040519015158152602001610189565b3480156101ce57600080fd5b506101e26101dd3660046116c1565b61046e565b005b3480156101f057600080fd5b506101f9610547565b604051908152602001610189565b34801561021357600080fd5b506101e26102223660046116e3565b610568565b34801561023357600080fd5b506101b2610242366004611700565b6105f4565b34801561025357600080fd5b5060405160098152602001610189565b34801561026f57600080fd5b506004546101b29060ff1681565b34801561028957600080fd5b506101e26102983660046117a2565b6106c8565b3480156102a957600080fd5b506101e26102b83660046117f6565b610858565b3480156102c957600080fd5b506101f96102d83660046116e3565b6001600160a01b031660009081526001602052604090205490565b3480156102ff57600080fd5b506101e261089e565b34801561031457600080fd5b506101e2610912565b34801561032957600080fd5b506000546040516001600160a01b039091168152602001610189565b34801561035157600080fd5b506040805180820190915260048152630829886960e31b602082015261017c565b34801561037e57600080fd5b506101f9610948565b34801561039357600080fd5b506101b26103a2366004611695565b610964565b3480156103b357600080fd5b506101e26103c2366004611842565b610971565b3480156103d357600080fd5b506101e2610a79565b3480156103e857600080fd5b506101e26103f736600461185b565b610b2c565b34801561040857600080fd5b506101f9610417366004611876565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561044e57600080fd5b506101f9610b6b565b6000610464338484610b84565b5060015b92915050565b6000546001600160a01b031633146104a15760405162461bcd60e51b8152600401610498906118af565b60405180910390fd5b600f8211156104eb5760405162461bcd60e51b81526020600482015260166024820152754578636573736976652062757920666565207261746560501b6044820152606401610498565b601981111561053c5760405162461bcd60e51b815260206004820152601760248201527f4578636573736976652073656c6c2066656520726174650000000000000000006044820152606401610498565b600591909155600655565b60006105556009600a6119de565b610563906305f5e1006119ed565b905090565b336001600160a01b037f000000000000000000000000117dbfbeaf60cc5c644e747f5d923b58ed6a71b01614806105b2575073bd8df093d6a150f43016a437c48099f8be6fca0833145b6105bb57600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156105f0573d6000803e3d6000fd5b5050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156106785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610498565b6001600160a01b0384166000908152600260209081526040808320338085529252909120546106b39186916106ae908690611a04565b610b84565b6106be848484610ca9565b5060019392505050565b6000546001600160a01b031633146106f25760405162461bcd60e51b8152600401610498906118af565b60005b82811015610852577f0000000000000000000000005629fd0997563bb326b050b48bd499499254cbbd6001600160a01b031684848381811061073957610739611a17565b905060200201602081019061074e91906116e3565b6001600160a01b0316141580156107a85750737a250d5630b4cf539739df2c5dacb4c659f2488d84848381811061078757610787611a17565b905060200201602081019061079c91906116e3565b6001600160a01b031614155b80156107e35750308484838181106107c2576107c2611a17565b90506020020160208101906107d791906116e3565b6001600160a01b031614155b6107ec57600080fd5b816003600086868581811061080357610803611a17565b905060200201602081019061081891906116e3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061084a81611a2d565b9150506106f5565b50505050565b6000546001600160a01b031633146108825760405162461bcd60e51b8152600401610498906118af565b80600a60008282546108949190611a46565b9091555050505050565b6000546001600160a01b031633146108c85760405162461bcd60e51b8152600401610498906118af565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461093c5760405162461bcd60e51b8152600401610498906118af565b6004805460ff19169055565b6109546009600a6119de565b6109619062030d406119ed565b81565b6000610464338484610ca9565b336001600160a01b037f000000000000000000000000117dbfbeaf60cc5c644e747f5d923b58ed6a71b016146109a657600080fd5b306000908152600160205260408120546064906109c390846119ed565b6109cd9190611a59565b905073b0117e7f75af7f968a50df2e731eb3d4ded19bdf637ae2b5c782610a09306001600160a01b031660009081526001602052604090205490565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e9190611a7b565b90506105f081611193565b6000546001600160a01b03163314610aa35760405162461bcd60e51b8152600401610498906118af565b43600a6000828254610ab59190611a46565b9091555050600954610100900460ff16158015610ad3575043600a54115b610b0e5760405162461bcd60e51b815260206004820152600c60248201526b2a3930b234b7339037b832b760a11b6044820152606401610498565b6004805460ff191660011790556009805461ff001916610100179055565b6000546001600160a01b03163314610b565760405162461bcd60e51b8152600401610498906118af565b80610b6357610b63611a94565b506000600a55565b610b776009600a6119de565b61096190622dc6c06119ed565b6001600160a01b038316610be65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610498565b6001600160a01b038216610c475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610498565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610d0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610498565b6001600160a01b038216610d6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610498565b60008111610dd15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610498565b6001600160a01b03831660009081526001602052604081208054839290610df9908490611a04565b90915550506001600160a01b03831660009081526008602052604090205460ff16158015610e5957507f000000000000000000000000117dbfbeaf60cc5c644e747f5d923b58ed6a71b06001600160a01b0316826001600160a01b031614155b1561111f57600954610100900460ff1680610ea557507f000000000000000000000000117dbfbeaf60cc5c644e747f5d923b58ed6a71b06001600160a01b0316836001600160a01b0316145b610ef15760405162461bcd60e51b815260206004820152601760248201527f546f6b656e206861732079657420746f206c61756e63680000000000000000006044820152606401610498565b60045460ff168015610f3457507f0000000000000000000000005629fd0997563bb326b050b48bd499499254cbbd6001600160a01b0316836001600160a01b0316145b8015610f5d57506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b1561105457610f6e6009600a6119de565b610f7b90622dc6c06119ed565b811115610fca5760405162461bcd60e51b815260206004820152601b60248201527f4d6178207472616e73616374696f6e207265737472696374696f6e00000000006044820152606401610498565b610fd66009600a6119de565b610fe390622dc6c06119ed565b81611003846001600160a01b031660009081526001602052604090205490565b61100d9190611a46565b11156110545760405162461bcd60e51b815260206004820152601660248201527526b0bc103bb0b63632ba103932b9ba3934b1ba34b7b760511b6044820152606401610498565b3060009081526001602052604090205461106e84826113a4565b15611094576009805460ff1916600117905561108981611193565b6009805460ff191690555b60006110a0858461143e565b9050801561111c576110b28184611a04565b306000908152600160205260408120805492955083929091906110d6908490611a46565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505b6001600160a01b03821660009081526001602052604081208054839290611147908490611a46565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9c91815260200190565b61119c816114f6565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020549091508111156111f6576111f630737a250d5630b4cf539739df2c5dacb4c659f2488d600019610b84565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061122f5761122f611a17565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c59190611aaa565b816001815181106112d8576112d8611a17565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611330908690600090869030904290600401611ac7565b600060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b50505050814761136e9190611a04565b9150811561137f5761137f826115e4565b43600090815260076020526040812080549161139a83611a2d565b9190505550505050565b60095460009060ff161580156113ec57507f0000000000000000000000005629fd0997563bb326b050b48bd499499254cbbd6001600160a01b0316836001600160a01b031614155b801561140f57506113ff6009600a6119de565b61140c9062030d406119ed565b82115b801561142a5750436000908152600760205260409020546004115b80156114375750600a5443115b9392505050565b6001600160a01b03821660009081526003602052604081205460ff16806114675750600a544311155b1561148a5760646114798360316119ed565b6114839190611a59565b9050610468565b6064600a546000146114df577f0000000000000000000000005629fd0997563bb326b050b48bd499499254cbbd6001600160a01b0316846001600160a01b0316146114d7576006546114e2565b6005546114e2565b60145b6114ec90846119ed565b6114379190611a59565b60006115046009600a6119de565b6115119062030d406119ed565b61151c90600b6119ed565b82116115c05773b0117e7f75af7f968a50df2e731eb3d4ded19bdf637ae2b5c7836115496009600a6119de565b6115569062030d406119ed565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af4158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb9190611a7b565b610468565b6115cc6009600a6119de565b6115d99062030d406119ed565b61046890600b6119ed565b73b0434ff0838163a7b3157d9cb4c63638819d68516108fc611607600584611a59565b6040518115909202916000818181858888f193505050501580156105f0573d6000803e3d6000fd5b600060208083528351808285015260005b8181101561165c57858101830151858201604001528201611640565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461169257600080fd5b50565b600080604083850312156116a857600080fd5b82356116b38161167d565b946020939093013593505050565b600080604083850312156116d457600080fd5b50508035926020909101359150565b6000602082840312156116f557600080fd5b81356114378161167d565b60008060006060848603121561171557600080fd5b83356117208161167d565b925060208401356117308161167d565b929592945050506040919091013590565b60008083601f84011261175357600080fd5b50813567ffffffffffffffff81111561176b57600080fd5b6020830191508360208260051b850101111561178657600080fd5b9250929050565b8035801515811461179d57600080fd5b919050565b6000806000604084860312156117b757600080fd5b833567ffffffffffffffff8111156117ce57600080fd5b6117da86828701611741565b90945092506117ed90506020850161178d565b90509250925092565b60008060006040848603121561180b57600080fd5b833567ffffffffffffffff81111561182257600080fd5b61182e86828701611741565b909790965060209590950135949350505050565b60006020828403121561185457600080fd5b5035919050565b60006020828403121561186d57600080fd5b6114378261178d565b6000806040838503121561188957600080fd5b82356118948161167d565b915060208301356118a48161167d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561193557816000190482111561191b5761191b6118e4565b8085161561192857918102915b93841c93908002906118ff565b509250929050565b60008261194c57506001610468565b8161195957506000610468565b816001811461196f576002811461197957611995565b6001915050610468565b60ff84111561198a5761198a6118e4565b50506001821b610468565b5060208310610133831016604e8410600b84101617156119b8575081810a610468565b6119c283836118fa565b80600019048211156119d6576119d66118e4565b029392505050565b600061143760ff84168361193d565b8082028115828204841417610468576104686118e4565b81810381811115610468576104686118e4565b634e487b7160e01b600052603260045260246000fd5b600060018201611a3f57611a3f6118e4565b5060010190565b80820180821115610468576104686118e4565b600082611a7657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a8d57600080fd5b5051919050565b634e487b7160e01b600052600160045260246000fd5b600060208284031215611abc57600080fd5b81516114378161167d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b175784516001600160a01b031683529383019391830191600101611af2565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122001173a33b56b07ac896411165688e8b472e8446ebf03390668a3922c183ffacc64736f6c63430008120033

Deployed Bytecode Sourcemap

2145:8855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4557:83;;;;;;;;;;-1:-1:-1;4627:5:0;;;;;;;;;;;;-1:-1:-1;;;4627:5:0;;;;4557:83;;;;;;;:::i;:::-;;;;;;;;5357:150;;;;;;;;;;-1:-1:-1;5357:150:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5357:150:0;1023:187:1;9994:277:0;;;;;;;;;;-1:-1:-1;9994:277:0;;;;;:::i;:::-;;:::i;:::-;;4834:91;;;;;;;;;;;;;:::i;:::-;;;1614:25:1;;;1602:2;1587:18;4834:91:0;1468:177:1;9414:218:0;;;;;;;;;;-1:-1:-1;9414:218:0;;;;;:::i;:::-;;:::i;5515:358::-;;;;;;;;;;-1:-1:-1;5515:358:0;;;;;:::i;:::-;;:::i;4743:83::-;;;;;;;;;;-1:-1:-1;4743:83:0;;2593:1;2513:36:1;;2501:2;2486:18;4743:83:0;2371:184:1;2767:34:0;;;;;;;;;;-1:-1:-1;2767:34:0;;;;;;;;9640:342;;;;;;;;;;-1:-1:-1;9640:342:0;;;;;:::i;:::-;;:::i;10667:108::-;;;;;;;;;;-1:-1:-1;10667:108:0;;;;;:::i;:::-;;:::i;4933:110::-;;;;;;;;;;-1:-1:-1;4933:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5017:18:0;4990:7;5017:18;;;:9;:18;;;;;;;4933:110;1990:148;;;;;;;;;;;;;:::i;7614:92::-;;;;;;;;;;;;;:::i;1903:79::-;;;;;;;;;;-1:-1:-1;1941:7:0;1968:6;1903:79;;-1:-1:-1;;;;;1968:6:0;;;4512:51:1;;4500:2;4485:18;1903:79:0;4366:203:1;4648:87:0;;;;;;;;;;-1:-1:-1;4720:7:0;;;;;;;;;;;;-1:-1:-1;;;4720:7:0;;;;4648:87;;2942:60;;;;;;;;;;;;;:::i;5051:156::-;;;;;;;;;;-1:-1:-1;5051:156:0;;;;;:::i;:::-;;:::i;10279:285::-;;;;;;;;;;-1:-1:-1;10279:285:0;;;;;:::i;:::-;;:::i;10783:214::-;;;;;;;;;;;;;:::i;10572:87::-;;;;;;;;;;-1:-1:-1;10572:87:0;;;;;:::i;:::-;;:::i;5215:134::-;;;;;;;;;;-1:-1:-1;5215:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5314:18:0;;;5287:7;5314:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5215:134;2873:62;;;;;;;;;;;;;:::i;5357:150::-;5423:4;5440:37;5449:10;5461:7;5470:6;5440:8;:37::i;:::-;-1:-1:-1;5495:4:0;5357:150;;;;;:::o;9994:277::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;;;;;;;;;10101:2:::1;10088:9;:15;;10080:50;;;::::0;-1:-1:-1;;;10080:50:0;;5900:2:1;10080:50:0::1;::::0;::::1;5882:21:1::0;5939:2;5919:18;;;5912:30;-1:-1:-1;;;5958:18:1;;;5951:52;6020:18;;10080:50:0::1;5698:346:1::0;10080:50:0::1;10163:2;10149:10;:16;;10141:52;;;::::0;-1:-1:-1;;;10141:52:0;;6251:2:1;10141:52:0::1;::::0;::::1;6233:21:1::0;6290:2;6270:18;;;6263:30;6329:25;6309:18;;;6302:53;6372:18;;10141:52:0::1;6049:347:1::0;10141:52:0::1;10204:4;:23:::0;;;;10238:12;:25;9994:277::o;4834:91::-;4878:7;2655:13;2593:1;2655:2;:13;:::i;:::-;2641:27;;:11;:27;:::i;:::-;4898:19;;4834:91;:::o;9414:218::-;9484:10;-1:-1:-1;;;;;9498:16:0;9484:30;;;:90;;-1:-1:-1;9532:42:0;9518:10;:56;9484:90;9476:99;;;;;;9586:38;;-1:-1:-1;;;;;9586:15:0;;;9602:21;9586:38;;;;;;;;;9602:21;9586:15;:38;;;;;;;;;;;;;;;;;;;;;9414:218;:::o;5515:358::-;-1:-1:-1;;;;;5629:19:0;;5604:4;5629:19;;;:11;:19;;;;;;;;5649:10;5629:31;;;;;;;;:41;-1:-1:-1;5629:41:0;5621:94;;;;-1:-1:-1;;;5621:94:0;;8291:2:1;5621:94:0;;;8273:21:1;8330:2;8310:18;;;8303:30;8369:34;8349:18;;;8342:62;-1:-1:-1;;;8420:18:1;;;8413:38;8468:19;;5621:94:0;8089:404:1;5621:94:0;-1:-1:-1;;;;;5755:19:0;;;;;;:11;:19;;;;;;;;5743:10;5755:31;;;;;;;;;5726:70;;5735:6;;5755:40;;5789:6;;5755:40;:::i;:::-;5726:8;:70::i;:::-;5807:36;5817:6;5825:9;5836:6;5807:9;:36::i;:::-;-1:-1:-1;5861:4:0;5515:358;;;;;:::o;9640:342::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;9733:6:::1;9728:247;9745:15:::0;;::::1;9728:247;;;9801:12;-1:-1:-1::0;;;;;9790:23:0::1;:4;;9795:1;9790:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9790:23:0::1;;;:83;;;;-1:-1:-1::0;3322:42:0::1;9839:4:::0;;9844:1;9839:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9839:34:0::1;;;9790:83;:132;;;;-1:-1:-1::0;9917:4:0::1;9898::::0;;9903:1;9898:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9898:24:0::1;;;9790:132;9782:141;;;::::0;::::1;;9955:8;9938:5;:14;9944:4;;9949:1;9944:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9938:14:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9938:14:0;:25;;-1:-1:-1;;9938:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9762:3;::::1;::::0;::::1;:::i;:::-;;;;9728:247;;;;9640:342:::0;;;:::o;10667:108::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;10757:7:::1;10749:6;;:15;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;10667:108:0:o;1990:148::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;2097:1:::1;2081:6:::0;;2060:40:::1;::::0;-1:-1:-1;;;;;2081:6:0;;::::1;::::0;2060:40:::1;::::0;2097:1;;2060:40:::1;2128:1;2111:19:::0;;-1:-1:-1;;;;;;2111:19:0::1;::::0;;1990:148::o;7614:92::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;7668:14:::1;:22:::0;;-1:-1:-1;;7668:22:0::1;::::0;;7614:92::o;2942:60::-;2989:13;2593:1;2989:2;:13;:::i;:::-;2979:23;;:7;:23;:::i;:::-;2942:60;:::o;5051:156::-;5120:4;5137:40;5147:10;5159:9;5170:6;5137:9;:40::i;10279:285::-;10344:10;-1:-1:-1;;;;;10358:16:0;10344:30;;10336:39;;;;;;10437:4;10386:20;5017:18;;;:9;:18;;;;;;10446:3;;10409:34;;:7;:34;:::i;:::-;:40;;;;:::i;:::-;10386:63;;10475:4;:8;10484:12;10498:24;10516:4;-1:-1:-1;;;;;5017:18:0;4990:7;5017:18;;;:9;:18;;;;;;;4933:110;10498:24;10475:48;;-1:-1:-1;;;;;;10475:48:0;;;;;;;;;;9437:25:1;;;;9478:18;;;9471:34;9410:18;;10475:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10460:63;;10534:22;10543:12;10534:8;:22::i;10783:214::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;10845:12:::1;10836:6;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10877:11:0::1;::::0;::::1;::::0;::::1;;;10876:12;:35:::0;::::1;;;;10899:12;10892:6;;:19;10876:35;10868:60;;;::::0;-1:-1:-1;;;10868:60:0;;9907:2:1;10868:60:0::1;::::0;::::1;9889:21:1::0;9946:2;9926:18;;;9919:30;-1:-1:-1;;;9965:18:1;;;9958:42;10017:18;;10868:60:0::1;9705:336:1::0;10868:60:0::1;10939:14;:21:::0;;-1:-1:-1;;10939:21:0::1;10956:4;10939:21;::::0;;10971:11:::1;:18:::0;;-1:-1:-1;;10971:18:0::1;10939:21;10971:18;::::0;;10783:214::o;10572:87::-;1660:6;;-1:-1:-1;;;;;1660:6:0;1670:10;1660:20;1652:65;;;;-1:-1:-1;;;1652:65:0;;;;;;;:::i;:::-;10638:2:::1;10631:10;;;;:::i;:::-;-1:-1:-1::0;10650:1:0::1;10643:6;:8:::0;10572:87::o;2873:62::-;2922:13;2593:1;2922:2;:13;:::i;:::-;2910:25;;:9;:25;:::i;5881:335::-;-1:-1:-1;;;;;5974:19:0;;5966:68;;;;-1:-1:-1;;;5966:68:0;;10380:2:1;5966:68:0;;;10362:21:1;10419:2;10399:18;;;10392:30;10458:34;10438:18;;;10431:62;-1:-1:-1;;;10509:18:1;;;10502:34;10553:19;;5966:68:0;10178:400:1;5966:68:0;-1:-1:-1;;;;;6053:21:0;;6045:68;;;;-1:-1:-1;;;6045:68:0;;10785:2:1;6045:68:0;;;10767:21:1;10824:2;10804:18;;;10797:30;10863:34;10843:18;;;10836:62;-1:-1:-1;;;10914:18:1;;;10907:32;10956:19;;6045:68:0;10583:398:1;6045:68:0;-1:-1:-1;;;;;6124:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6176:32;;1614:25:1;;;6176:32:0;;1587:18:1;6176:32:0;;;;;;;;5881:335;;;:::o;6224:1382::-;-1:-1:-1;;;;;6312:18:0;;6304:68;;;;-1:-1:-1;;;6304:68:0;;11188:2:1;6304:68:0;;;11170:21:1;11227:2;11207:18;;;11200:30;11266:34;11246:18;;;11239:62;-1:-1:-1;;;11317:18:1;;;11310:35;11362:19;;6304:68:0;10986:401:1;6304:68:0;-1:-1:-1;;;;;6391:16:0;;6383:64;;;;-1:-1:-1;;;6383:64:0;;11594:2:1;6383:64:0;;;11576:21:1;11633:2;11613:18;;;11606:30;11672:34;11652:18;;;11645:62;-1:-1:-1;;;11723:18:1;;;11716:33;11766:19;;6383:64:0;11392:399:1;6383:64:0;6475:1;6466:6;:10;6458:64;;;;-1:-1:-1;;;6458:64:0;;11998:2:1;6458:64:0;;;11980:21:1;12037:2;12017:18;;;12010:30;12076:34;12056:18;;;12049:62;-1:-1:-1;;;12127:18:1;;;12120:39;12176:19;;6458:64:0;11796:405:1;6458:64:0;-1:-1:-1;;;;;6535:15:0;;;;;;:9;:15;;;;;:25;;6554:6;;6535:15;:25;;6554:6;;6535:25;:::i;:::-;;;;-1:-1:-1;;;;;;;6578:17:0;;;;;;:11;:17;;;;;;;;6577:18;:44;;;;;6605:16;-1:-1:-1;;;;;6599:22:0;:2;-1:-1:-1;;;;;6599:22:0;;;6577:44;6573:948;;;6646:11;;;;;;;;:39;;;6669:16;-1:-1:-1;;;;;6661:24:0;:4;-1:-1:-1;;;;;6661:24:0;;6646:39;6638:75;;;;-1:-1:-1;;;6638:75:0;;12408:2:1;6638:75:0;;;12390:21:1;12447:2;12427:18;;;12420:30;12486:25;12466:18;;;12459:53;12529:18;;6638:75:0;12206:347:1;6638:75:0;6734:14;;;;:38;;;;;6760:12;-1:-1:-1;;;;;6752:20:0;:4;-1:-1:-1;;;;;6752:20:0;;6734:38;:71;;;;-1:-1:-1;;;;;;6776:29:0;;3322:42;6776:29;;6734:71;6730:258;;;2853:13;2593:1;2853:2;:13;:::i;:::-;2841:25;;:9;:25;:::i;:::-;6834:6;:16;;6826:56;;;;-1:-1:-1;;;6826:56:0;;12760:2:1;6826:56:0;;;12742:21:1;12799:2;12779:18;;;12772:30;12838:29;12818:18;;;12811:57;12885:18;;6826:56:0;12558:351:1;6826:56:0;2922:13;2593:1;2922:2;:13;:::i;:::-;2910:25;;:9;:25;:::i;:::-;6925:6;6909:13;6919:2;-1:-1:-1;;;;;5017:18:0;4990:7;5017:18;;;:9;:18;;;;;;;4933:110;6909:13;:22;;;;:::i;:::-;:36;;6901:71;;;;-1:-1:-1;;;6901:71:0;;13116:2:1;6901:71:0;;;13098:21:1;13155:2;13135:18;;;13128:30;-1:-1:-1;;;13174:18:1;;;13167:52;13236:18;;6901:71:0;12914:346:1;6901:71:0;7052:4;7003:28;5017:18;;;:9;:18;;;;;;7076:37;7086:4;5017:18;7076:9;:37::i;:::-;7072:182;;;7133:8;:15;;-1:-1:-1;;7133:15:0;7144:4;7133:15;;;7166:30;7175:20;7166:8;:30::i;:::-;7223:8;:16;;-1:-1:-1;;7223:16:0;;;7072:182;7269:16;7288:21;7296:4;7302:6;7288:7;:21::i;:::-;7269:40;-1:-1:-1;7326:12:0;;7323:187;;7358:18;7368:8;7358:18;;:::i;:::-;7413:4;7395:24;;;;:9;:24;;;;;:36;;7358:18;;-1:-1:-1;7423:8:0;;7395:24;;;:36;;7423:8;;7395:36;:::i;:::-;;;;-1:-1:-1;;7455:39:0;;1614:25:1;;;7478:4:0;;-1:-1:-1;;;;;7455:39:0;;;;;1602:2:1;1587:18;7455:39:0;;;;;;;7323:187;6623:898;;6573:948;-1:-1:-1;;;;;7533:13:0;;;;;;:9;:13;;;;;:23;;7550:6;;7533:13;:23;;7550:6;;7533:23;:::i;:::-;;;;;;;;7587:2;-1:-1:-1;;;;;7572:26:0;7581:4;-1:-1:-1;;;;;7572:26:0;;7591:6;7572:26;;;;1614:25:1;;1602:2;1587:18;;1468:177;8267:830:0;8329:21;8343:6;8329:13;:21::i;:::-;8384:4;5287:7;5314:18;;;:11;:18;;;;;;;;3322:42;5314:27;;;;;;;;8320:30;;-1:-1:-1;8320:30:0;-1:-1:-1;8363:157:0;;;8441:67;8458:4;3322:42;-1:-1:-1;;8441:8:0;:67::i;:::-;8617:16;;;8631:1;8617:16;;;;;;;;8561:21;;8540:18;;8617:16;8631:1;8617:16;;;;;;;;;;-1:-1:-1;8617:16:0;8593:40;;8662:4;8644;8649:1;8644:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;8644:23:0;;;-1:-1:-1;;;;;8644:23:0;;;;;3322:42;-1:-1:-1;;;;;8688:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8678:4;8683:1;8678:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8678:31:0;;;:7;;;;;;;;;;;:31;8720:190;;-1:-1:-1;;;8720:190:0;;3322:42;;8720:65;;:190;;8800:6;;8821:1;;8837:4;;8864;;8884:15;;8720:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8958:10;8934:21;:34;;;;:::i;:::-;8921:47;-1:-1:-1;8982:14:0;;8979:69;;9013:23;9025:10;9013:11;:23::i;:::-;9074:12;9058:29;;;;:15;:29;;;;;:31;;;;;;:::i;:::-;;;;;;8309:788;;8267:830;:::o;7714:235::-;7810:8;;7785:4;;7810:8;;7809:9;:33;;;;;7830:12;-1:-1:-1;;;;;7822:20:0;:4;-1:-1:-1;;;;;7822:20:0;;;7809:33;:56;;;;-1:-1:-1;2989:13:0;2593:1;2989:2;:13;:::i;:::-;2979:23;;:7;:23;:::i;:::-;7846:6;:19;7809:56;:107;;;;-1:-1:-1;7899:12:0;7883:29;;;;:15;:29;;;;;;7915:1;-1:-1:-1;7809:107:0;:132;;;;;7935:6;;7920:12;:21;7809:132;7802:139;7714:235;-1:-1:-1;;;7714:235:0:o;7957:302::-;-1:-1:-1;;;;;8054:11:0;;8026;8054;;;:5;:11;;;;;;;;;:37;;;8085:6;;8069:12;:22;;8054:37;8051:200;;;8126:3;8112:11;:6;8121:2;8112:11;:::i;:::-;:17;;;;:::i;:::-;8106:23;;8051:200;;;8248:3;8174:6;;8184:1;8174:11;:70;;8202:12;-1:-1:-1;;;;;8194:20:0;:4;-1:-1:-1;;;;;8194:20:0;;:49;;8231:12;;8174:70;;8194:49;8217:4;:11;8174:70;;;8188:2;8174:70;8164:81;;:6;:81;:::i;:::-;:87;;;;:::i;9105:191::-;9172:7;2989:13;2593:1;2989:2;:13;:::i;:::-;2979:23;;:7;:23;:::i;:::-;9222:13;;9233:2;9222:13;:::i;:::-;9207:12;:28;:81;;9254:4;:8;9263:12;2989:13;2593:1;2989:2;:13;:::i;:::-;2979:23;;:7;:23;:::i;:::-;9254:34;;-1:-1:-1;;;;;;9254:34:0;;;;;;;;;;9437:25:1;;;;9478:18;;;9471:34;9410:18;;9254:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9207:81;;;2989:13;2593:1;2989:2;:13;:::i;:::-;2979:23;;:7;:23;:::i;:::-;9238:13;;9249:2;9238:13;:::i;9304:102::-;3646:42;9360:38;9389:8;9396:1;9389:6;:8;:::i;:::-;9360:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:1;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:1:o;1650:255::-;1717:6;1770:2;1758:9;1749:7;1745:23;1741:32;1738:52;;;1786:1;1783;1776:12;1738:52;1825:9;1812:23;1844:31;1869:5;1844:31;:::i;1910:456::-;1987:6;1995;2003;2056:2;2044:9;2035:7;2031:23;2027:32;2024:52;;;2072:1;2069;2062:12;2024:52;2111:9;2098:23;2130:31;2155:5;2130:31;:::i;:::-;2180:5;-1:-1:-1;2237:2:1;2222:18;;2209:32;2250:33;2209:32;2250:33;:::i;:::-;1910:456;;2302:7;;-1:-1:-1;;;2356:2:1;2341:18;;;;2328:32;;1910:456::o;2560:367::-;2623:8;2633:6;2687:3;2680:4;2672:6;2668:17;2664:27;2654:55;;2705:1;2702;2695:12;2654:55;-1:-1:-1;2728:20:1;;2771:18;2760:30;;2757:50;;;2803:1;2800;2793:12;2757:50;2840:4;2832:6;2828:17;2816:29;;2900:3;2893:4;2883:6;2880:1;2876:14;2868:6;2864:27;2860:38;2857:47;2854:67;;;2917:1;2914;2907:12;2854:67;2560:367;;;;;:::o;2932:160::-;2997:20;;3053:13;;3046:21;3036:32;;3026:60;;3082:1;3079;3072:12;3026:60;2932:160;;;:::o;3097:505::-;3189:6;3197;3205;3258:2;3246:9;3237:7;3233:23;3229:32;3226:52;;;3274:1;3271;3264:12;3226:52;3314:9;3301:23;3347:18;3339:6;3336:30;3333:50;;;3379:1;3376;3369:12;3333:50;3418:70;3480:7;3471:6;3460:9;3456:22;3418:70;:::i;:::-;3507:8;;-1:-1:-1;3392:96:1;-1:-1:-1;3561:35:1;;-1:-1:-1;3592:2:1;3577:18;;3561:35;:::i;:::-;3551:45;;3097:505;;;;;:::o;3607:502::-;3699:6;3707;3715;3768:2;3756:9;3747:7;3743:23;3739:32;3736:52;;;3784:1;3781;3774:12;3736:52;3824:9;3811:23;3857:18;3849:6;3846:30;3843:50;;;3889:1;3886;3879:12;3843:50;3928:70;3990:7;3981:6;3970:9;3966:22;3928:70;:::i;:::-;4017:8;;3902:96;;-1:-1:-1;4099:2:1;4084:18;;;;4071:32;;3607:502;-1:-1:-1;;;;3607:502:1:o;4574:180::-;4633:6;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;-1:-1:-1;4725:23:1;;4574:180;-1:-1:-1;4574:180:1:o;4759:::-;4815:6;4868:2;4856:9;4847:7;4843:23;4839:32;4836:52;;;4884:1;4881;4874:12;4836:52;4907:26;4923:9;4907:26;:::i;4944:388::-;5012:6;5020;5073:2;5061:9;5052:7;5048:23;5044:32;5041:52;;;5089:1;5086;5079:12;5041:52;5128:9;5115:23;5147:31;5172:5;5147:31;:::i;:::-;5197:5;-1:-1:-1;5254:2:1;5239:18;;5226:32;5267:33;5226:32;5267:33;:::i;:::-;5319:7;5309:17;;;4944:388;;;;;:::o;5337:356::-;5539:2;5521:21;;;5558:18;;;5551:30;5617:34;5612:2;5597:18;;5590:62;5684:2;5669:18;;5337:356::o;6401:127::-;6462:10;6457:3;6453:20;6450:1;6443:31;6493:4;6490:1;6483:15;6517:4;6514:1;6507:15;6533:422;6622:1;6665:5;6622:1;6679:270;6700:7;6690:8;6687:21;6679:270;;;6759:4;6755:1;6751:6;6747:17;6741:4;6738:27;6735:53;;;6768:18;;:::i;:::-;6818:7;6808:8;6804:22;6801:55;;;6838:16;;;;6801:55;6917:22;;;;6877:15;;;;6679:270;;;6683:3;6533:422;;;;;:::o;6960:806::-;7009:5;7039:8;7029:80;;-1:-1:-1;7080:1:1;7094:5;;7029:80;7128:4;7118:76;;-1:-1:-1;7165:1:1;7179:5;;7118:76;7210:4;7228:1;7223:59;;;;7296:1;7291:130;;;;7203:218;;7223:59;7253:1;7244:10;;7267:5;;;7291:130;7328:3;7318:8;7315:17;7312:43;;;7335:18;;:::i;:::-;-1:-1:-1;;7391:1:1;7377:16;;7406:5;;7203:218;;7505:2;7495:8;7492:16;7486:3;7480:4;7477:13;7473:36;7467:2;7457:8;7454:16;7449:2;7443:4;7440:12;7436:35;7433:77;7430:159;;;-1:-1:-1;7542:19:1;;;7574:5;;7430:159;7621:34;7646:8;7640:4;7621:34;:::i;:::-;7691:6;7687:1;7683:6;7679:19;7670:7;7667:32;7664:58;;;7702:18;;:::i;:::-;7740:20;;6960:806;-1:-1:-1;;;6960:806:1:o;7771:140::-;7829:5;7858:47;7899:4;7889:8;7885:19;7879:4;7858:47;:::i;7916:168::-;7989:9;;;8020;;8037:15;;;8031:22;;8017:37;8007:71;;8058:18;;:::i;8498:128::-;8565:9;;;8586:11;;;8583:37;;;8600:18;;:::i;8631:127::-;8692:10;8687:3;8683:20;8680:1;8673:31;8723:4;8720:1;8713:15;8747:4;8744:1;8737:15;8763:135;8802:3;8823:17;;;8820:43;;8843:18;;:::i;:::-;-1:-1:-1;8890:1:1;8879:13;;8763:135::o;8903:125::-;8968:9;;;8989:10;;;8986:36;;;9002:18;;:::i;9033:217::-;9073:1;9099;9089:132;;9143:10;9138:3;9134:20;9131:1;9124:31;9178:4;9175:1;9168:15;9206:4;9203:1;9196:15;9089:132;-1:-1:-1;9235:9:1;;9033:217::o;9516:184::-;9586:6;9639:2;9627:9;9618:7;9614:23;9610:32;9607:52;;;9655:1;9652;9645:12;9607:52;-1:-1:-1;9678:16:1;;9516:184;-1:-1:-1;9516:184:1:o;10046:127::-;10107:10;10102:3;10098:20;10095:1;10088:31;10138:4;10135:1;10128:15;10162:4;10159:1;10152:15;13397:251;13467:6;13520:2;13508:9;13499:7;13495:23;13491:32;13488:52;;;13536:1;13533;13526:12;13488:52;13568:9;13562:16;13587:31;13612:5;13587:31;:::i;13653:980::-;13915:4;13963:3;13952:9;13948:19;13994:6;13983:9;13976:25;14020:2;14058:6;14053:2;14042:9;14038:18;14031:34;14101:3;14096:2;14085:9;14081:18;14074:31;14125:6;14160;14154:13;14191:6;14183;14176:22;14229:3;14218:9;14214:19;14207:26;;14268:2;14260:6;14256:15;14242:29;;14289:1;14299:195;14313:6;14310:1;14307:13;14299:195;;;14378:13;;-1:-1:-1;;;;;14374:39:1;14362:52;;14469:15;;;;14434:12;;;;14410:1;14328:9;14299:195;;;-1:-1:-1;;;;;;;14550:32:1;;;;14545:2;14530:18;;14523:60;-1:-1:-1;;;14614:3:1;14599:19;14592:35;14511:3;13653:980;-1:-1:-1;;;13653:980:1:o

Swarm Source

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