ETH Price: $3,415.13 (-1.17%)
Gas: 8 Gwei

Token

Guru (GURU)
 

Overview

Max Total Supply

600,000,000 GURU

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,821,600 GURU

Value
$0.00
0x2c4d8491da647594086af2c4300b71d28b501119
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:
GURU

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

// SPDX-License-Identifier: MIT

/*

Guru
Portal : https://t.me/GuruErc
Twitter : https://twitter.com/GuruErc

Introducing Guru, the spiritual leader of the metaverse! Experience a new dimension of crypto enlightenment with Guru token. Harnessing the power of blockchain technology, Guru connects like-minded souls, guiding them towards prosperity and inner growth. Join the spiritual revolution and embrace the path to abundance in the metaverse with Guru token.

*/

pragma solidity 0.8.18;

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 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 Auth {
    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() external onlyOwner {
        owner = address(0);
    }

}

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract GURU is ERC20, Auth {
    using SafeMath for uint256;

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

    string public constant name = "Guru";
    string public constant symbol = "GURU";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 600_000_000 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 marketingFee = 3;
    uint256 operationsFee = 3;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 300;
    uint256 sellMultiplier = 300;
    uint256 transferMultiplier = 0;

    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public immutable router;
    address public immutable pair;

    bool swapEnabled = true;
    uint256 swapThreshold = totalSupply / 100;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = msg.sender;
        operationsFeeReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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 setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set Max Wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 10,"Cannot set Max Transaction less than 1%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        buyMultiplier = _buy;
        sellMultiplier = _sell;
        transferMultiplier = _trans;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapThreshold = totalSupply / _denominator;
        swapEnabled = _enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function swapBack() internal swapping {

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHmarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHmarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

60e060405260646009600a6200001691906200096c565b6323c34600620000279190620009bd565b62000033919062000a37565b60015560646009600a6200004891906200096c565b6323c34600620000599190620009bd565b62000065919062000a37565b6002556003600855600360095560095460085462000084919062000a6f565b600a5561012c600b5561012c600c556000600d556001600f60146101000a81548160ff02191690831515021790555060646009600a620000c591906200096c565b6323c34600620000d69190620009bd565b620000e2919062000a37565b601055348015620000f257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000b14565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000298919062000b14565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b8152600401620002d692919062000b57565b6020604051808303816000875af1158015620002f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031c919062000b14565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620006f091906200096c565b6323c34600620007019190620009bd565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620007a491906200096c565b6323c34600620007b59190620009bd565b604051620007c4919062000b95565b60405180910390a362000bb2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200086057808604811115620008385762000837620007d2565b5b6001851615620008485780820291505b8081029050620008588562000801565b945062000818565b94509492505050565b6000826200087b57600190506200094e565b816200088b57600090506200094e565b8160018114620008a45760028114620008af57620008e5565b60019150506200094e565b60ff841115620008c457620008c3620007d2565b5b8360020a915084821115620008de57620008dd620007d2565b5b506200094e565b5060208310610133831016604e8410600b84101617156200091f5782820a905083811115620009195762000918620007d2565b5b6200094e565b6200092e84848460016200080e565b92509050818404811115620009485762000947620007d2565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009798262000955565b915062000986836200095f565b9250620009b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000869565b905092915050565b6000620009ca8262000955565b9150620009d78362000955565b9250828202620009e78162000955565b9150828204841483151762000a015762000a00620007d2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a448262000955565b915062000a518362000955565b92508262000a645762000a6362000a08565b5b828204905092915050565b600062000a7c8262000955565b915062000a898362000955565b925082820190508082111562000aa45762000aa3620007d2565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000adc8262000aaf565b9050919050565b62000aee8162000acf565b811462000afa57600080fd5b50565b60008151905062000b0e8162000ae3565b92915050565b60006020828403121562000b2d5762000b2c62000aaa565b5b600062000b3d8482850162000afd565b91505092915050565b62000b518162000acf565b82525050565b600060408201905062000b6e600083018562000b46565b62000b7d602083018462000b46565b9392505050565b62000b8f8162000955565b82525050565b600060208201905062000bac600083018462000b84565b92915050565b60805160a05160c051612ff962000c05600039600081816110830152818161141d01528181611a6901528181611ea00152611efd0152600081816112c10152611c6301526000611bf40152612ff96000f3fe6080604052600436106101c65760003560e01c806370a08231116100f757806395d89b4111610095578063c867d60b11610064578063c867d60b1461068b578063dd62ed3e146106c8578063df20fd4914610705578063f887ea401461072e576101cd565b806395d89b41146105cf578063a8aa1b31146105fa578063a9059cbb14610625578063bd9ab53714610662576101cd565b806378109e54116100d157806378109e54146105115780637d1db4a51461053c578063893d20e8146105675780638b42507f14610592576101cd565b806370a0823114610480578063715018a6146104bd57806377b54bad146104d4576101cd565b806323b872dd11610164578063313ce5671161013e578063313ce567146103b25780633f4218e0146103dd578063571ac8b01461041a5780636ce46bc314610457576101cd565b806323b872dd1461030d5780632b112e491461034a5780632f54bf6e14610375576101cd565b8063180b0d7e116101a0578063180b0d7e1461026357806318160ddd1461028e5780631da1db5e146102b95780631df4ccfc146102e2576101cd565b806306fdde03146101d257806309302dc6146101fd578063095ea7b314610226576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610759565b6040516101f49190612320565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061237d565b610792565b005b34801561023257600080fd5b5061024d60048036038101906102489190612408565b61085c565b60405161025a9190612463565b60405180910390f35b34801561026f57600080fd5b5061027861094e565b604051610285919061248d565b60405180910390f35b34801561029a57600080fd5b506102a3610953565b6040516102b0919061248d565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db919061237d565b610973565b005b3480156102ee57600080fd5b506102f7610a28565b604051610304919061248d565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f91906124a8565b610a2e565b6040516103419190612463565b60405180910390f35b34801561035657600080fd5b5061035f610c2e565b60405161036c919061248d565b60405180910390f35b34801561038157600080fd5b5061039c600480360381019061039791906124fb565b610ce8565b6040516103a99190612463565b60405180910390f35b3480156103be57600080fd5b506103c7610d41565b6040516103d49190612544565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906124fb565b610d46565b6040516104119190612463565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c91906124fb565b610d66565b60405161044e9190612463565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061255f565b610d99565b005b34801561048c57600080fd5b506104a760048036038101906104a291906124fb565b610dfb565b6040516104b4919061248d565b60405180910390f35b3480156104c957600080fd5b506104d2610e13565b005b3480156104e057600080fd5b506104fb60048036038101906104f69190612408565b610e9e565b6040516105089190612463565b60405180910390f35b34801561051d57600080fd5b50610526610ff3565b604051610533919061248d565b60405180910390f35b34801561054857600080fd5b50610551610ff9565b60405161055e919061248d565b60405180910390f35b34801561057357600080fd5b5061057c610fff565b60405161058991906125c1565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b491906124fb565b611028565b6040516105c69190612463565b60405180910390f35b3480156105db57600080fd5b506105e4611048565b6040516105f19190612320565b60405180910390f35b34801561060657600080fd5b5061060f611081565b60405161061c91906125c1565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190612408565b6110a5565b6040516106599190612463565b60405180910390f35b34801561066e57600080fd5b506106896004803603810190610684919061237d565b6110ba565b005b34801561069757600080fd5b506106b260048036038101906106ad91906124fb565b611184565b6040516106bf9190612463565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906125dc565b6111a4565b6040516106fc919061248d565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190612648565b61122b565b005b34801561073a57600080fd5b506107436112bf565b60405161075091906126e7565b60405180910390f35b6040518060400160405280600481526020017f477572750000000000000000000000000000000000000000000000000000000081525081565b61079b33610ce8565b6107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19061274e565b60405180910390fd5b600a81101561081e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610815906127e0565b60405180910390fd5b6103e8816009600a6108309190612962565b6323c3460061083f91906129ad565b61084991906129ad565b6108539190612a1e565b60028190555050565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161093c919061248d565b60405180910390a36001905092915050565b606481565b6009600a6109619190612962565b6323c3460061097091906129ad565b81565b61097c33610ce8565b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b29061274e565b60405180910390fd5b60004790506000606483836109d091906129ad565b6109da9190612a1e565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a22573d6000803e3d6000fd5b50505050565b600a5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c1a57610b99826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e39092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c25848484611347565b90509392505050565b6000600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a610cc09190612962565b6323c34600610ccf91906129ad565b610cd99190612a4f565b610ce39190612a4f565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60056020528060005260406000206000915054906101000a900460ff1681565b6000610d92827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61085c565b9050919050565b610da233610ce8565b610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd89061274e565b60405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b60036020528060005260406000206000915090505481565b610e1c33610ce8565b610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061274e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610ea933610ce8565b610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf9061274e565b60405180910390fd5b60008203610f6d578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f2991906125c1565b602060405180830381865afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190612a98565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610fa8929190612ac5565b6020604051808303816000875af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612b03565b905092915050565b60025481565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60066020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600481526020017f475552550000000000000000000000000000000000000000000000000000000081525081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110b2338484611347565b905092915050565b6110c333610ce8565b611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f99061274e565b60405180910390fd5b600a811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d90612ba2565b60405180910390fd5b6103e8816009600a6111589190612962565b6323c3460061116791906129ad565b61117191906129ad565b61117b9190612a1e565b60018190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61123433610ce8565b611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a9061274e565b60405180910390fd5b806009600a6112829190612962565b6323c3460061129191906129ad565b61129b9190612a1e565b60108190555081600f60146101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600083831115829061132b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113229190612320565b60405180910390fd5b506000838561133a9190612a4f565b9050809150509392505050565b6000601160009054906101000a900460ff161561137057611369848484611892565b905061188b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114145750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561146c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115015760025482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114bf9190612bc2565b1115611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f790612c42565b60405180910390fd5b5b6001548211158061155b5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115af5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590612cae565b60405180910390fd5b6115f6611a65565b1561160457611603611b3a565b5b61168d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e39092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117735750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61178757611782858486611e78565b611789565b825b90506117dd81600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161187d919061248d565b60405180910390a360019150505b9392505050565b600061191d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e39092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119b282600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c190919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a52919061248d565b60405180910390a3600190509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611ad05750601160009054906101000a900460ff16155b8015611ae85750600f60149054906101000a900460ff165b8015611b355750601054600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601160006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b7257611b71612cce565b5b604051908082528060200260200182016040528015611ba05781602001602082028036833780820191505090505b5090503081600081518110611bb857611bb7612cfd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611c2757611c26612cfd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94760105460008430426040518663ffffffff1660e01b8152600401611cc5959493929190612e25565b600060405180830381600087803b158015611cdf57600080fd5b505af1158015611cf3573d6000803e3d6000fd5b5050505060004790506000600a5460085483611d0f91906129ad565b611d199190612a1e565b90506000600a5460095484611d2e91906129ad565b611d389190612a1e565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611d8290612eb0565b60006040518083038185875af1925050503d8060008114611dbf576040519150601f19603f3d011682016040523d82523d6000602084013e611dc4565b606091505b50509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e0e90612eb0565b60006040518083038185875af1925050503d8060008114611e4b576040519150601f19603f3d011682016040523d82523d6000602084013e611e50565b606091505b50508091505050505050506000601160006101000a81548160ff021916908315150217905550565b600080831480611e8a57506000600a54145b15611e97578290506120ba565b6000600d5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611efb57600c549050611f55565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f5457600b5490505b5b6000611f9c606480611f6791906129ad565b611f8e84611f80600a548a61211f90919063ffffffff16565b61211f90919063ffffffff16565b61219990919063ffffffff16565b905060008111156120a257611ff981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c190919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612099919061248d565b60405180910390a35b6120b581866121e390919063ffffffff16565b925050505b9392505050565b60008082846120d09190612bc2565b905083811015612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210c90612f11565b60405180910390fd5b8091505092915050565b60008083036121315760009050612193565b6000828461213f91906129ad565b905082848261214e9190612a1e565b1461218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590612fa3565b60405180910390fd5b809150505b92915050565b60006121db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061222d565b905092915050565b600061222583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e3565b905092915050565b60008083118290612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b9190612320565b60405180910390fd5b50600083856122839190612a1e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122ca5780820151818401526020810190506122af565b60008484015250505050565b6000601f19601f8301169050919050565b60006122f282612290565b6122fc818561229b565b935061230c8185602086016122ac565b612315816122d6565b840191505092915050565b6000602082019050818103600083015261233a81846122e7565b905092915050565b600080fd5b6000819050919050565b61235a81612347565b811461236557600080fd5b50565b60008135905061237781612351565b92915050565b60006020828403121561239357612392612342565b5b60006123a184828501612368565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123d5826123aa565b9050919050565b6123e5816123ca565b81146123f057600080fd5b50565b600081359050612402816123dc565b92915050565b6000806040838503121561241f5761241e612342565b5b600061242d858286016123f3565b925050602061243e85828601612368565b9150509250929050565b60008115159050919050565b61245d81612448565b82525050565b60006020820190506124786000830184612454565b92915050565b61248781612347565b82525050565b60006020820190506124a2600083018461247e565b92915050565b6000806000606084860312156124c1576124c0612342565b5b60006124cf868287016123f3565b93505060206124e0868287016123f3565b92505060406124f186828701612368565b9150509250925092565b60006020828403121561251157612510612342565b5b600061251f848285016123f3565b91505092915050565b600060ff82169050919050565b61253e81612528565b82525050565b60006020820190506125596000830184612535565b92915050565b60008060006060848603121561257857612577612342565b5b600061258686828701612368565b935050602061259786828701612368565b92505060406125a886828701612368565b9150509250925092565b6125bb816123ca565b82525050565b60006020820190506125d660008301846125b2565b92915050565b600080604083850312156125f3576125f2612342565b5b6000612601858286016123f3565b9250506020612612858286016123f3565b9150509250929050565b61262581612448565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000806040838503121561265f5761265e612342565b5b600061266d85828601612633565b925050602061267e85828601612368565b9150509250929050565b6000819050919050565b60006126ad6126a86126a3846123aa565b612688565b6123aa565b9050919050565b60006126bf82612692565b9050919050565b60006126d1826126b4565b9050919050565b6126e1816126c6565b82525050565b60006020820190506126fc60008301846126d8565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061273860068361229b565b915061274382612702565b602082019050919050565b600060208201905081810360008301526127678161272b565b9050919050565b7f43616e6e6f7420736574204d61782057616c6c6574206c657373207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006127ca60228361229b565b91506127d58261276e565b604082019050919050565b600060208201905081810360008301526127f9816127bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156128865780860481111561286257612861612800565b5b60018516156128715780820291505b808102905061287f8561282f565b9450612846565b94509492505050565b60008261289f576001905061295b565b816128ad576000905061295b565b81600181146128c357600281146128cd576128fc565b600191505061295b565b60ff8411156128df576128de612800565b5b8360020a9150848211156128f6576128f5612800565b5b5061295b565b5060208310610133831016604e8410600b84101617156129315782820a90508381111561292c5761292b612800565b5b61295b565b61293e848484600161283c565b9250905081840481111561295557612954612800565b5b81810290505b9392505050565b600061296d82612347565b915061297883612528565b92506129a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461288f565b905092915050565b60006129b882612347565b91506129c383612347565b92508282026129d181612347565b915082820484148315176129e8576129e7612800565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a2982612347565b9150612a3483612347565b925082612a4457612a436129ef565b5b828204905092915050565b6000612a5a82612347565b9150612a6583612347565b9250828203905081811115612a7d57612a7c612800565b5b92915050565b600081519050612a9281612351565b92915050565b600060208284031215612aae57612aad612342565b5b6000612abc84828501612a83565b91505092915050565b6000604082019050612ada60008301856125b2565b612ae7602083018461247e565b9392505050565b600081519050612afd8161261c565b92915050565b600060208284031215612b1957612b18612342565b5b6000612b2784828501612aee565b91505092915050565b7f43616e6e6f7420736574204d6178205472616e73616374696f6e206c6573732060008201527f7468616e20312500000000000000000000000000000000000000000000000000602082015250565b6000612b8c60278361229b565b9150612b9782612b30565b604082019050919050565b60006020820190508181036000830152612bbb81612b7f565b9050919050565b6000612bcd82612347565b9150612bd883612347565b9250828201905080821115612bf057612bef612800565b5b92915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000612c2c60188361229b565b9150612c3782612bf6565b602082019050919050565b60006020820190508181036000830152612c5b81612c1f565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b6000612c9860158361229b565b9150612ca382612c62565b602082019050919050565b60006020820190508181036000830152612cc781612c8b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000612d51612d4c612d4784612d2c565b612688565b612347565b9050919050565b612d6181612d36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d9c816123ca565b82525050565b6000612dae8383612d93565b60208301905092915050565b6000602082019050919050565b6000612dd282612d67565b612ddc8185612d72565b9350612de783612d83565b8060005b83811015612e18578151612dff8882612da2565b9750612e0a83612dba565b925050600181019050612deb565b5085935050505092915050565b600060a082019050612e3a600083018861247e565b612e476020830187612d58565b8181036040830152612e598186612dc7565b9050612e6860608301856125b2565b612e75608083018461247e565b9695505050505050565b600081905092915050565b50565b6000612e9a600083612e7f565b9150612ea582612e8a565b600082019050919050565b6000612ebb82612e8d565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612efb601b8361229b565b9150612f0682612ec5565b602082019050919050565b60006020820190508181036000830152612f2a81612eee565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f8d60218361229b565b9150612f9882612f31565b604082019050919050565b60006020820190508181036000830152612fbc81612f80565b905091905056fea2646970667358221220199ec320b1bd7c65262f5b2d313d247c5b689c12bbb71eb7bb1112437ba7dc8064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f757806395d89b4111610095578063c867d60b11610064578063c867d60b1461068b578063dd62ed3e146106c8578063df20fd4914610705578063f887ea401461072e576101cd565b806395d89b41146105cf578063a8aa1b31146105fa578063a9059cbb14610625578063bd9ab53714610662576101cd565b806378109e54116100d157806378109e54146105115780637d1db4a51461053c578063893d20e8146105675780638b42507f14610592576101cd565b806370a0823114610480578063715018a6146104bd57806377b54bad146104d4576101cd565b806323b872dd11610164578063313ce5671161013e578063313ce567146103b25780633f4218e0146103dd578063571ac8b01461041a5780636ce46bc314610457576101cd565b806323b872dd1461030d5780632b112e491461034a5780632f54bf6e14610375576101cd565b8063180b0d7e116101a0578063180b0d7e1461026357806318160ddd1461028e5780631da1db5e146102b95780631df4ccfc146102e2576101cd565b806306fdde03146101d257806309302dc6146101fd578063095ea7b314610226576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610759565b6040516101f49190612320565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061237d565b610792565b005b34801561023257600080fd5b5061024d60048036038101906102489190612408565b61085c565b60405161025a9190612463565b60405180910390f35b34801561026f57600080fd5b5061027861094e565b604051610285919061248d565b60405180910390f35b34801561029a57600080fd5b506102a3610953565b6040516102b0919061248d565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db919061237d565b610973565b005b3480156102ee57600080fd5b506102f7610a28565b604051610304919061248d565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f91906124a8565b610a2e565b6040516103419190612463565b60405180910390f35b34801561035657600080fd5b5061035f610c2e565b60405161036c919061248d565b60405180910390f35b34801561038157600080fd5b5061039c600480360381019061039791906124fb565b610ce8565b6040516103a99190612463565b60405180910390f35b3480156103be57600080fd5b506103c7610d41565b6040516103d49190612544565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906124fb565b610d46565b6040516104119190612463565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c91906124fb565b610d66565b60405161044e9190612463565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061255f565b610d99565b005b34801561048c57600080fd5b506104a760048036038101906104a291906124fb565b610dfb565b6040516104b4919061248d565b60405180910390f35b3480156104c957600080fd5b506104d2610e13565b005b3480156104e057600080fd5b506104fb60048036038101906104f69190612408565b610e9e565b6040516105089190612463565b60405180910390f35b34801561051d57600080fd5b50610526610ff3565b604051610533919061248d565b60405180910390f35b34801561054857600080fd5b50610551610ff9565b60405161055e919061248d565b60405180910390f35b34801561057357600080fd5b5061057c610fff565b60405161058991906125c1565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b491906124fb565b611028565b6040516105c69190612463565b60405180910390f35b3480156105db57600080fd5b506105e4611048565b6040516105f19190612320565b60405180910390f35b34801561060657600080fd5b5061060f611081565b60405161061c91906125c1565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190612408565b6110a5565b6040516106599190612463565b60405180910390f35b34801561066e57600080fd5b506106896004803603810190610684919061237d565b6110ba565b005b34801561069757600080fd5b506106b260048036038101906106ad91906124fb565b611184565b6040516106bf9190612463565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906125dc565b6111a4565b6040516106fc919061248d565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190612648565b61122b565b005b34801561073a57600080fd5b506107436112bf565b60405161075091906126e7565b60405180910390f35b6040518060400160405280600481526020017f477572750000000000000000000000000000000000000000000000000000000081525081565b61079b33610ce8565b6107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19061274e565b60405180910390fd5b600a81101561081e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610815906127e0565b60405180910390fd5b6103e8816009600a6108309190612962565b6323c3460061083f91906129ad565b61084991906129ad565b6108539190612a1e565b60028190555050565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161093c919061248d565b60405180910390a36001905092915050565b606481565b6009600a6109619190612962565b6323c3460061097091906129ad565b81565b61097c33610ce8565b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b29061274e565b60405180910390fd5b60004790506000606483836109d091906129ad565b6109da9190612a1e565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a22573d6000803e3d6000fd5b50505050565b600a5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c1a57610b99826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e39092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c25848484611347565b90509392505050565b6000600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a610cc09190612962565b6323c34600610ccf91906129ad565b610cd99190612a4f565b610ce39190612a4f565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60056020528060005260406000206000915054906101000a900460ff1681565b6000610d92827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61085c565b9050919050565b610da233610ce8565b610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd89061274e565b60405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b60036020528060005260406000206000915090505481565b610e1c33610ce8565b610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061274e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610ea933610ce8565b610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf9061274e565b60405180910390fd5b60008203610f6d578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f2991906125c1565b602060405180830381865afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190612a98565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610fa8929190612ac5565b6020604051808303816000875af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612b03565b905092915050565b60025481565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60066020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600481526020017f475552550000000000000000000000000000000000000000000000000000000081525081565b7f00000000000000000000000001e8c1f478a74604bcba7eb2c3836131d04f8ea681565b60006110b2338484611347565b905092915050565b6110c333610ce8565b611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f99061274e565b60405180910390fd5b600a811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d90612ba2565b60405180910390fd5b6103e8816009600a6111589190612962565b6323c3460061116791906129ad565b61117191906129ad565b61117b9190612a1e565b60018190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61123433610ce8565b611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a9061274e565b60405180910390fd5b806009600a6112829190612962565b6323c3460061129191906129ad565b61129b9190612a1e565b60108190555081600f60146101000a81548160ff0219169083151502179055505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600083831115829061132b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113229190612320565b60405180910390fd5b506000838561133a9190612a4f565b9050809150509392505050565b6000601160009054906101000a900460ff161561137057611369848484611892565b905061188b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114145750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561146c57507f00000000000000000000000001e8c1f478a74604bcba7eb2c3836131d04f8ea673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115015760025482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114bf9190612bc2565b1115611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f790612c42565b60405180910390fd5b5b6001548211158061155b5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115af5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590612cae565b60405180910390fd5b6115f6611a65565b1561160457611603611b3a565b5b61168d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e39092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117735750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61178757611782858486611e78565b611789565b825b90506117dd81600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161187d919061248d565b60405180910390a360019150505b9392505050565b600061191d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e39092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119b282600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c190919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a52919061248d565b60405180910390a3600190509392505050565b60007f00000000000000000000000001e8c1f478a74604bcba7eb2c3836131d04f8ea673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611ad05750601160009054906101000a900460ff16155b8015611ae85750600f60149054906101000a900460ff165b8015611b355750601054600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601160006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b7257611b71612cce565b5b604051908082528060200260200182016040528015611ba05781602001602082028036833780820191505090505b5090503081600081518110611bb857611bb7612cfd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c2757611c26612cfd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94760105460008430426040518663ffffffff1660e01b8152600401611cc5959493929190612e25565b600060405180830381600087803b158015611cdf57600080fd5b505af1158015611cf3573d6000803e3d6000fd5b5050505060004790506000600a5460085483611d0f91906129ad565b611d199190612a1e565b90506000600a5460095484611d2e91906129ad565b611d389190612a1e565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611d8290612eb0565b60006040518083038185875af1925050503d8060008114611dbf576040519150601f19603f3d011682016040523d82523d6000602084013e611dc4565b606091505b50509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e0e90612eb0565b60006040518083038185875af1925050503d8060008114611e4b576040519150601f19603f3d011682016040523d82523d6000602084013e611e50565b606091505b50508091505050505050506000601160006101000a81548160ff021916908315150217905550565b600080831480611e8a57506000600a54145b15611e97578290506120ba565b6000600d5490507f00000000000000000000000001e8c1f478a74604bcba7eb2c3836131d04f8ea673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611efb57600c549050611f55565b7f00000000000000000000000001e8c1f478a74604bcba7eb2c3836131d04f8ea673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f5457600b5490505b5b6000611f9c606480611f6791906129ad565b611f8e84611f80600a548a61211f90919063ffffffff16565b61211f90919063ffffffff16565b61219990919063ffffffff16565b905060008111156120a257611ff981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c190919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612099919061248d565b60405180910390a35b6120b581866121e390919063ffffffff16565b925050505b9392505050565b60008082846120d09190612bc2565b905083811015612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210c90612f11565b60405180910390fd5b8091505092915050565b60008083036121315760009050612193565b6000828461213f91906129ad565b905082848261214e9190612a1e565b1461218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590612fa3565b60405180910390fd5b809150505b92915050565b60006121db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061222d565b905092915050565b600061222583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e3565b905092915050565b60008083118290612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b9190612320565b60405180910390fd5b50600083856122839190612a1e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122ca5780820151818401526020810190506122af565b60008484015250505050565b6000601f19601f8301169050919050565b60006122f282612290565b6122fc818561229b565b935061230c8185602086016122ac565b612315816122d6565b840191505092915050565b6000602082019050818103600083015261233a81846122e7565b905092915050565b600080fd5b6000819050919050565b61235a81612347565b811461236557600080fd5b50565b60008135905061237781612351565b92915050565b60006020828403121561239357612392612342565b5b60006123a184828501612368565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123d5826123aa565b9050919050565b6123e5816123ca565b81146123f057600080fd5b50565b600081359050612402816123dc565b92915050565b6000806040838503121561241f5761241e612342565b5b600061242d858286016123f3565b925050602061243e85828601612368565b9150509250929050565b60008115159050919050565b61245d81612448565b82525050565b60006020820190506124786000830184612454565b92915050565b61248781612347565b82525050565b60006020820190506124a2600083018461247e565b92915050565b6000806000606084860312156124c1576124c0612342565b5b60006124cf868287016123f3565b93505060206124e0868287016123f3565b92505060406124f186828701612368565b9150509250925092565b60006020828403121561251157612510612342565b5b600061251f848285016123f3565b91505092915050565b600060ff82169050919050565b61253e81612528565b82525050565b60006020820190506125596000830184612535565b92915050565b60008060006060848603121561257857612577612342565b5b600061258686828701612368565b935050602061259786828701612368565b92505060406125a886828701612368565b9150509250925092565b6125bb816123ca565b82525050565b60006020820190506125d660008301846125b2565b92915050565b600080604083850312156125f3576125f2612342565b5b6000612601858286016123f3565b9250506020612612858286016123f3565b9150509250929050565b61262581612448565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000806040838503121561265f5761265e612342565b5b600061266d85828601612633565b925050602061267e85828601612368565b9150509250929050565b6000819050919050565b60006126ad6126a86126a3846123aa565b612688565b6123aa565b9050919050565b60006126bf82612692565b9050919050565b60006126d1826126b4565b9050919050565b6126e1816126c6565b82525050565b60006020820190506126fc60008301846126d8565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061273860068361229b565b915061274382612702565b602082019050919050565b600060208201905081810360008301526127678161272b565b9050919050565b7f43616e6e6f7420736574204d61782057616c6c6574206c657373207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006127ca60228361229b565b91506127d58261276e565b604082019050919050565b600060208201905081810360008301526127f9816127bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156128865780860481111561286257612861612800565b5b60018516156128715780820291505b808102905061287f8561282f565b9450612846565b94509492505050565b60008261289f576001905061295b565b816128ad576000905061295b565b81600181146128c357600281146128cd576128fc565b600191505061295b565b60ff8411156128df576128de612800565b5b8360020a9150848211156128f6576128f5612800565b5b5061295b565b5060208310610133831016604e8410600b84101617156129315782820a90508381111561292c5761292b612800565b5b61295b565b61293e848484600161283c565b9250905081840481111561295557612954612800565b5b81810290505b9392505050565b600061296d82612347565b915061297883612528565b92506129a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461288f565b905092915050565b60006129b882612347565b91506129c383612347565b92508282026129d181612347565b915082820484148315176129e8576129e7612800565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a2982612347565b9150612a3483612347565b925082612a4457612a436129ef565b5b828204905092915050565b6000612a5a82612347565b9150612a6583612347565b9250828203905081811115612a7d57612a7c612800565b5b92915050565b600081519050612a9281612351565b92915050565b600060208284031215612aae57612aad612342565b5b6000612abc84828501612a83565b91505092915050565b6000604082019050612ada60008301856125b2565b612ae7602083018461247e565b9392505050565b600081519050612afd8161261c565b92915050565b600060208284031215612b1957612b18612342565b5b6000612b2784828501612aee565b91505092915050565b7f43616e6e6f7420736574204d6178205472616e73616374696f6e206c6573732060008201527f7468616e20312500000000000000000000000000000000000000000000000000602082015250565b6000612b8c60278361229b565b9150612b9782612b30565b604082019050919050565b60006020820190508181036000830152612bbb81612b7f565b9050919050565b6000612bcd82612347565b9150612bd883612347565b9250828201905080821115612bf057612bef612800565b5b92915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000612c2c60188361229b565b9150612c3782612bf6565b602082019050919050565b60006020820190508181036000830152612c5b81612c1f565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b6000612c9860158361229b565b9150612ca382612c62565b602082019050919050565b60006020820190508181036000830152612cc781612c8b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000612d51612d4c612d4784612d2c565b612688565b612347565b9050919050565b612d6181612d36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d9c816123ca565b82525050565b6000612dae8383612d93565b60208301905092915050565b6000602082019050919050565b6000612dd282612d67565b612ddc8185612d72565b9350612de783612d83565b8060005b83811015612e18578151612dff8882612da2565b9750612e0a83612dba565b925050600181019050612deb565b5085935050505092915050565b600060a082019050612e3a600083018861247e565b612e476020830187612d58565b8181036040830152612e598186612dc7565b9050612e6860608301856125b2565b612e75608083018461247e565b9695505050505050565b600081905092915050565b50565b6000612e9a600083612e7f565b9150612ea582612e8a565b600082019050919050565b6000612ebb82612e8d565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612efb601b8361229b565b9150612f0682612ec5565b602082019050919050565b60006020820190508181036000830152612f2a81612eee565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f8d60218361229b565b9150612f9882612f31565b604082019050919050565b60006020820190508181036000830152612fbc81612f80565b905091905056fea2646970667358221220199ec320b1bd7c65262f5b2d313d247c5b689c12bbb71eb7bb1112437ba7dc8064736f6c63430008120033

Deployed Bytecode Sourcemap

3222:8074:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3470:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6659:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5763:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4200:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3601:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9969:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4139:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6281:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9619:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2542:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3558:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3909:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9226:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3787:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2653:85;;;;;;;;;;;;;:::i;:::-;;10236:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3728:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3674:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5538:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3960:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3513:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4479:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6117:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6927:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4015:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5622:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9432:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4438:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3470:36;;;;;;;;;;;;;;;;;;;:::o;6659:260::-;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6795:2:::1;6768:23;:29;;6760:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;6907:4;6879:23;3591:1;3653:2;:12;;;;:::i;:::-;3639:11;:26;;;;:::i;:::-;6865:37;;;;:::i;:::-;6864:47;;;;:::i;:::-;6846:15;:65;;;;6659:260:::0;:::o;5763:216::-;5838:4;5890:6;5855:11;:23;5867:10;5855:23;;;;;;;;;;;;;;;:32;5879:7;5855:32;;;;;;;;;;;;;;;:41;;;;5933:7;5912:37;;5921:10;5912:37;;;5942:6;5912:37;;;;;;:::i;:::-;;;;;;;;5967:4;5960:11;;5763:216;;;;:::o;4200:44::-;4241:3;4200:44;:::o;3601:64::-;3591:1;3653:2;:12;;;;:::i;:::-;3639:11;:26;;;;:::i;:::-;3601:64;:::o;9969:259::-;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10052:17:::1;10072:21;10052:41;;10104:21;10163:3;10142:16;10130:9;:28;;;;:::i;:::-;10128:38;;;;:::i;:::-;10104:62;;10185:10;10177:28;;:43;10206:13;10177:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10041:187;;9969:259:::0;:::o;4139:54::-;;;;:::o;6281:370::-;6381:4;6436:17;6401:11;:19;6413:6;6401:19;;;;;;;;;;;;;;;:31;6421:10;6401:31;;;;;;;;;;;;;;;;:52;6398:186;;6503:69;6539:6;6503:69;;;;;;;;;;;;;;;;;:11;:19;6515:6;6503:19;;;;;;;;;;;;;;;:31;6523:10;6503:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;6469:11;:19;6481:6;6469:19;;;;;;;;;;;;;;;:31;6489:10;6469:31;;;;;;;;;;;;;;;:103;;;;6398:186;6603:40;6617:6;6625:9;6636:6;6603:13;:40::i;:::-;6596:47;;6281:370;;;;;:::o;9619:137::-;9672:7;9732:9;:15;3419:42;9732:15;;;;;;;;;;;;;;;;9714:9;:15;3346:42;9714:15;;;;;;;;;;;;;;;;3591:1;3653:2;:12;;;;:::i;:::-;3639:11;:26;;;;:::i;:::-;9700:29;;;;:::i;:::-;:47;;;;:::i;:::-;9692:56;;9619:137;:::o;2542:103::-;2597:4;2632:5;;;;;;;;;;;2621:16;;:7;:16;;;2614:23;;2542:103;;;:::o;3558:34::-;3591:1;3558:34;:::o;3909:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5987:122::-;6042:4;6066:35;6074:7;6083:17;6066:7;:35::i;:::-;6059:42;;5987:122;;;:::o;9226:198::-;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9341:4:::1;9325:13;:20;;;;9373:5;9356:14;:22;;;;9410:6;9389:18;:27;;;;9226:198:::0;;;:::o;3787:45::-;;;;;;;;;;;;;;;;;:::o;2653:85::-;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2728:1:::1;2712:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2653:85::o:0;10236:284::-;10327:12;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10365:1:::1;10355:6;:11:::0;10352:95:::1;;10397:12;10391:29;;;10429:4;10391:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10382:53;;10352:95;10470:12;10464:28;;;10493:10;10505:6;10464:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10457:55;;10236:284:::0;;;;:::o;3728:50::-;;;;:::o;3674:47::-;;;;:::o;5538:78::-;5590:7;5608:5;;;;;;;;;;;5601:12;;5538:78;:::o;3960:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3513:38::-;;;;;;;;;;;;;;;;;;;:::o;4479:29::-;;;:::o;6117:156::-;6197:4;6221:44;6235:10;6247:9;6258:6;6221:13;:44::i;:::-;6214:51;;6117:156;;;;:::o;6927:261::-;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7061:2:::1;7033:24;:30;;7025:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;7176:4;7147:24;3591:1;3653:2;:12;;;;:::i;:::-;3639:11;:26;;;;:::i;:::-;7133:38;;;;:::i;:::-;7132:48;;;;:::i;:::-;7117:12;:63;;;;6927:261:::0;:::o;4015:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;5622:133::-;5706:7;5724:11;:19;5736:6;5724:19;;;;;;;;;;;;;;;:28;5744:7;5724:28;;;;;;;;;;;;;;;;5717:35;;5622:133;;;;:::o;9432:179::-;2493:19;2501:10;2493:7;:19::i;:::-;2485:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9558:12:::1;3591:1;3653:2;:12;;;;:::i;:::-;3639:11;:26;;;;:::i;:::-;9544;;;;:::i;:::-;9528:13;:42;;;;9595:8;9581:11;;:22;;;;;;;;;;;;;;;;;;9432:179:::0;;:::o;4438:34::-;;;:::o;861:192::-;947:7;980:1;975;:6;;983:12;967:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1007:9;1023:1;1019;:5;;;;:::i;:::-;1007:17;;1044:1;1037:8;;;861:192;;;;;:::o;7196:949::-;7288:4;7308:6;;;;;;;;;;;7305:63;;;7324:41;7339:6;7347:9;7358:6;7324:14;:41::i;:::-;7317:48;;;;7305:63;7385:19;:27;7405:6;7385:27;;;;;;;;;;;;;;;;;;;;;;;;;7384:28;:63;;;;;7417:19;:30;7437:9;7417:30;;;;;;;;;;;;;;;;;;;;;;;;;7416:31;7384:63;:84;;;;;7464:4;7451:17;;:9;:17;;;;7384:84;7380:203;;;7528:15;;7517:6;7494:9;:20;7504:9;7494:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7493:50;;7485:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;7380:203;7618:12;;7608:6;:22;;7607:51;;;;7635:15;:23;7651:6;7635:23;;;;;;;;;;;;;;;;;;;;;;;;;7607:51;:81;;;;7662:15;:26;7678:9;7662:26;;;;;;;;;;;;;;;;;;;;;;;;;7607:81;7599:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;7730:16;:14;:16::i;:::-;7727:35;;;7749:10;:8;:10::i;:::-;7727:35;7794:53;7816:6;7794:53;;;;;;;;;;;;;;;;;:9;:17;7804:6;7794:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;7774:9;:17;7784:6;7774:17;;;;;;;;;;;;;;;:73;;;;7860:22;7886:11;:19;7898:6;7886:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;7909:11;:22;7921:9;7909:22;;;;;;;;;;;;;;;;;;;;;;;;;7886:45;7885:93;;7944:34;7952:6;7960;7968:9;7944:7;:34::i;:::-;7885:93;;;7935:6;7885:93;7860:118;;8014:40;8039:14;8014:9;:20;8024:9;8014:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;7991:9;:20;8001:9;7991:20;;;;;;;;;;;;;;;:63;;;;8089:9;8072:43;;8081:6;8072:43;;;8100:14;8072:43;;;;;;:::i;:::-;;;;;;;;8133:4;8126:11;;;7196:949;;;;;;:::o;8157:330::-;8250:4;8287:53;8309:6;8287:53;;;;;;;;;;;;;;;;;:9;:17;8297:6;8287:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8267:9;:17;8277:6;8267:17;;;;;;;;;;;;;;;:73;;;;8374:32;8399:6;8374:9;:20;8384:9;8374:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8351:9;:20;8361:9;8351:20;;;;;;;;;;;;;;;:55;;;;8439:9;8422:35;;8431:6;8422:35;;;8450:6;8422:35;;;;;;:::i;:::-;;;;;;;;8475:4;8468:11;;8157:330;;;;;:::o;9764:197::-;9813:4;9851;9837:18;;:10;:18;;;;:38;;;;;9869:6;;;;;;;;;;;9868:7;9837:38;:62;;;;;9888:11;;;;;;;;;;;9837:62;:116;;;;;9940:13;;9912:9;:24;9930:4;9912:24;;;;;;;;;;;;;;;;:41;;9837:116;9830:123;;9764:197;:::o;10528:765::-;4644:4;4635:6;;:13;;;;;;;;;;;;;;;;;;10579:21:::1;10617:1;10603:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10579:40;;10648:4;10630;10635:1;10630:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10674:4;10664;10669:1;10664:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;10691:6;:57;;;10763:13;;10791:1;10807:4;10834;10854:15;10691:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10893:17;10913:21;10893:41;;10947:26;11005:8;;10989:12;;10977:9;:24;;;;:::i;:::-;10976:37;;;;:::i;:::-;10947:66;;11024:27;11084:8;;11067:13;;11055:9;:25;;;;:::i;:::-;11054:38;;;;:::i;:::-;11024:68;;11106:15;11134:20;;;;;;;;;;;11126:34;;11168:18;11126:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11105:86;;;11226:21;;;;;;;;;;;11218:35;;11261:19;11218:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:83;;;;;10566:727;;;;;4662:5:::0;4653:6;;:14;;;;;;;;;;;;;;;;;;10528:765::o;8495:723::-;8581:7;8614:1;8604:6;:11;:28;;;;8631:1;8619:8;;:13;8604:28;8601:72;;;8655:6;8648:13;;;;8601:72;8685:18;8706;;8685:39;;8753:4;8740:17;;:9;:17;;;8737:154;;8787:14;;8774:27;;8737:154;;;8832:4;8822:14;;:6;:14;;;8819:72;;8866:13;;8853:26;;8819:72;8737:154;8903:17;8923:62;8981:3;4241;8964:20;;;;:::i;:::-;8923:36;8948:10;8923:20;8934:8;;8923:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;8903:82;;9013:1;9001:9;:13;8998:172;;;9057:39;9086:9;9057;:24;9075:4;9057:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9030:9;:24;9048:4;9030:24;;;;;;;;;;;;;;;:66;;;;9141:4;9116:42;;9125:6;9116:42;;;9148:9;9116:42;;;;;;:::i;:::-;;;;;;;;8998:172;9189:21;9200:9;9189:6;:10;;:21;;;;:::i;:::-;9182:28;;;;8495:723;;;;;;:::o;532:181::-;590:7;610:9;626:1;622;:5;;;;:::i;:::-;610:17;;651:1;646;:6;;638:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;704:1;697:8;;;532:181;;;;:::o;1059:250::-;1117:7;1146:1;1141;:6;1137:47;;1171:1;1164:8;;;;1137:47;1196:9;1212:1;1208;:5;;;;:::i;:::-;1196:17;;1241:1;1236;1232;:5;;;;:::i;:::-;:10;1224:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1300:1;1293:8;;;1059:250;;;;;:::o;1315:132::-;1373:7;1400:39;1404:1;1407;1400:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1393:46;;1315:132;;;;:::o;719:136::-;777:7;804:43;808:1;811;804:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;797:50;;719:136;;;;:::o;1453:189::-;1539:7;1571:1;1567;:5;1574:12;1559:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1598:9;1614:1;1610;:5;;;;:::i;:::-;1598:17;;1633:1;1626:8;;;1453:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:329::-;2091:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:119;;;2146:79;;:::i;:::-;2108:119;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2032:329;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:329::-;4817:6;4866:2;4854:9;4845:7;4841:23;4837:32;4834:119;;;4872:79;;:::i;:::-;4834:119;4992:1;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4963:117;4758:329;;;;:::o;5093:86::-;5128:7;5168:4;5161:5;5157:16;5146:27;;5093:86;;;:::o;5185:112::-;5268:22;5284:5;5268:22;:::i;:::-;5263:3;5256:35;5185:112;;:::o;5303:214::-;5392:4;5430:2;5419:9;5415:18;5407:26;;5443:67;5507:1;5496:9;5492:17;5483:6;5443:67;:::i;:::-;5303:214;;;;:::o;5523:619::-;5600:6;5608;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;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5523:619;;;;;:::o;6148:118::-;6235:24;6253:5;6235:24;:::i;:::-;6230:3;6223:37;6148:118;;:::o;6272:222::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:71;6484:1;6473:9;6469:17;6460:6;6416:71;:::i;:::-;6272:222;;;;:::o;6500:474::-;6568:6;6576;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;:::i;:::-;6766:63;;6722:117;6878:2;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6849:118;6500:474;;;;;:::o;6980:116::-;7050:21;7065:5;7050:21;:::i;:::-;7043:5;7040:32;7030:60;;7086:1;7083;7076:12;7030:60;6980:116;:::o;7102:133::-;7145:5;7183:6;7170:20;7161:29;;7199:30;7223:5;7199:30;:::i;:::-;7102:133;;;;:::o;7241:468::-;7306:6;7314;7363:2;7351:9;7342:7;7338:23;7334:32;7331:119;;;7369:79;;:::i;:::-;7331:119;7489:1;7514:50;7556:7;7547:6;7536:9;7532:22;7514:50;:::i;:::-;7504:60;;7460:114;7613:2;7639:53;7684:7;7675:6;7664:9;7660:22;7639:53;:::i;:::-;7629:63;;7584:118;7241:468;;;;;:::o;7715:60::-;7743:3;7764:5;7757:12;;7715:60;;;:::o;7781:142::-;7831:9;7864:53;7882:34;7891:24;7909:5;7891:24;:::i;:::-;7882:34;:::i;:::-;7864:53;:::i;:::-;7851:66;;7781:142;;;:::o;7929:126::-;7979:9;8012:37;8043:5;8012:37;:::i;:::-;7999:50;;7929:126;;;:::o;8061:144::-;8129:9;8162:37;8193:5;8162:37;:::i;:::-;8149:50;;8061:144;;;:::o;8211:167::-;8316:55;8365:5;8316:55;:::i;:::-;8311:3;8304:68;8211:167;;:::o;8384:258::-;8495:4;8533:2;8522:9;8518:18;8510:26;;8546:89;8632:1;8621:9;8617:17;8608:6;8546:89;:::i;:::-;8384:258;;;;:::o;8648:156::-;8788:8;8784:1;8776:6;8772:14;8765:32;8648:156;:::o;8810:365::-;8952:3;8973:66;9037:1;9032:3;8973:66;:::i;:::-;8966:73;;9048:93;9137:3;9048:93;:::i;:::-;9166:2;9161:3;9157:12;9150:19;;8810:365;;;:::o;9181:419::-;9347:4;9385:2;9374:9;9370:18;9362:26;;9434:9;9428:4;9424:20;9420:1;9409:9;9405:17;9398:47;9462:131;9588:4;9462:131;:::i;:::-;9454:139;;9181:419;;;:::o;9606:221::-;9746:34;9742:1;9734:6;9730:14;9723:58;9815:4;9810:2;9802:6;9798:15;9791:29;9606:221;:::o;9833:366::-;9975:3;9996:67;10060:2;10055:3;9996:67;:::i;:::-;9989:74;;10072:93;10161:3;10072:93;:::i;:::-;10190:2;10185:3;10181:12;10174:19;;9833:366;;;:::o;10205:419::-;10371:4;10409:2;10398:9;10394:18;10386:26;;10458:9;10452:4;10448:20;10444:1;10433:9;10429:17;10422:47;10486:131;10612:4;10486:131;:::i;:::-;10478:139;;10205:419;;;:::o;10630:180::-;10678:77;10675:1;10668:88;10775:4;10772:1;10765:15;10799:4;10796:1;10789:15;10816:102;10858:8;10905:5;10902:1;10898:13;10877:34;;10816:102;;;:::o;10924:848::-;10985:5;10992:4;11016:6;11007:15;;11040:5;11031:14;;11054:712;11075:1;11065:8;11062:15;11054:712;;;11170:4;11165:3;11161:14;11155:4;11152:24;11149:50;;;11179:18;;:::i;:::-;11149:50;11229:1;11219:8;11215:16;11212:451;;;11644:4;11637:5;11633:16;11624:25;;11212:451;11694:4;11688;11684:15;11676:23;;11724:32;11747:8;11724:32;:::i;:::-;11712:44;;11054:712;;;10924:848;;;;;;;:::o;11778:1073::-;11832:5;12023:8;12013:40;;12044:1;12035:10;;12046:5;;12013:40;12072:4;12062:36;;12089:1;12080:10;;12091:5;;12062:36;12158:4;12206:1;12201:27;;;;12242:1;12237:191;;;;12151:277;;12201:27;12219:1;12210:10;;12221:5;;;12237:191;12282:3;12272:8;12269:17;12266:43;;;12289:18;;:::i;:::-;12266:43;12338:8;12335:1;12331:16;12322:25;;12373:3;12366:5;12363:14;12360:40;;;12380:18;;:::i;:::-;12360:40;12413:5;;;12151:277;;12537:2;12527:8;12524:16;12518:3;12512:4;12509:13;12505:36;12487:2;12477:8;12474:16;12469:2;12463:4;12460:12;12456:35;12440:111;12437:246;;;12593:8;12587:4;12583:19;12574:28;;12628:3;12621:5;12618:14;12615:40;;;12635:18;;:::i;:::-;12615:40;12668:5;;12437:246;12708:42;12746:3;12736:8;12730:4;12727:1;12708:42;:::i;:::-;12693:57;;;;12782:4;12777:3;12773:14;12766:5;12763:25;12760:51;;;12791:18;;:::i;:::-;12760:51;12840:4;12833:5;12829:16;12820:25;;11778:1073;;;;;;:::o;12857:281::-;12915:5;12939:23;12957:4;12939:23;:::i;:::-;12931:31;;12983:25;12999:8;12983:25;:::i;:::-;12971:37;;13027:104;13064:66;13054:8;13048:4;13027:104;:::i;:::-;13018:113;;12857:281;;;;:::o;13144:410::-;13184:7;13207:20;13225:1;13207:20;:::i;:::-;13202:25;;13241:20;13259:1;13241:20;:::i;:::-;13236:25;;13296:1;13293;13289:9;13318:30;13336:11;13318:30;:::i;:::-;13307:41;;13497:1;13488:7;13484:15;13481:1;13478:22;13458:1;13451:9;13431:83;13408:139;;13527:18;;:::i;:::-;13408:139;13192:362;13144:410;;;;:::o;13560:180::-;13608:77;13605:1;13598:88;13705:4;13702:1;13695:15;13729:4;13726:1;13719:15;13746:185;13786:1;13803:20;13821:1;13803:20;:::i;:::-;13798:25;;13837:20;13855:1;13837:20;:::i;:::-;13832:25;;13876:1;13866:35;;13881:18;;:::i;:::-;13866:35;13923:1;13920;13916:9;13911:14;;13746:185;;;;:::o;13937:194::-;13977:4;13997:20;14015:1;13997:20;:::i;:::-;13992:25;;14031:20;14049:1;14031:20;:::i;:::-;14026:25;;14075:1;14072;14068:9;14060:17;;14099:1;14093:4;14090:11;14087:37;;;14104:18;;:::i;:::-;14087:37;13937:194;;;;:::o;14137:143::-;14194:5;14225:6;14219:13;14210:22;;14241:33;14268:5;14241:33;:::i;:::-;14137:143;;;;:::o;14286:351::-;14356:6;14405:2;14393:9;14384:7;14380:23;14376:32;14373:119;;;14411:79;;:::i;:::-;14373:119;14531:1;14556:64;14612:7;14603:6;14592:9;14588:22;14556:64;:::i;:::-;14546:74;;14502:128;14286:351;;;;:::o;14643:332::-;14764:4;14802:2;14791:9;14787:18;14779:26;;14815:71;14883:1;14872:9;14868:17;14859:6;14815:71;:::i;:::-;14896:72;14964:2;14953:9;14949:18;14940:6;14896:72;:::i;:::-;14643:332;;;;;:::o;14981:137::-;15035:5;15066:6;15060:13;15051:22;;15082:30;15106:5;15082:30;:::i;:::-;14981:137;;;;:::o;15124:345::-;15191:6;15240:2;15228:9;15219:7;15215:23;15211:32;15208:119;;;15246:79;;:::i;:::-;15208:119;15366:1;15391:61;15444:7;15435:6;15424:9;15420:22;15391:61;:::i;:::-;15381:71;;15337:125;15124:345;;;;:::o;15475:226::-;15615:34;15611:1;15603:6;15599:14;15592:58;15684:9;15679:2;15671:6;15667:15;15660:34;15475:226;:::o;15707:366::-;15849:3;15870:67;15934:2;15929:3;15870:67;:::i;:::-;15863:74;;15946:93;16035:3;15946:93;:::i;:::-;16064:2;16059:3;16055:12;16048:19;;15707:366;;;:::o;16079:419::-;16245:4;16283:2;16272:9;16268:18;16260:26;;16332:9;16326:4;16322:20;16318:1;16307:9;16303:17;16296:47;16360:131;16486:4;16360:131;:::i;:::-;16352:139;;16079:419;;;:::o;16504:191::-;16544:3;16563:20;16581:1;16563:20;:::i;:::-;16558:25;;16597:20;16615:1;16597:20;:::i;:::-;16592:25;;16640:1;16637;16633:9;16626:16;;16661:3;16658:1;16655:10;16652:36;;;16668:18;;:::i;:::-;16652:36;16504:191;;;;:::o;16701:174::-;16841:26;16837:1;16829:6;16825:14;16818:50;16701:174;:::o;16881:366::-;17023:3;17044:67;17108:2;17103:3;17044:67;:::i;:::-;17037:74;;17120:93;17209:3;17120:93;:::i;:::-;17238:2;17233:3;17229:12;17222:19;;16881:366;;;:::o;17253:419::-;17419:4;17457:2;17446:9;17442:18;17434:26;;17506:9;17500:4;17496:20;17492:1;17481:9;17477:17;17470:47;17534:131;17660:4;17534:131;:::i;:::-;17526:139;;17253:419;;;:::o;17678:171::-;17818:23;17814:1;17806:6;17802:14;17795:47;17678:171;:::o;17855:366::-;17997:3;18018:67;18082:2;18077:3;18018:67;:::i;:::-;18011:74;;18094:93;18183:3;18094:93;:::i;:::-;18212:2;18207:3;18203:12;18196:19;;17855:366;;;:::o;18227:419::-;18393:4;18431:2;18420:9;18416:18;18408:26;;18480:9;18474:4;18470:20;18466:1;18455:9;18451:17;18444:47;18508:131;18634:4;18508:131;:::i;:::-;18500:139;;18227:419;;;:::o;18652:180::-;18700:77;18697:1;18690:88;18797:4;18794:1;18787:15;18821:4;18818:1;18811:15;18838:180;18886:77;18883:1;18876:88;18983:4;18980:1;18973:15;19007:4;19004:1;18997:15;19024:85;19069:7;19098:5;19087:16;;19024:85;;;:::o;19115:158::-;19173:9;19206:61;19224:42;19233:32;19259:5;19233:32;:::i;:::-;19224:42;:::i;:::-;19206:61;:::i;:::-;19193:74;;19115:158;;;:::o;19279:147::-;19374:45;19413:5;19374:45;:::i;:::-;19369:3;19362:58;19279:147;;:::o;19432:114::-;19499:6;19533:5;19527:12;19517:22;;19432:114;;;:::o;19552:184::-;19651:11;19685:6;19680:3;19673:19;19725:4;19720:3;19716:14;19701:29;;19552:184;;;;:::o;19742:132::-;19809:4;19832:3;19824:11;;19862:4;19857:3;19853:14;19845:22;;19742:132;;;:::o;19880:108::-;19957:24;19975:5;19957:24;:::i;:::-;19952:3;19945:37;19880:108;;:::o;19994:179::-;20063:10;20084:46;20126:3;20118:6;20084:46;:::i;:::-;20162:4;20157:3;20153:14;20139:28;;19994:179;;;;:::o;20179:113::-;20249:4;20281;20276:3;20272:14;20264:22;;20179:113;;;:::o;20328:732::-;20447:3;20476:54;20524:5;20476:54;:::i;:::-;20546:86;20625:6;20620:3;20546:86;:::i;:::-;20539:93;;20656:56;20706:5;20656:56;:::i;:::-;20735:7;20766:1;20751:284;20776:6;20773:1;20770:13;20751:284;;;20852:6;20846:13;20879:63;20938:3;20923:13;20879:63;:::i;:::-;20872:70;;20965:60;21018:6;20965:60;:::i;:::-;20955:70;;20811:224;20798:1;20795;20791:9;20786:14;;20751:284;;;20755:14;21051:3;21044:10;;20452:608;;;20328:732;;;;:::o;21066:831::-;21329:4;21367:3;21356:9;21352:19;21344:27;;21381:71;21449:1;21438:9;21434:17;21425:6;21381:71;:::i;:::-;21462:80;21538:2;21527:9;21523:18;21514:6;21462:80;:::i;:::-;21589:9;21583:4;21579:20;21574:2;21563:9;21559:18;21552:48;21617:108;21720:4;21711:6;21617:108;:::i;:::-;21609:116;;21735:72;21803:2;21792:9;21788:18;21779:6;21735:72;:::i;:::-;21817:73;21885:3;21874:9;21870:19;21861:6;21817:73;:::i;:::-;21066:831;;;;;;;;:::o;21903:147::-;22004:11;22041:3;22026:18;;21903:147;;;;:::o;22056:114::-;;:::o;22176:398::-;22335:3;22356:83;22437:1;22432:3;22356:83;:::i;:::-;22349:90;;22448:93;22537:3;22448:93;:::i;:::-;22566:1;22561:3;22557:11;22550:18;;22176:398;;;:::o;22580:379::-;22764:3;22786:147;22929:3;22786:147;:::i;:::-;22779:154;;22950:3;22943:10;;22580:379;;;:::o;22965:177::-;23105:29;23101:1;23093:6;23089:14;23082:53;22965:177;:::o;23148:366::-;23290:3;23311:67;23375:2;23370:3;23311:67;:::i;:::-;23304:74;;23387:93;23476:3;23387:93;:::i;:::-;23505:2;23500:3;23496:12;23489:19;;23148:366;;;:::o;23520:419::-;23686:4;23724:2;23713:9;23709:18;23701:26;;23773:9;23767:4;23763:20;23759:1;23748:9;23744:17;23737:47;23801:131;23927:4;23801:131;:::i;:::-;23793:139;;23520:419;;;:::o;23945:220::-;24085:34;24081:1;24073:6;24069:14;24062:58;24154:3;24149:2;24141:6;24137:15;24130:28;23945:220;:::o;24171:366::-;24313:3;24334:67;24398:2;24393:3;24334:67;:::i;:::-;24327:74;;24410:93;24499:3;24410:93;:::i;:::-;24528:2;24523:3;24519:12;24512:19;;24171:366;;;:::o;24543:419::-;24709:4;24747:2;24736:9;24732:18;24724:26;;24796:9;24790:4;24786:20;24782:1;24771:9;24767:17;24760:47;24824:131;24950:4;24824:131;:::i;:::-;24816:139;;24543:419;;;:::o

Swarm Source

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