ETH Price: $3,416.76 (-0.64%)
Gas: 2 Gwei

Token

Bulletproof (BULLETPF)
 

Overview

Max Total Supply

9,000,000,000 BULLETPF

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
143,038,947.874184858352461126 BULLETPF

Value
$0.00
0xd06031e837fb6db0de944ec7a27fa63b71bf789e
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:
bulletproof

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-01
*/

/*

TG: https://t.me/BulletProofCommunity

Our trucks are bulletproof!
https://twitter.com/elonmusk/status/1730330826259243031

*/

// SPDX-License-Identifier: NONE

pragma solidity 0.8.15;

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

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

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;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

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 factory() external pure returns (address);
    function WETH() external pure returns (address);
}

contract bulletproof is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    
    uint256 private _buyMarketingFee = 10;
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;
    
    uint256 private _sellMarketingFee = 10;
    uint256 private _previousSellMarketingFee = _sellMarketingFee;
    
    address payable private _marketingWallet;
    
    string public constant name = "Bulletproof";
    string public constant symbol = "BULLETPF";
    uint8 public constant decimals = 18;
    uint256 public constant totalSupply = 9000000000 * 10**decimals;
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    
    uint256 private _maxBuyAmount = totalSupply / 50;
    uint256 private _maxSellAmount = totalSupply / 50;
    uint256 private _maxWalletAmount = totalSupply / 50;
    uint256 private swapTokensAtAmount = totalSupply / 500;
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _marketingWallet = payable(msg.sender);

        _rOwned[_msgSender()] = totalSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        emit Transfer(address(0), _msgSender(), totalSupply);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _approve(address(this), address(uniswapV2Router), totalSupply);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

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

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

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

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

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

    function setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

    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");
        bool takeFee = false;
        bool shouldSwap = false;

        if(from != owner() && to != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from]) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from,to,amount,takeFee, shouldSwap);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        
        if(contractBalance == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 5) {
            contractBalance = swapTokensAtAmount * 5;
        }
        swapTokensForEth(contractBalance); 
        (success,) = address(_marketingWallet).call{value: address(this).balance}("");
    }

    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 openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;        
    }

    function removeLimits() external onlyOwner {
        _maxBuyAmount = totalSupply;
        _maxSellAmount = totalSupply;
        _maxWalletAmount = totalSupply;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount, bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
        swapTokensAtAmount = newAmount;
    }

    function setMarketingWallet(address MarketingWallet) external onlyOwner() {
        _marketingWallet = payable(MarketingWallet);
    }

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyMarketingFee) external onlyOwner {
        require(buyMarketingFee <= 10, "Must keep buy taxes below 10%");
        _buyMarketingFee = buyMarketingFee;
    }

    function setSellFee(uint256 sellMarketingFee) external onlyOwner {
        require(sellMarketingFee <= 10, "Must keep sell taxes below 10%");
        _sellMarketingFee = sellMarketingFee;
    }

    function removeAllFee() private {
        if(_buyMarketingFee == 0 && _sellMarketingFee == 0) return;
        
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousSellMarketingFee = _sellMarketingFee;
        
        _buyMarketingFee = 0;
        _sellMarketingFee = 0;
    }
    
    function restoreAllFee() private {
        _buyMarketingFee = _previousBuyMarketingFee;
        _sellMarketingFee = _previousSellMarketingFee;
    }

        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        
        _totalFees = _getTotalFees(isSell);

        uint256 fees = amount.mul(_totalFees).div(100);
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        _marketingWallet.transfer(contractETHBalance);
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellMarketingFee;
        }
        return _buyMarketingFee;
    }
}

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":[{"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"buyMarketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a60058190556006819055600781905560088190556009805463ffff00ff60a01b191690556032906200003b906012906200067a565b6200004c90640218711a0062000692565b620000589190620006b4565b600a5560326012600a6200006d91906200067a565b6200007e90640218711a0062000692565b6200008a9190620006b4565b600b5560326200009d6012600a6200067a565b620000ae90640218711a0062000692565b620000ba9190620006b4565b600c556101f4620000ce6012600a6200067a565b620000df90640218711a0062000692565b620000eb9190620006b4565b600d55348015620000fb57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b031916331790556200015d6012600a6200067a565b6200016e90640218711a0062000692565b3360008181526002602090815260408083209490945581546001600160a01b03908116835260049091528382208054600160ff199182168117909255308452858420805482168317905560095490921683529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001fe6012600a6200067a565b6200020f90640218711a0062000692565b60405190815260200160405180910390a3737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526200026530826200024e6012600a6200067a565b6200025f90640218711a0062000692565b62000439565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ca9190620006d7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e9190620006d7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b29190620006d7565b6001600160a01b0390811660a081905260805160405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af11580156200040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000431919062000702565b505062000726565b6001600160a01b038316620004a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000498565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005bc578160001904821115620005a057620005a062000565565b80851615620005ae57918102915b93841c939080029062000580565b509250929050565b600082620005d55750600162000674565b81620005e45750600062000674565b8160018114620005fd5760028114620006085762000628565b600191505062000674565b60ff8411156200061c576200061c62000565565b50506001821b62000674565b5060208310610133831016604e8410600b84101617156200064d575081810a62000674565b6200065983836200057b565b806000190482111562000670576200067062000565565b0290505b92915050565b60006200068b60ff841683620005c4565b9392505050565b6000816000190483118215151615620006af57620006af62000565565b500290565b600082620006d257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006ea57600080fd5b81516001600160a01b03811681146200068b57600080fd5b6000602082840312156200071557600080fd5b815180151581146200068b57600080fd5b60805160a051611be06200077d600039600081816102fd01528181610e0a0152610f9201526000818161022701528181610e4601528181610fce015281816112610152818161131a01526113560152611be06000f3fe60806040526004361061016a5760003560e01c8063751039fc116100d1578063c3c8cd801161008a578063e01af92c11610064578063e01af92c146104c1578063ea2f0b37146104e1578063f429389014610501578063ffb54a991461051657600080fd5b8063c3c8cd8014610451578063c9567bf914610466578063dd62ed3e1461047b57600080fd5b8063751039fc1461038a5780638b4cee081461039f5780638da5cb5b146103bf57806395d89b41146103dd578063a9059cbb14610411578063b1fde9f81461043157600080fd5b8063313ce56711610123578063313ce567146102a4578063437823ec146102cb57806349bd5a5e146102eb5780635d098b381461031f57806370a082311461033f578063715018a61461037557600080fd5b806306fdde0314610176578063095ea7b3146101c35780630cc835a3146101f35780631694505e1461021557806318160ddd1461026157806323b872dd1461028457600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101ad6040518060400160405280600b81526020016a213ab63632ba383937b7b360a91b81525081565b6040516101ba919061178e565b60405180910390f35b3480156101cf57600080fd5b506101e36101de3660046117f8565b610537565b60405190151581526020016101ba565b3480156101ff57600080fd5b5061021361020e366004611824565b61054e565b005b34801561022157600080fd5b506102497f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ba565b34801561026d57600080fd5b506102766105d7565b6040519081526020016101ba565b34801561029057600080fd5b506101e361029f36600461183d565b6105f5565b3480156102b057600080fd5b506102b9601281565b60405160ff90911681526020016101ba565b3480156102d757600080fd5b506102136102e636600461187e565b61065e565b3480156102f757600080fd5b506102497f000000000000000000000000000000000000000000000000000000000000000081565b34801561032b57600080fd5b5061021361033a36600461187e565b6106ac565b34801561034b57600080fd5b5061027661035a36600461187e565b6001600160a01b031660009081526002602052604090205490565b34801561038157600080fd5b506102136106f8565b34801561039657600080fd5b5061021361076c565b3480156103ab57600080fd5b506102136103ba366004611824565b6107f4565b3480156103cb57600080fd5b506000546001600160a01b0316610249565b3480156103e957600080fd5b506101ad60405180604001604052806008815260200167212aa62622aa282360c11b81525081565b34801561041d57600080fd5b506101e361042c3660046117f8565b610874565b34801561043d57600080fd5b5061021361044c3660046118b0565b610881565b34801561045d57600080fd5b506102136108cc565b34801561047257600080fd5b50610213610912565b34801561048757600080fd5b506102766104963660046118dc565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104cd57600080fd5b506102136104dc366004611915565b6109b1565b3480156104ed57600080fd5b506102136104fc36600461187e565b6109f9565b34801561050d57600080fd5b50610213610a44565b34801561052257600080fd5b506009546101e390600160a01b900460ff1681565b6000610544338484610aac565b5060015b92915050565b6000546001600160a01b031633146105815760405162461bcd60e51b815260040161057890611930565b60405180910390fd5b600a8111156105d25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203130250000006044820152606401610578565b600555565b6105e36012600a611a5f565b6105f290640218711a00611a6e565b81565b6000610602848484610bd1565b610654843361064f85604051806060016040528060288152602001611b83602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906111bd565b610aac565b5060019392505050565b6000546001600160a01b031633146106885760405162461bcd60e51b815260040161057890611930565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146106d65760405162461bcd60e51b815260040161057890611930565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107225760405162461bcd60e51b815260040161057890611930565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107965760405162461bcd60e51b815260040161057890611930565b6107a26012600a611a5f565b6107b190640218711a00611a6e565b600a9081556107c290601290611a5f565b6107d190640218711a00611a6e565b600b556107e06012600a611a5f565b6107ef90640218711a00611a6e565b600c55565b6000546001600160a01b0316331461081e5760405162461bcd60e51b815260040161057890611930565b600a81111561086f5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772031302500006044820152606401610578565b600755565b6000610544338484610bd1565b6000546001600160a01b031633146108ab5760405162461bcd60e51b815260040161057890611930565b60098054911515600160b81b0260ff60b81b19909216919091179055600d55565b6000546001600160a01b031633146108f65760405162461bcd60e51b815260040161057890611930565b3060009081526002602052604090205461090f816111f7565b50565b6000546001600160a01b0316331461093c5760405162461bcd60e51b815260040161057890611930565b600954600160a01b900460ff16156109965760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610578565b6009805463ff0000ff60a01b1916630100000160a01b179055565b6000546001600160a01b031633146109db5760405162461bcd60e51b815260040161057890611930565b60098054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610a235760405162461bcd60e51b815260040161057890611930565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314610a6e5760405162461bcd60e51b815260040161057890611930565b60095460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610aa8573d6000803e3d6000fd5b5050565b6001600160a01b038316610b0e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610578565b6001600160a01b038216610b6f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610578565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610c355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610578565b6001600160a01b038216610c975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610578565b60008111610cf95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610578565b600080610d0e6000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610d3d57506000546001600160a01b03858116911614155b15610d9257600954600160a01b900460ff16610d925760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610578565b6000546001600160a01b03868116911614801590610dbe57506000546001600160a01b03858116911614155b8015610dd257506001600160a01b03841615155b8015610de957506001600160a01b03841661dead14155b8015610dff5750600954600160a81b900460ff16155b1561109657600191507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316148015610e7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015610ea057506001600160a01b03841660009081526004602052604090205460ff16155b15610f9057600a54831115610f095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610578565b600c5483610f2c866001600160a01b031660009081526002602052604090205490565b610f369190611a8d565b1115610f905760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610578565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561100357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561102857506001600160a01b03851660009081526004602052604090205460ff16155b1561109657600b548311156110925760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610578565b5060015b6001600160a01b03851660009081526004602052604090205460ff16806110d557506001600160a01b03841660009081526004602052604090205460ff165b156110df57600091505b3060009081526002602052604081205490506000600d54821180156111015750825b90508080156111195750600954600160b81b900460ff165b801561112f5750600954600160a81b900460ff16155b801561115457506001600160a01b03871660009081526004602052604090205460ff16155b801561117957506001600160a01b03861660009081526004602052604090205460ff16155b156111a7576009805460ff60a81b1916600160a81b1790556111996113d7565b6009805460ff60a81b191690555b6111b4878787878761147b565b50505050505050565b600081848411156111e15760405162461bcd60e51b8152600401610578919061178e565b5060006111ee8486611aa5565b95945050505050565b6009805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061123f5761123f611abc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e19190611ad2565b816001815181106112f4576112f4611abc565b60200260200101906001600160a01b031690816001600160a01b03168152505061133f307f000000000000000000000000000000000000000000000000000000000000000084610aac565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611394908590600090869030904290600401611aef565b600060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b50506009805460ff60b01b1916905550505050565b30600090815260026020526040812054908181036113f3575050565b600d54611401906005611a6e565b82111561141957600d54611416906005611a6e565b91505b611422826111f7565b6009546040516001600160a01b03909116904790600081818185875af1925050503d806000811461146f576040519150601f19603f3d011682016040523d82523d6000602084013e611474565b606091505b5050505050565b8161148d576114886114bc565b61149b565b6114988584836114ea565b92505b6114a6858585611536565b8161147457611474600654600555600854600755565b6005541580156114cc5750600754155b156114d357565b600580546006556007805460085560009182905555565b6000806114f6836115dc565b9050600061150f606461150987856115f4565b9061167d565b9050801561152257611522863083611536565b61152c8186611aa5565b9695505050505050565b6001600160a01b03831660009081526002602052604090205461155990826116bf565b6001600160a01b0380851660009081526002602052604080822093909355908416815220546115889082611701565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bc49085815260200190565b600081156115ec57505060075490565b505060055490565b60008260000361160657506000610548565b60006116128385611a6e565b90508261161f8583611b60565b146116765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610578565b9392505050565b600061167683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611760565b600061167683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111bd565b60008061170e8385611a8d565b9050838110156116765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610578565b600081836117815760405162461bcd60e51b8152600401610578919061178e565b5060006111ee8486611b60565b600060208083528351808285015260005b818110156117bb5785810183015185820160400152820161179f565b818111156117cd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461090f57600080fd5b6000806040838503121561180b57600080fd5b8235611816816117e3565b946020939093013593505050565b60006020828403121561183657600080fd5b5035919050565b60008060006060848603121561185257600080fd5b833561185d816117e3565b9250602084013561186d816117e3565b929592945050506040919091013590565b60006020828403121561189057600080fd5b8135611676816117e3565b803580151581146118ab57600080fd5b919050565b600080604083850312156118c357600080fd5b823591506118d36020840161189b565b90509250929050565b600080604083850312156118ef57600080fd5b82356118fa816117e3565b9150602083013561190a816117e3565b809150509250929050565b60006020828403121561192757600080fd5b6116768261189b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119b657816000190482111561199c5761199c611965565b808516156119a957918102915b93841c9390800290611980565b509250929050565b6000826119cd57506001610548565b816119da57506000610548565b81600181146119f057600281146119fa57611a16565b6001915050610548565b60ff841115611a0b57611a0b611965565b50506001821b610548565b5060208310610133831016604e8410600b8410161715611a39575081810a610548565b611a43838361197b565b8060001904821115611a5757611a57611965565b029392505050565b600061167660ff8416836119be565b6000816000190483118215151615611a8857611a88611965565b500290565b60008219821115611aa057611aa0611965565b500190565b600082821015611ab757611ab7611965565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ae457600080fd5b8151611676816117e3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b3f5784516001600160a01b031683529383019391830191600101611b1a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b7d57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fef1bc4afce65ea89ed81b31904a0a778a137a63374850facaae5062e9e1a43764736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063751039fc116100d1578063c3c8cd801161008a578063e01af92c11610064578063e01af92c146104c1578063ea2f0b37146104e1578063f429389014610501578063ffb54a991461051657600080fd5b8063c3c8cd8014610451578063c9567bf914610466578063dd62ed3e1461047b57600080fd5b8063751039fc1461038a5780638b4cee081461039f5780638da5cb5b146103bf57806395d89b41146103dd578063a9059cbb14610411578063b1fde9f81461043157600080fd5b8063313ce56711610123578063313ce567146102a4578063437823ec146102cb57806349bd5a5e146102eb5780635d098b381461031f57806370a082311461033f578063715018a61461037557600080fd5b806306fdde0314610176578063095ea7b3146101c35780630cc835a3146101f35780631694505e1461021557806318160ddd1461026157806323b872dd1461028457600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101ad6040518060400160405280600b81526020016a213ab63632ba383937b7b360a91b81525081565b6040516101ba919061178e565b60405180910390f35b3480156101cf57600080fd5b506101e36101de3660046117f8565b610537565b60405190151581526020016101ba565b3480156101ff57600080fd5b5061021361020e366004611824565b61054e565b005b34801561022157600080fd5b506102497f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101ba565b34801561026d57600080fd5b506102766105d7565b6040519081526020016101ba565b34801561029057600080fd5b506101e361029f36600461183d565b6105f5565b3480156102b057600080fd5b506102b9601281565b60405160ff90911681526020016101ba565b3480156102d757600080fd5b506102136102e636600461187e565b61065e565b3480156102f757600080fd5b506102497f00000000000000000000000016ff07f4999d75bcff23611a3d9a215e2027199981565b34801561032b57600080fd5b5061021361033a36600461187e565b6106ac565b34801561034b57600080fd5b5061027661035a36600461187e565b6001600160a01b031660009081526002602052604090205490565b34801561038157600080fd5b506102136106f8565b34801561039657600080fd5b5061021361076c565b3480156103ab57600080fd5b506102136103ba366004611824565b6107f4565b3480156103cb57600080fd5b506000546001600160a01b0316610249565b3480156103e957600080fd5b506101ad60405180604001604052806008815260200167212aa62622aa282360c11b81525081565b34801561041d57600080fd5b506101e361042c3660046117f8565b610874565b34801561043d57600080fd5b5061021361044c3660046118b0565b610881565b34801561045d57600080fd5b506102136108cc565b34801561047257600080fd5b50610213610912565b34801561048757600080fd5b506102766104963660046118dc565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104cd57600080fd5b506102136104dc366004611915565b6109b1565b3480156104ed57600080fd5b506102136104fc36600461187e565b6109f9565b34801561050d57600080fd5b50610213610a44565b34801561052257600080fd5b506009546101e390600160a01b900460ff1681565b6000610544338484610aac565b5060015b92915050565b6000546001600160a01b031633146105815760405162461bcd60e51b815260040161057890611930565b60405180910390fd5b600a8111156105d25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203130250000006044820152606401610578565b600555565b6105e36012600a611a5f565b6105f290640218711a00611a6e565b81565b6000610602848484610bd1565b610654843361064f85604051806060016040528060288152602001611b83602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906111bd565b610aac565b5060019392505050565b6000546001600160a01b031633146106885760405162461bcd60e51b815260040161057890611930565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146106d65760405162461bcd60e51b815260040161057890611930565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107225760405162461bcd60e51b815260040161057890611930565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107965760405162461bcd60e51b815260040161057890611930565b6107a26012600a611a5f565b6107b190640218711a00611a6e565b600a9081556107c290601290611a5f565b6107d190640218711a00611a6e565b600b556107e06012600a611a5f565b6107ef90640218711a00611a6e565b600c55565b6000546001600160a01b0316331461081e5760405162461bcd60e51b815260040161057890611930565b600a81111561086f5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772031302500006044820152606401610578565b600755565b6000610544338484610bd1565b6000546001600160a01b031633146108ab5760405162461bcd60e51b815260040161057890611930565b60098054911515600160b81b0260ff60b81b19909216919091179055600d55565b6000546001600160a01b031633146108f65760405162461bcd60e51b815260040161057890611930565b3060009081526002602052604090205461090f816111f7565b50565b6000546001600160a01b0316331461093c5760405162461bcd60e51b815260040161057890611930565b600954600160a01b900460ff16156109965760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610578565b6009805463ff0000ff60a01b1916630100000160a01b179055565b6000546001600160a01b031633146109db5760405162461bcd60e51b815260040161057890611930565b60098054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610a235760405162461bcd60e51b815260040161057890611930565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314610a6e5760405162461bcd60e51b815260040161057890611930565b60095460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610aa8573d6000803e3d6000fd5b5050565b6001600160a01b038316610b0e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610578565b6001600160a01b038216610b6f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610578565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610c355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610578565b6001600160a01b038216610c975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610578565b60008111610cf95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610578565b600080610d0e6000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610d3d57506000546001600160a01b03858116911614155b15610d9257600954600160a01b900460ff16610d925760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610578565b6000546001600160a01b03868116911614801590610dbe57506000546001600160a01b03858116911614155b8015610dd257506001600160a01b03841615155b8015610de957506001600160a01b03841661dead14155b8015610dff5750600954600160a81b900460ff16155b1561109657600191507f00000000000000000000000016ff07f4999d75bcff23611a3d9a215e202719996001600160a01b0316856001600160a01b0316148015610e7b57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316846001600160a01b031614155b8015610ea057506001600160a01b03841660009081526004602052604090205460ff16155b15610f9057600a54831115610f095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610578565b600c5483610f2c866001600160a01b031660009081526002602052604090205490565b610f369190611a8d565b1115610f905760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610578565b7f00000000000000000000000016ff07f4999d75bcff23611a3d9a215e202719996001600160a01b0316846001600160a01b031614801561100357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316856001600160a01b031614155b801561102857506001600160a01b03851660009081526004602052604090205460ff16155b1561109657600b548311156110925760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610578565b5060015b6001600160a01b03851660009081526004602052604090205460ff16806110d557506001600160a01b03841660009081526004602052604090205460ff165b156110df57600091505b3060009081526002602052604081205490506000600d54821180156111015750825b90508080156111195750600954600160b81b900460ff165b801561112f5750600954600160a81b900460ff16155b801561115457506001600160a01b03871660009081526004602052604090205460ff16155b801561117957506001600160a01b03861660009081526004602052604090205460ff16155b156111a7576009805460ff60a81b1916600160a81b1790556111996113d7565b6009805460ff60a81b191690555b6111b4878787878761147b565b50505050505050565b600081848411156111e15760405162461bcd60e51b8152600401610578919061178e565b5060006111ee8486611aa5565b95945050505050565b6009805460ff60b01b1916600160b01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061123f5761123f611abc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e19190611ad2565b816001815181106112f4576112f4611abc565b60200260200101906001600160a01b031690816001600160a01b03168152505061133f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610aac565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611394908590600090869030904290600401611aef565b600060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b50506009805460ff60b01b1916905550505050565b30600090815260026020526040812054908181036113f3575050565b600d54611401906005611a6e565b82111561141957600d54611416906005611a6e565b91505b611422826111f7565b6009546040516001600160a01b03909116904790600081818185875af1925050503d806000811461146f576040519150601f19603f3d011682016040523d82523d6000602084013e611474565b606091505b5050505050565b8161148d576114886114bc565b61149b565b6114988584836114ea565b92505b6114a6858585611536565b8161147457611474600654600555600854600755565b6005541580156114cc5750600754155b156114d357565b600580546006556007805460085560009182905555565b6000806114f6836115dc565b9050600061150f606461150987856115f4565b9061167d565b9050801561152257611522863083611536565b61152c8186611aa5565b9695505050505050565b6001600160a01b03831660009081526002602052604090205461155990826116bf565b6001600160a01b0380851660009081526002602052604080822093909355908416815220546115889082611701565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bc49085815260200190565b600081156115ec57505060075490565b505060055490565b60008260000361160657506000610548565b60006116128385611a6e565b90508261161f8583611b60565b146116765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610578565b9392505050565b600061167683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611760565b600061167683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111bd565b60008061170e8385611a8d565b9050838110156116765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610578565b600081836117815760405162461bcd60e51b8152600401610578919061178e565b5060006111ee8486611b60565b600060208083528351808285015260005b818110156117bb5785810183015185820160400152820161179f565b818111156117cd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461090f57600080fd5b6000806040838503121561180b57600080fd5b8235611816816117e3565b946020939093013593505050565b60006020828403121561183657600080fd5b5035919050565b60008060006060848603121561185257600080fd5b833561185d816117e3565b9250602084013561186d816117e3565b929592945050506040919091013590565b60006020828403121561189057600080fd5b8135611676816117e3565b803580151581146118ab57600080fd5b919050565b600080604083850312156118c357600080fd5b823591506118d36020840161189b565b90509250929050565b600080604083850312156118ef57600080fd5b82356118fa816117e3565b9150602083013561190a816117e3565b809150509250929050565b60006020828403121561192757600080fd5b6116768261189b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119b657816000190482111561199c5761199c611965565b808516156119a957918102915b93841c9390800290611980565b509250929050565b6000826119cd57506001610548565b816119da57506000610548565b81600181146119f057600281146119fa57611a16565b6001915050610548565b60ff841115611a0b57611a0b611965565b50506001821b610548565b5060208310610133831016604e8410600b8410161715611a39575081810a610548565b611a43838361197b565b8060001904821115611a5757611a57611965565b029392505050565b600061167660ff8416836119be565b6000816000190483118215151615611a8857611a88611965565b500290565b60008219821115611aa057611aa0611965565b500190565b600082821015611ab757611ab7611965565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ae457600080fd5b8151611676816117e3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b3f5784516001600160a01b031683529383019391830191600101611b1a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b7d57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fef1bc4afce65ea89ed81b31904a0a778a137a63374850facaae5062e9e1a43764736f6c634300080f0033

Deployed Bytecode Sourcemap

3377:9693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:43;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3946:43:0;;;;;;;;;;;;:::i;:::-;;;;;;;;5975:161;;;;;;;;;;-1:-1:-1;5975:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;5975:161:0;1072:187:1;10539:190:0;;;;;;;;;;-1:-1:-1;10539:190:0;;;;;:::i;:::-;;:::i;:::-;;4163:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1639:32:1;;;1621:51;;1609:2;1594:18;4163:51:0;1449:229:1;4087:63:0;;;;;;;;;;;;;:::i;:::-;;;1829:25:1;;;1817:2;1802:18;4087:63:0;1683:177:1;6144:313:0;;;;;;;;;;-1:-1:-1;6144:313:0;;;;;:::i;:::-;;:::i;4045:35::-;;;;;;;;;;;;4078:2;4045:35;;;;;2498:4:1;2486:17;;;2468:36;;2456:2;2441:18;4045:35:0;2326:184:1;10294:113:0;;;;;;;;;;-1:-1:-1;10294:113:0;;;;;:::i;:::-;;:::i;4221:38::-;;;;;;;;;;;;;;;10150:136;;;;;;;;;;-1:-1:-1;10150:136:0;;;;;:::i;:::-;;:::i;5524:117::-;;;;;;;;;;-1:-1:-1;5524:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;5617:16:0;5590:7;5617:16;;;:7;:16;;;;;;;5524:117;2733:148;;;;;;;;;;;;;:::i;9795:169::-;;;;;;;;;;;;;:::i;10737:196::-;;;;;;;;;;-1:-1:-1;10737:196:0;;;;;:::i;:::-;;:::i;2519:79::-;;;;;;;;;;-1:-1:-1;2557:7:0;2584:6;-1:-1:-1;;;;;2584:6:0;2519:79;;3996:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3996:42:0;;;;;5649:167;;;;;;;;;;-1:-1:-1;5649:167:0;;;;;:::i;:::-;;:::i;9976:166::-;;;;;;;;;;-1:-1:-1;9976:166:0;;;;;:::i;:::-;;:::i;12542:156::-;;;;;;;;;;;;;:::i;9611:176::-;;;;;;;;;;;;;:::i;5824:143::-;;;;;;;;;;-1:-1:-1;5824:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5932:18:0;;;5905:7;5932:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5824:143;6465:94;;;;;;;;;;-1:-1:-1;6465:94:0;;;;;:::i;:::-;;:::i;10419:112::-;;;;;;;;;;-1:-1:-1;10419:112:0;;;;;:::i;:::-;;:::i;12710:168::-;;;;;;;;;;;;;:::i;4268:31::-;;;;;;;;;;-1:-1:-1;4268:31:0;;;;-1:-1:-1;;;4268:31:0;;;;;;5975:161;6050:4;6067:39;317:10;6090:7;6099:6;6067:8;:39::i;:::-;-1:-1:-1;6124:4:0;5975:161;;;;;:::o;10539:190::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;;;;;;;;;10640:2:::1;10621:15;:21;;10613:63;;;::::0;-1:-1:-1;;;10613:63:0;;4534:2:1;10613:63:0::1;::::0;::::1;4516:21:1::0;4573:2;4553:18;;;4546:30;4612:31;4592:18;;;4585:59;4661:18;;10613:63:0::1;4332:353:1::0;10613:63:0::1;10687:16;:34:::0;10539:190::o;4087:63::-;4138:12;4078:2;4138;:12;:::i;:::-;4125:25;;:10;:25;:::i;:::-;4087:63;:::o;6144:313::-;6242:4;6259:36;6269:6;6277:9;6288:6;6259:9;:36::i;:::-;6306:121;6315:6;317:10;6337:89;6375:6;6337:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6337:19:0;;;;;;:11;:19;;;;;;;;317:10;6337:33;;;;;;;;;;:37;:89::i;:::-;6306:8;:121::i;:::-;-1:-1:-1;6445:4:0;6144:313;;;;;:::o;10294:113::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10365:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10365:34:0::1;10395:4;10365:34;::::0;;10294:113::o;10150:136::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;10235:16:::1;:43:::0;;-1:-1:-1;;;;;;10235:43:0::1;-1:-1:-1::0;;;;;10235:43:0;;;::::1;::::0;;;::::1;::::0;;10150:136::o;2733:148::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;2840:1:::1;2824:6:::0;;2803:40:::1;::::0;-1:-1:-1;;;;;2824:6:0;;::::1;::::0;2803:40:::1;::::0;2840:1;;2803:40:::1;2871:1;2854:19:::0;;-1:-1:-1;;;;;;2854:19:0::1;::::0;;2733:148::o;9795:169::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;4138:12:::1;4078:2;4138;:12;:::i;:::-;4125:25;::::0;:10:::1;:25;:::i;:::-;9849:13;:27:::0;;;4138:12:::1;::::0;4078:2:::1;::::0;4138:12:::1;:::i;:::-;4125:25;::::0;:10:::1;:25;:::i;:::-;9887:14;:28:::0;4138:12:::1;4078:2;4138;:12;:::i;:::-;4125:25;::::0;:10:::1;:25;:::i;:::-;9926:16;:30:::0;9795:169::o;10737:196::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;10841:2:::1;10821:16;:22;;10813:65;;;::::0;-1:-1:-1;;;10813:65:0;;6580:2:1;10813:65:0::1;::::0;::::1;6562:21:1::0;6619:2;6599:18;;;6592:30;6658:32;6638:18;;;6631:60;6708:18;;10813:65:0::1;6378:354:1::0;10813:65:0::1;10889:17;:36:::0;10737:196::o;5649:167::-;5727:4;5744:42;317:10;5768:9;5779:6;5744:9;:42::i;9976:166::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;10071:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;10071:22:0::1;-1:-1:-1::0;;;;10071:22:0;;::::1;::::0;;;::::1;::::0;;10104:18:::1;:30:::0;9976:166::o;12542:156::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;12640:4:::1;12596:23;5617:16:::0;;;:7;:16;;;;;;12657:33:::1;5617:16:::0;12657::::1;:33::i;:::-;12585:113;12542:156::o:0;9611:176::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;9675:11:::1;::::0;-1:-1:-1;;;9675:11:0;::::1;;;9674:12;9666:47;;;::::0;-1:-1:-1;;;9666:47:0;;6939:2:1;9666:47:0::1;::::0;::::1;6921:21:1::0;6978:2;6958:18;;;6951:30;7017:25;6997:18;;;6990:53;7060:18;;9666:47:0::1;6737:347:1::0;9666:47:0::1;9724:11;:18:::0;;-1:-1:-1;;;;9753:18:0;-1:-1:-1;;;9753:18:0;;;9611:176::o;6465:94::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;6532:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;6532:19:0::1;-1:-1:-1::0;;;;6532:19:0;;::::1;::::0;;;::::1;::::0;;6465:94::o;10419:112::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10488:27:0::1;10518:5;10488:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10488:35:0::1;::::0;;10419:112::o;12710:168::-;2646:6;;-1:-1:-1;;;;;2646:6:0;317:10;2646:22;2638:67;;;;-1:-1:-1;;;2638:67:0;;;;;;;:::i;:::-;12825:16:::1;::::0;:45:::1;::::0;12793:21:::1;::::0;-1:-1:-1;;;;;12825:16:0::1;::::0;:45;::::1;;;::::0;12793:21;;12764:26:::1;12825:45:::0;12764:26;12825:45;12793:21;12825:16;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12753:125;12710:168::o:0;6567:335::-;-1:-1:-1;;;;;6660:19:0;;6652:68;;;;-1:-1:-1;;;6652:68:0;;7291:2:1;6652:68:0;;;7273:21:1;7330:2;7310:18;;;7303:30;7369:34;7349:18;;;7342:62;-1:-1:-1;;;7420:18:1;;;7413:34;7464:19;;6652:68:0;7089:400:1;6652:68:0;-1:-1:-1;;;;;6739:21:0;;6731:68;;;;-1:-1:-1;;;6731:68:0;;7696:2:1;6731:68:0;;;7678:21:1;7735:2;7715:18;;;7708:30;7774:34;7754:18;;;7747:62;-1:-1:-1;;;7825:18:1;;;7818:32;7867:19;;6731:68:0;7494:398:1;6731:68:0;-1:-1:-1;;;;;6810:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6862:32;;1829:25:1;;;6862:32:0;;1802:18:1;6862:32:0;;;;;;;;6567:335;;;:::o;6910:1762::-;-1:-1:-1;;;;;6998:18:0;;6990:68;;;;-1:-1:-1;;;6990:68:0;;8099:2:1;6990:68:0;;;8081:21:1;8138:2;8118:18;;;8111:30;8177:34;8157:18;;;8150:62;-1:-1:-1;;;8228:18:1;;;8221:35;8273:19;;6990:68:0;7897:401:1;6990:68:0;-1:-1:-1;;;;;7077:16:0;;7069:64;;;;-1:-1:-1;;;7069:64:0;;8505:2:1;7069:64:0;;;8487:21:1;8544:2;8524:18;;;8517:30;8583:34;8563:18;;;8556:62;-1:-1:-1;;;8634:18:1;;;8627:33;8677:19;;7069:64:0;8303:399:1;7069:64:0;7161:1;7152:6;:10;7144:64;;;;-1:-1:-1;;;7144:64:0;;8909:2:1;7144:64:0;;;8891:21:1;8948:2;8928:18;;;8921:30;8987:34;8967:18;;;8960:62;-1:-1:-1;;;9038:18:1;;;9031:39;9087:19;;7144:64:0;8707:405:1;7144:64:0;7219:12;7250:15;7297:7;2557;2584:6;-1:-1:-1;;;;;2584:6:0;;2519:79;7297:7;-1:-1:-1;;;;;7289:15:0;:4;-1:-1:-1;;;;;7289:15:0;;;:32;;;;-1:-1:-1;2557:7:0;2584:6;-1:-1:-1;;;;;7308:13:0;;;2584:6;;7308:13;;7289:32;7286:106;;;7345:11;;-1:-1:-1;;;7345:11:0;;;;7337:43;;;;-1:-1:-1;;;7337:43:0;;9319:2:1;7337:43:0;;;9301:21:1;9358:2;9338:18;;;9331:30;-1:-1:-1;;;9377:18:1;;;9370:50;9437:18;;7337:43:0;9117:344:1;7337:43:0;2557:7;2584:6;-1:-1:-1;;;;;7408:15:0;;;2584:6;;7408:15;;;;:32;;-1:-1:-1;2557:7:0;2584:6;-1:-1:-1;;;;;7427:13:0;;;2584:6;;7427:13;;7408:32;:52;;;;-1:-1:-1;;;;;;7444:16:0;;;;7408:52;:77;;;;-1:-1:-1;;;;;;7464:21:0;;7478:6;7464:21;;7408:77;:90;;;;-1:-1:-1;7490:8:0;;-1:-1:-1;;;7490:8:0;;;;7489:9;7408:90;7404:731;;;7527:4;7517:14;;7558:13;-1:-1:-1;;;;;7550:21:0;:4;-1:-1:-1;;;;;7550:21:0;;:55;;;;;7589:15;-1:-1:-1;;;;;7575:30:0;:2;-1:-1:-1;;;;;7575:30:0;;;7550:55;:82;;;;-1:-1:-1;;;;;;7610:22:0;;;;;;:18;:22;;;;;;;;7609:23;7550:82;7546:310;;;7671:13;;7661:6;:23;;7653:77;;;;-1:-1:-1;;;7653:77:0;;9668:2:1;7653:77:0;;;9650:21:1;9707:2;9687:18;;;9680:30;9746:34;9726:18;;;9719:62;-1:-1:-1;;;9797:18:1;;;9790:39;9846:19;;7653:77:0;9466:405:1;7653:77:0;7783:16;;7773:6;7757:13;7767:2;-1:-1:-1;;;;;5617:16:0;5590:7;5617:16;;;:7;:16;;;;;;;5524:117;7757:13;:22;;;;:::i;:::-;:42;;7749:91;;;;-1:-1:-1;;;7749:91:0;;10211:2:1;7749:91:0;;;10193:21:1;10250:2;10230:18;;;10223:30;10289:34;10269:18;;;10262:62;-1:-1:-1;;;10340:18:1;;;10333:34;10384:19;;7749:91:0;10009:400:1;7749:91:0;7894:13;-1:-1:-1;;;;;7888:19:0;:2;-1:-1:-1;;;;;7888:19:0;;:55;;;;;7927:15;-1:-1:-1;;;;;7911:32:0;:4;-1:-1:-1;;;;;7911:32:0;;;7888:55;:84;;;;-1:-1:-1;;;;;;7948:24:0;;;;;;:18;:24;;;;;;;;7947:25;7888:84;7884:240;;;8011:14;;8001:6;:24;;7993:79;;;;-1:-1:-1;;;7993:79:0;;10616:2:1;7993:79:0;;;10598:21:1;10655:2;10635:18;;;10628:30;10694:34;10674:18;;;10667:62;-1:-1:-1;;;10745:18:1;;;10738:40;10795:19;;7993:79:0;10414:406:1;7993:79:0;-1:-1:-1;8104:4:0;7884:240;-1:-1:-1;;;;;8150:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;8178:22:0;;;;;;:18;:22;;;;;;;;8150:50;8147:97;;;8227:5;8217:15;;8147:97;8305:4;8256:28;5617:16;;;:7;:16;;;;;;8256:55;;8322:12;8361:18;;8338:20;:41;8337:57;;;;;8384:10;8337:57;8322:72;;8411:7;:22;;;;-1:-1:-1;8422:11:0;;-1:-1:-1;;;8422:11:0;;;;8411:22;:35;;;;-1:-1:-1;8438:8:0;;-1:-1:-1;;;8438:8:0;;;;8437:9;8411:35;:64;;;;-1:-1:-1;;;;;;8451:24:0;;;;;;:18;:24;;;;;;;;8450:25;8411:64;:91;;;;-1:-1:-1;;;;;;8480:22:0;;;;;;:18;:22;;;;;;;;8479:23;8411:91;8407:195;;;8519:8;:15;;-1:-1:-1;;;;8519:15:0;-1:-1:-1;;;8519:15:0;;;8549:10;:8;:10::i;:::-;8574:8;:16;;-1:-1:-1;;;;8574:16:0;;;8407:195;8614:50;8629:4;8634:2;8637:6;8644:7;8653:10;8614:14;:50::i;:::-;6979:1693;;;;6910:1762;;;:::o;1374:190::-;1460:7;1496:12;1488:6;;;;1480:29;;;;-1:-1:-1;;;1480:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1520:9:0;1532:5;1536:1;1532;:5;:::i;:::-;1520:17;1374:190;-1:-1:-1;;;;;1374:190:0:o;9119:483::-;4681:6;:13;;-1:-1:-1;;;;4681:13:0;-1:-1:-1;;;4681:13:0;;;9221:16:::1;::::0;;9235:1:::1;9221:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9221:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9221:16:0::1;9197:40;;9266:4;9248;9253:1;9248:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9248:23:0::1;;;-1:-1:-1::0;;;;;9248:23:0::1;;;::::0;::::1;9292:15;-1:-1:-1::0;;;;;9292:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9282:4;9287:1;9282:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;9282:32:0::1;;;-1:-1:-1::0;;;;;9282:32:0::1;;;::::0;::::1;9325:62;9342:4;9357:15;9375:11;9325:8;:62::i;:::-;9398:196;::::0;-1:-1:-1;;;9398:196:0;;-1:-1:-1;;;;;9398:15:0::1;:66;::::0;::::1;::::0;:196:::1;::::0;9479:11;;9505:1:::1;::::0;9521:4;;9548::::1;::::0;9568:15:::1;::::0;9398:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4717:6:0;:14;;-1:-1:-1;;;;4717:14:0;;;-1:-1:-1;;;;9119:483:0:o;8680:431::-;8763:4;8719:23;5617:16;;;:7;:16;;;;;;;8816:20;;;8813:34;;8839:7;;8680:431::o;8813:34::-;8880:18;;:22;;8901:1;8880:22;:::i;:::-;8862:15;:40;8859:112;;;8937:18;;:22;;8958:1;8937:22;:::i;:::-;8919:40;;8859:112;8981:33;8998:15;8981:16;:33::i;:::-;9047:16;;9039:64;;-1:-1:-1;;;;;9047:16:0;;;;9077:21;;9039:64;;;;9077:21;9047:16;9039:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8680:431:0:o;11424:389::-;11549:7;11545:129;;11573:14;:12;:14::i;:::-;11545:129;;;11629:33;11639:6;11647;11655;11629:9;:33::i;:::-;11620:42;;11545:129;11686:44;11704:6;11712:9;11723:6;11686:17;:44::i;:::-;11755:7;11751:55;;11779:15;11318:24;;11299:16;:43;11373:25;;11353:17;:45;11255:151;10941:302;10987:16;;:21;:47;;;;-1:-1:-1;11012:17:0;;:22;10987:47;10984:59;;;10941:302::o;10984:59::-;11090:16;;;11063:24;:43;11145:17;;;11117:25;:45;-1:-1:-1;11183:20:0;;;;11214:21;10941:302::o;12096:397::-;12177:7;12197:18;12249:21;12263:6;12249:13;:21::i;:::-;12236:34;-1:-1:-1;12283:12:0;12298:31;12325:3;12298:22;:6;12236:34;12298:10;:22::i;:::-;:26;;:31::i;:::-;12283:46;-1:-1:-1;12357:8:0;;12354:86;;12382:46;12400:6;12416:4;12423;12382:17;:46::i;:::-;12471:14;12481:4;12471:14;;:::i;:::-;;12096:397;-1:-1:-1;;;;;;12096:397:0:o;11821:267::-;-1:-1:-1;;;;;11937:15:0;;;;;;:7;:15;;;;;;:28;;11957:7;11937:19;:28::i;:::-;-1:-1:-1;;;;;11919:15:0;;;;;;;:7;:15;;;;;;:46;;;;11997:18;;;;;;;:31;;12020:7;11997:22;:31::i;:::-;-1:-1:-1;;;;;11976:18:0;;;;;;;:7;:18;;;;;;;:52;;;;12044:36;;;;;;;;;;12072:7;1829:25:1;;1817:2;1802:18;;1683:177;12886:181:0;12943:7;12967:6;12963:63;;;-1:-1:-1;;12997:17:0;;;12886:181::o;12963:63::-;-1:-1:-1;;13043:16:0;;;12886:181::o;1572:246::-;1630:7;1654:1;1659;1654:6;1650:47;;-1:-1:-1;1684:1:0;1677:8;;1650:47;1707:9;1719:5;1723:1;1719;:5;:::i;:::-;1707:17;-1:-1:-1;1752:1:0;1743:5;1747:1;1707:17;1743:5;:::i;:::-;:10;1735:56;;;;-1:-1:-1;;;1735:56:0;;13094:2:1;1735:56:0;;;13076:21:1;13133:2;13113:18;;;13106:30;13172:34;13152:18;;;13145:62;-1:-1:-1;;;13223:18:1;;;13216:31;13264:19;;1735:56:0;12892:397:1;1735:56:0;1809:1;1572:246;-1:-1:-1;;;1572:246:0:o;1826:132::-;1884:7;1911:39;1915:1;1918;1911:39;;;;;;;;;;;;;;;;;:3;:39::i;1230:136::-;1288:7;1315:43;1319:1;1322;1315:43;;;;;;;;;;;;;;;;;:3;:43::i;1043:179::-;1101:7;;1133:5;1137:1;1133;:5;:::i;:::-;1121:17;;1162:1;1157;:6;;1149:46;;;;-1:-1:-1;;;1149:46:0;;13496:2:1;1149:46:0;;;13478:21:1;13535:2;13515:18;;;13508:30;13574:29;13554:18;;;13547:57;13621:18;;1149:46:0;13294:351:1;1966:189:0;2052:7;2087:12;2080:5;2072:28;;;;-1:-1:-1;;;2072:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2111:9:0;2123:5;2127:1;2123;:5;:::i;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:180::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;-1:-1:-1;1415:23:1;;1264:180;-1:-1:-1;1264:180:1:o;1865:456::-;1942:6;1950;1958;2011:2;1999:9;1990:7;1986:23;1982:32;1979:52;;;2027:1;2024;2017:12;1979:52;2066:9;2053:23;2085:31;2110:5;2085:31;:::i;:::-;2135:5;-1:-1:-1;2192:2:1;2177:18;;2164:32;2205:33;2164:32;2205:33;:::i;:::-;1865:456;;2257:7;;-1:-1:-1;;;2311:2:1;2296:18;;;;2283:32;;1865:456::o;2515:247::-;2574:6;2627:2;2615:9;2606:7;2602:23;2598:32;2595:52;;;2643:1;2640;2633:12;2595:52;2682:9;2669:23;2701:31;2726:5;2701:31;:::i;2975:160::-;3040:20;;3096:13;;3089:21;3079:32;;3069:60;;3125:1;3122;3115:12;3069:60;2975:160;;;:::o;3140:248::-;3205:6;3213;3266:2;3254:9;3245:7;3241:23;3237:32;3234:52;;;3282:1;3279;3272:12;3234:52;3318:9;3305:23;3295:33;;3347:35;3378:2;3367:9;3363:18;3347:35;:::i;:::-;3337:45;;3140:248;;;;;:::o;3393:388::-;3461:6;3469;3522:2;3510:9;3501:7;3497:23;3493:32;3490:52;;;3538:1;3535;3528:12;3490:52;3577:9;3564:23;3596:31;3621:5;3596:31;:::i;:::-;3646:5;-1:-1:-1;3703:2:1;3688:18;;3675:32;3716:33;3675:32;3716:33;:::i;:::-;3768:7;3758:17;;;3393:388;;;;;:::o;3786:180::-;3842:6;3895:2;3883:9;3874:7;3870:23;3866:32;3863:52;;;3911:1;3908;3901:12;3863:52;3934:26;3950:9;3934:26;:::i;3971:356::-;4173:2;4155:21;;;4192:18;;;4185:30;4251:34;4246:2;4231:18;;4224:62;4318:2;4303:18;;3971:356::o;4690:127::-;4751:10;4746:3;4742:20;4739:1;4732:31;4782:4;4779:1;4772:15;4806:4;4803:1;4796:15;4822:422;4911:1;4954:5;4911:1;4968:270;4989:7;4979:8;4976:21;4968:270;;;5048:4;5044:1;5040:6;5036:17;5030:4;5027:27;5024:53;;;5057:18;;:::i;:::-;5107:7;5097:8;5093:22;5090:55;;;5127:16;;;;5090:55;5206:22;;;;5166:15;;;;4968:270;;;4972:3;4822:422;;;;;:::o;5249:806::-;5298:5;5328:8;5318:80;;-1:-1:-1;5369:1:1;5383:5;;5318:80;5417:4;5407:76;;-1:-1:-1;5454:1:1;5468:5;;5407:76;5499:4;5517:1;5512:59;;;;5585:1;5580:130;;;;5492:218;;5512:59;5542:1;5533:10;;5556:5;;;5580:130;5617:3;5607:8;5604:17;5601:43;;;5624:18;;:::i;:::-;-1:-1:-1;;5680:1:1;5666:16;;5695:5;;5492:218;;5794:2;5784:8;5781:16;5775:3;5769:4;5766:13;5762:36;5756:2;5746:8;5743:16;5738:2;5732:4;5729:12;5725:35;5722:77;5719:159;;;-1:-1:-1;5831:19:1;;;5863:5;;5719:159;5910:34;5935:8;5929:4;5910:34;:::i;:::-;5980:6;5976:1;5972:6;5968:19;5959:7;5956:32;5953:58;;;5991:18;;:::i;:::-;6029:20;;5249:806;-1:-1:-1;;;5249:806:1:o;6060:140::-;6118:5;6147:47;6188:4;6178:8;6174:19;6168:4;6147:47;:::i;6205:168::-;6245:7;6311:1;6307;6303:6;6299:14;6296:1;6293:21;6288:1;6281:9;6274:17;6270:45;6267:71;;;6318:18;;:::i;:::-;-1:-1:-1;6358:9:1;;6205:168::o;9876:128::-;9916:3;9947:1;9943:6;9940:1;9937:13;9934:39;;;9953:18;;:::i;:::-;-1:-1:-1;9989:9:1;;9876:128::o;10825:125::-;10865:4;10893:1;10890;10887:8;10884:34;;;10898:18;;:::i;:::-;-1:-1:-1;10935:9:1;;10825:125::o;11087:127::-;11148:10;11143:3;11139:20;11136:1;11129:31;11179:4;11176:1;11169:15;11203:4;11200:1;11193:15;11219:251;11289:6;11342:2;11330:9;11321:7;11317:23;11313:32;11310:52;;;11358:1;11355;11348:12;11310:52;11390:9;11384:16;11409:31;11434:5;11409:31;:::i;11475:980::-;11737:4;11785:3;11774:9;11770:19;11816:6;11805:9;11798:25;11842:2;11880:6;11875:2;11864:9;11860:18;11853:34;11923:3;11918:2;11907:9;11903:18;11896:31;11947:6;11982;11976:13;12013:6;12005;11998:22;12051:3;12040:9;12036:19;12029:26;;12090:2;12082:6;12078:15;12064:29;;12111:1;12121:195;12135:6;12132:1;12129:13;12121:195;;;12200:13;;-1:-1:-1;;;;;12196:39:1;12184:52;;12291:15;;;;12256:12;;;;12232:1;12150:9;12121:195;;;-1:-1:-1;;;;;;;12372:32:1;;;;12367:2;12352:18;;12345:60;-1:-1:-1;;;12436:3:1;12421:19;12414:35;12333:3;11475:980;-1:-1:-1;;;11475:980:1:o;12670:217::-;12710:1;12736;12726:132;;12780:10;12775:3;12771:20;12768:1;12761:31;12815:4;12812:1;12805:15;12843:4;12840:1;12833:15;12726:132;-1:-1:-1;12872:9:1;;12670:217::o

Swarm Source

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