ETH Price: $2,928.56 (-3.32%)
Gas: 1 Gwei

Token

THUMB (THUMB)
 

Overview

Max Total Supply

100,000,000 THUMB

Holders

297

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
819,860.662323215 THUMB

Value
$0.00
0x8a627d1be1758ef69ac8dac7c28237b3e619eae2
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:
THUMB

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-06
*/

/*
Telegram: http://t.me/thumbcoin
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function WETH() external pure returns (address);
    function factory() external pure returns (address);

     function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );


    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: has insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

contract THUMB is IERC20, Ownable {
    using SafeMath for uint256;

    using Address for address payable;
    string private constant _name = "THUMB";
    string private constant _symbol = "THUMB";

    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100_000_000 * 10**_decimals;

    uint256 private  _maxWallet = 2_000_000 * 10**_decimals;

    uint256 private _maxBuyAmount = 2_000_000 * 10**_decimals;

    uint256 private _maxSellAmount = 2_000_000 * 10**_decimals;

    uint256 private _swapTH = 1_000_000 * 10**_decimals;

    address public Dev = 0x113450FF11633b6E15C275971F92E96e8d8BB2E9;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isWhiteList;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address private _owner;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    bool public _AutoSwap = true;
    bool public _Launch = false;
    bool public _transfersEnabled = false;
    bool private _TokenSwap = true;
    bool private _autoLP = true;
    bool private _isSelling = false;
    
    uint256 private _swapPercent = 100;

    uint256 private _devTaxRate = 0;
    uint256 private AmountBuyRate = _devTaxRate;

    uint256 private _devTaxSellRate = 0;
    uint256 private AmountSellRate = _devTaxSellRate;

    constructor() {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        _owner = msg.sender;

        uint256 tsupply = _totalSupply;

        _balances[msg.sender] = tsupply;


        _isExcludedFromFee[_owner] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Dev] = true;
        
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
    }

    function getOwner() public view returns (address) {
        return owner();
    }
    
    function name() public pure returns (string memory) {
        return _name;
    }
    
    function symbol() public pure returns (string memory) {
        return _symbol;
    }

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }


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

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isWhitelist(address account) public view returns (bool) {
        return _isWhiteList[account];
    }

    function ViewBuyRate() public view returns (
        uint256 devBuyRate,
        uint256 totalBuyRate,
        uint256 maxWallet,
        uint256 maxBuyAmount
    ) {
        devBuyRate = _devTaxRate;
        totalBuyRate = AmountBuyRate;
        maxWallet = _maxWallet;
        maxBuyAmount = _maxBuyAmount;
    }

    function ViewSellRate() public view returns (
        uint256 devSellRate,
        uint256 totalSellRate,
        uint256 maxSellAmount
    ) {
        devSellRate = _devTaxSellRate;
        totalSellRate = AmountSellRate;
        maxSellAmount = _maxSellAmount;
    }


    function transfer(address recipient, uint256 amount) public override returns (bool) {

        if(recipient != uniswapV2Pair && recipient != owner() && !_isExcludedFromFee[recipient]){

            require(_balances[recipient] + amount <= _maxWallet, "THUMB: recipient wallet balance exceeds the maximum limit");

        }

        _transfer(msg.sender, recipient, amount);
        
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "THUMB: approve from the zero address");
        require(spender != address(0), "THUMB: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {

        require(sender != address(0), "THUMB: transfer from the zero address");
        require(recipient != address(0), "THUMB: transfer to the zero address");
        require(amount > 0, "THUMB: transfer amount must be greater than zero");
        if(!_Launch){require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient] || _isWhiteList[sender] || _isWhiteList[recipient], "we not launch yet");}
        if(!_Launch && recipient != uniswapV2Pair && sender != uniswapV2Pair) {require(_transfersEnabled, "Transfers are currently disabled");}

        bool _AutoTaxes = true;


        if (recipient == uniswapV2Pair && sender == owner()) {

            _balances[sender] -= amount;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
            return;
        }

        //sell   
        if(recipient == uniswapV2Pair && !_isExcludedFromFee[sender] && sender != owner()){

                require(amount <= _maxSellAmount, "Sell amount exceeds max limit");

                _isSelling = true;
               
                if(_AutoSwap && balanceOf(address(this)) >= _swapTH){

                    CanSwap();
                }  
        }

        //buy
        if(sender == uniswapV2Pair && !_isExcludedFromFee[recipient] && recipient != owner()){
                    
            require(amount <= _maxBuyAmount, "Buy amount exceeds max limit");
            
        }

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { _AutoTaxes = false; }
        if (recipient != uniswapV2Pair && sender != uniswapV2Pair) { _AutoTaxes = false; }

        if (_AutoTaxes) {

                if(!_isSelling){

                    uint256 totalTaxAmount = amount * AmountBuyRate / 100;
                    uint256 transferAmount = amount - totalTaxAmount;
                    
                   
                    _balances[address(this)] = _balances[address(this)].add(totalTaxAmount);
                    _balances[sender] = _balances[sender].sub(amount);
                    _balances[recipient] = _balances[recipient].add(transferAmount);

                    emit Transfer(sender, recipient, transferAmount);
                    emit Transfer(sender, address(this), totalTaxAmount);

                }else{

                    uint256 totalTaxAmount = amount * AmountSellRate / 100;
                    uint256 transferAmount = amount - totalTaxAmount;
                    

                    _balances[address(this)] = _balances[address(this)].add(totalTaxAmount);
                    _balances[sender] = _balances[sender].sub(amount);
                    _balances[recipient] = _balances[recipient].add(transferAmount);

                    emit Transfer(sender, recipient, transferAmount);
                    emit Transfer(sender, address(this), totalTaxAmount);

                    _isSelling = false;
                }
            
        }else{

                _balances[sender] = _balances[sender].sub(amount);
                _balances[recipient] = _balances[recipient].add(amount);

                emit Transfer(sender, recipient, amount);

        }
    }


    function swapTokensForEth(uint256 tokenAmount) private {

        // Set up contract address and the token to swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // Approve the transfer of tokens to the contract address
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // Make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }


    function CanSwap() private {

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance > 0) {

            if(_TokenSwap){

                if(contractTokenBalance > 0){
                    
                    uint256 caBalance = balanceOf(address(this)) * _swapPercent / 100;

                    uint256 toSwap = caBalance;

                    swapTokensForEth(toSwap);

                    uint256 receivedBalance = address(this).balance;

                    if (receivedBalance > 0) {payable(Dev).transfer(receivedBalance);}

                }else{

                    revert("No THUMB tokens available to swap");
                }

            }

        }else{

           revert("No balance available to swap");     
           
        }
            
    }

   receive() external payable {}

    function setDevAddress(address newAddress) public onlyOwner {
        require(newAddress != address(0), "Invalid address");
        Dev = newAddress;
        _isExcludedFromFee[newAddress] = true;
    }


   function enableLaunch() external {
        _Launch = true;
        _transfersEnabled = true;
    }

    function setExcludedFromFee(address account, bool status) external onlyOwner {
        _isExcludedFromFee[account] = status;
    }

    function setWhitelist(address account, bool status) external onlyOwner {
        _isWhiteList[account] = status;
    }

    function SwapEnable(bool status) external onlyOwner {
        _AutoSwap = status;
    }

    function SetSwapPercentage(uint256 SwapPercent) external onlyOwner {
        _swapPercent = SwapPercent;
    }

    function setAutoSwap(uint256 newAutoSwap) external onlyOwner {
        require(newAutoSwap <= (totalSupply() * 1) / 100, "Invalid value: exceeds 1% of the total supply");
        _swapTH = newAutoSwap * 10**_decimals;
    }

    function updateLimits(uint256 maxWallet, uint256 maxBuyAmount, uint256 maxSellAmount) external onlyOwner {
        _maxWallet = maxWallet * 10**_decimals;
        _maxBuyAmount = maxBuyAmount * 10**_decimals;
        _maxSellAmount = maxSellAmount * 10**_decimals;
    }

    function setBuyTaxRates(uint256 devTaxRate) external onlyOwner {
        _devTaxRate = devTaxRate;
        AmountBuyRate = _devTaxRate;
    }


    function setSellTaxRates(uint256 devTaxRate) external onlyOwner {
        _devTaxSellRate = devTaxRate;
        AmountSellRate = _devTaxSellRate;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"SwapPercent","type":"uint256"}],"name":"SetSwapPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"SwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ViewBuyRate","outputs":[{"internalType":"uint256","name":"devBuyRate","type":"uint256"},{"internalType":"uint256","name":"totalBuyRate","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ViewSellRate","outputs":[{"internalType":"uint256","name":"devSellRate","type":"uint256"},{"internalType":"uint256","name":"totalSellRate","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_AutoSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Launch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transfersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAutoSwap","type":"uint256"}],"name":"setAutoSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setBuyTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setSellTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000880565b6305f5e100620000259190620009bd565b6001556009600a62000038919062000880565b621e8480620000489190620009bd565b6002556009600a6200005b919062000880565b621e84806200006b9190620009bd565b6003556009600a6200007e919062000880565b621e84806200008e9190620009bd565b6004556009600a620000a1919062000880565b620f4240620000b19190620009bd565b60055573113450ff11633b6e15c275971f92e96e8d8bb2e9600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001600e60036101000a81548160ff0219169083151502179055506001600e60046101000a81548160ff0219169083151502179055506000600e60056101000a81548160ff0219169083151502179055506064600f5560006010556010546011556000601255601254601355348015620001d357600080fd5b50620001f4620001e8620006aa60201b60201c565b620006b260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029557600080fd5b505afa158015620002aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d091906200078d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033357600080fd5b505afa15801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e91906200078d565b6040518363ffffffff1660e01b81526004016200038d929190620007db565b602060405180830381600087803b158015620003a857600080fd5b505af1158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e391906200078d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600154905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200069a919062000808565b60405180910390a3505062000abf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620007878162000aa5565b92915050565b600060208284031215620007a057600080fd5b6000620007b08482850162000776565b91505092915050565b620007c48162000a1e565b82525050565b620007d58162000a52565b82525050565b6000604082019050620007f26000830185620007b9565b620008016020830184620007b9565b9392505050565b60006020820190506200081f6000830184620007ca565b92915050565b6000808291508390505b600185111562000877578086048111156200084f576200084e62000a69565b5b60018516156200085f5780820291505b80810290506200086f8562000a98565b94506200082f565b94509492505050565b60006200088d8262000a52565b91506200089a8362000a5c565b9250620008c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008d1565b905092915050565b600082620008e35760019050620009b6565b81620008f35760009050620009b6565b81600181146200090c576002811462000917576200094d565b6001915050620009b6565b60ff8411156200092c576200092b62000a69565b5b8360020a91508482111562000946576200094562000a69565b5b50620009b6565b5060208310610133831016604e8410600b8410161715620009875782820a90508381111562000981576200098062000a69565b5b620009b6565b62000996848484600162000825565b92509050818404811115620009b057620009af62000a69565b5b81810290505b9392505050565b6000620009ca8262000a52565b9150620009d78362000a52565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a135762000a1262000a69565b5b828202905092915050565b600062000a2b8262000a32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b62000ab08162000a1e565b811462000abc57600080fd5b50565b6140538062000acf6000396000f3fe6080604052600436106101f25760003560e01c8063893d20e81161010d578063d0d41fe1116100a0578063f515a55c1161006f578063f515a55c1461070e578063f7de4dfd14610737578063fcd2e04914610762578063feae65e71461078b578063ff5211bb146107b9576101f9565b8063d0d41fe114610656578063d8a0663c1461067f578063dd62ed3e146106a8578063f2fde38b146106e5576101f9565b8063a14aee61116100dc578063a14aee6114610586578063a9059cbb146105af578063c683630d146105ec578063c6da305114610629576101f9565b8063893d20e8146104da5780638da5cb5b14610505578063925542871461053057806395d89b411461055b576101f9565b806336a0f8a5116101855780636612e66f116101545780636612e66f1461043257806370a082311461045b578063715018a61461049857806385438bc0146104af576101f9565b806336a0f8a51461037857806349bd5a5e146103a15780635342acb4146103cc57806353d6fd5914610409576101f9565b80631694505e116101c15780631694505e146102ba57806318160ddd146102e557806323b872dd14610310578063313ce5671461034d576101f9565b806301e51ae8146101fe57806306fdde0314610229578063095ea7b3146102545780630a80c0cc14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107d0565b6040516102209190613824565b60405180910390f35b34801561023557600080fd5b5061023e6107f6565b60405161024b9190613875565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190613073565b610833565b604051610288919061383f565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b391906130d8565b61084a565b005b3480156102c657600080fd5b506102cf6108d9565b6040516102dc919061385a565b60405180910390f35b3480156102f157600080fd5b506102fa6108ff565b6040516103079190613ab7565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190612fe8565b610909565b604051610344919061383f565b60405180910390f35b34801561035957600080fd5b506103626109b3565b60405161036f9190613ba8565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a9190613101565b6109bc565b005b3480156103ad57600080fd5b506103b6610a9a565b6040516103c39190613824565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee9190612f5a565b610ac0565b604051610400919061383f565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190613037565b610b16565b005b34801561043e57600080fd5b5061045960048036038101906104549190613037565b610bed565b005b34801561046757600080fd5b50610482600480360381019061047d9190612f5a565b610cc4565b60405161048f9190613ab7565b60405180910390f35b3480156104a457600080fd5b506104ad610d0d565b005b3480156104bb57600080fd5b506104c4610d95565b6040516104d1919061383f565b60405180910390f35b3480156104e657600080fd5b506104ef610da8565b6040516104fc9190613824565b60405180910390f35b34801561051157600080fd5b5061051a610db7565b6040516105279190613824565b60405180910390f35b34801561053c57600080fd5b50610545610de0565b604051610552919061383f565b60405180910390f35b34801561056757600080fd5b50610570610df3565b60405161057d9190613875565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906130af565b610e30565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190613073565b610ec9565b6040516105e3919061383f565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612f5a565b61105c565b604051610620919061383f565b60405180910390f35b34801561063557600080fd5b5061063e6110b2565b60405161064d93929190613b2c565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190612f5a565b6110cb565b005b34801561068b57600080fd5b506106a660048036038101906106a191906130d8565b611253565b005b3480156106b457600080fd5b506106cf60048036038101906106ca9190612fac565b611353565b6040516106dc9190613ab7565b60405180910390f35b3480156106f157600080fd5b5061070c60048036038101906107079190612f5a565b6113da565b005b34801561071a57600080fd5b50610735600480360381019061073091906130d8565b6114d2565b005b34801561074357600080fd5b5061074c611558565b604051610759919061383f565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906130d8565b61156b565b005b34801561079757600080fd5b506107a06115fa565b6040516107b09493929190613b63565b60405180910390f35b3480156107c557600080fd5b506107ce61161a565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f5448554d42000000000000000000000000000000000000000000000000000000815250905090565b6000610840338484611652565b6001905092915050565b61085261181d565b73ffffffffffffffffffffffffffffffffffffffff16610870610db7565b73ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd906139d7565b60405180910390fd5b8060128190555060125460138190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b600061099d843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109989190613e6a565b611652565b6109a8848484611825565b600190509392505050565b60006009905090565b6109c461181d565b73ffffffffffffffffffffffffffffffffffffffff166109e2610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2f906139d7565b60405180910390fd5b6009600a610a469190613cf2565b83610a519190613e10565b6002819055506009600a610a659190613cf2565b82610a709190613e10565b6003819055506009600a610a849190613cf2565b81610a8f9190613e10565b600481905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b1e61181d565b73ffffffffffffffffffffffffffffffffffffffff16610b3c610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b89906139d7565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610bf561181d565b73ffffffffffffffffffffffffffffffffffffffff16610c13610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906139d7565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1561181d565b73ffffffffffffffffffffffffffffffffffffffff16610d33610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d80906139d7565b60405180910390fd5b610d93600061290b565b565b600e60029054906101000a900460ff1681565b6000610db2610db7565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900460ff1681565b60606040518060400160405280600581526020017f5448554d42000000000000000000000000000000000000000000000000000000815250905090565b610e3861181d565b73ffffffffffffffffffffffffffffffffffffffff16610e56610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906139d7565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f5c5750610f2c610db7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fb25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110475760025482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110059190613c18565b1115611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90613a17565b60405180910390fd5b5b611052338484611825565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000601254925060135491506004549050909192565b6110d361181d565b73ffffffffffffffffffffffffffffffffffffffff166110f1610db7565b73ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906139d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae906138d7565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61125b61181d565b73ffffffffffffffffffffffffffffffffffffffff16611279610db7565b73ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906139d7565b60405180910390fd5b606460016112db6108ff565b6112e59190613e10565b6112ef9190613c6e565b811115611331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611328906139b7565b60405180910390fd5b6009600a61133f9190613cf2565b8161134a9190613e10565b60058190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e261181d565b73ffffffffffffffffffffffffffffffffffffffff16611400610db7565b73ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906139d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906138f7565b60405180910390fd5b6114cf8161290b565b50565b6114da61181d565b73ffffffffffffffffffffffffffffffffffffffff166114f8610db7565b73ffffffffffffffffffffffffffffffffffffffff161461154e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611545906139d7565b60405180910390fd5b80600f8190555050565b600e60019054906101000a900460ff1681565b61157361181d565b73ffffffffffffffffffffffffffffffffffffffff16611591610db7565b73ffffffffffffffffffffffffffffffffffffffff16146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de906139d7565b60405180910390fd5b8060108190555060105460118190555050565b600080600080601054935060115492506002549150600354905090919293565b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172990613a97565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118109190613ab7565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613957565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906138b7565b60405180910390fd5b60008111611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90613a57565b60405180910390fd5b600e60019054906101000a900460ff16611ae557600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119fd5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a515750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aa55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613a77565b60405180910390fd5b5b600e60019054906101000a900460ff16158015611b505750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611baa5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bff57600e60029054906101000a900460ff16611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590613a37565b60405180910390fd5b5b600060019050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c945750611c65610db7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611db05781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce89190613e6a565b9250508190555081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3e9190613c18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611da29190613ab7565b60405180910390a350612906565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e575750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e965750611e66610db7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3057600454821115611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790613997565b60405180910390fd5b6001600e60056101000a81548160ff021916908315150217905550600e60009054906101000a900460ff168015611f215750600554611f1e30610cc4565b10155b15611f2f57611f2e6129cf565b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fd75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120165750611fe6610db7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561206157600354821115612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790613897565b60405180910390fd5b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121025750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561210c57600090505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121b85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121c257600090505b801561277457600e60059054906101000a900460ff1661249a5760006064601154846121ee9190613e10565b6121f89190613c6e565b9050600081846122089190613e6a565b905061225c82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122f184600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9490919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061238681600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124269190613ab7565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161248b9190613ab7565b60405180910390a3505061276f565b60006064601354846124ac9190613e10565b6124b69190613c6e565b9050600081846124c69190613e6a565b905061251a82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125af84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9490919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264481600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e49190613ab7565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127499190613ab7565b60405180910390a36000600e60056101000a81548160ff02191690831515021790555050505b612904565b6127c682600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9490919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128fb9190613ab7565b60405180910390a35b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006129da30610cc4565b90506000811115612af857600e60039054906101000a900460ff1615612af3576000811115612ab75760006064600f54612a1330610cc4565b612a1d9190613e10565b612a279190613c6e565b90506000819050612a3781612bde565b60004790506000811115612aaf57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612aad573d6000803e3d6000fd5b505b505050612af2565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae990613977565b60405180910390fd5b5b612b33565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a906139f7565b60405180910390fd5b50565b6000808284612b459190613c18565b905083811015612b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8190613917565b60405180910390fd5b8091505092915050565b6000612bd683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ea2565b905092915050565b6000600267ffffffffffffffff811115612c21577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c4f5781602001602082028036833780820191505090505b5090503081600081518110612c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d2f57600080fd5b505afa158015612d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d679190612f83565b81600181518110612da1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e0830600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611652565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e6c959493929190613ad2565b600060405180830381600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050505050565b6000838311158290612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee19190613875565b60405180910390fd5b5060008385612ef99190613e6a565b9050809150509392505050565b600081359050612f1581613fd8565b92915050565b600081519050612f2a81613fd8565b92915050565b600081359050612f3f81613fef565b92915050565b600081359050612f5481614006565b92915050565b600060208284031215612f6c57600080fd5b6000612f7a84828501612f06565b91505092915050565b600060208284031215612f9557600080fd5b6000612fa384828501612f1b565b91505092915050565b60008060408385031215612fbf57600080fd5b6000612fcd85828601612f06565b9250506020612fde85828601612f06565b9150509250929050565b600080600060608486031215612ffd57600080fd5b600061300b86828701612f06565b935050602061301c86828701612f06565b925050604061302d86828701612f45565b9150509250925092565b6000806040838503121561304a57600080fd5b600061305885828601612f06565b925050602061306985828601612f30565b9150509250929050565b6000806040838503121561308657600080fd5b600061309485828601612f06565b92505060206130a585828601612f45565b9150509250929050565b6000602082840312156130c157600080fd5b60006130cf84828501612f30565b91505092915050565b6000602082840312156130ea57600080fd5b60006130f884828501612f45565b91505092915050565b60008060006060848603121561311657600080fd5b600061312486828701612f45565b935050602061313586828701612f45565b925050604061314686828701612f45565b9150509250925092565b600061315c8383613168565b60208301905092915050565b61317181613e9e565b82525050565b61318081613e9e565b82525050565b600061319182613bd3565b61319b8185613bf6565b93506131a683613bc3565b8060005b838110156131d75781516131be8882613150565b97506131c983613be9565b9250506001810190506131aa565b5085935050505092915050565b6131ed81613eb0565b82525050565b6131fc81613ef3565b82525050565b61320b81613f17565b82525050565b600061321c82613bde565b6132268185613c07565b9350613236818560208601613f29565b61323f81613fba565b840191505092915050565b6000613257601c83613c07565b91507f42757920616d6f756e742065786365656473206d6178206c696d6974000000006000830152602082019050919050565b6000613297602383613c07565b91507f5448554d423a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132fd600f83613c07565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b600061333d602683613c07565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133a3601b83613c07565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006133e3602483613c07565b91507f5448554d423a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613449602583613c07565b91507f5448554d423a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134af602183613c07565b91507f4e6f205448554d4220746f6b656e7320617661696c61626c6520746f2073776160008301527f70000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613515601d83613c07565b91507f53656c6c20616d6f756e742065786365656473206d6178206c696d69740000006000830152602082019050919050565b6000613555602d83613c07565b91507f496e76616c69642076616c75653a2065786365656473203125206f662074686560008301527f20746f74616c20737570706c79000000000000000000000000000000000000006020830152604082019050919050565b60006135bb602483613c07565b91507f4f776e61626c653a207468652063616c6c6572206973206e6f7420746865206f60008301527f776e6572000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613621601c83613c07565b91507f4e6f2062616c616e636520617661696c61626c6520746f2073776170000000006000830152602082019050919050565b6000613661603983613c07565b91507f5448554d423a20726563697069656e742077616c6c65742062616c616e63652060008301527f6578636565647320746865206d6178696d756d206c696d6974000000000000006020830152604082019050919050565b60006136c7602083613c07565b91507f5472616e7366657273206172652063757272656e746c792064697361626c65646000830152602082019050919050565b6000613707603083613c07565b91507f5448554d423a207472616e7366657220616d6f756e74206d757374206265206760008301527f726561746572207468616e207a65726f000000000000000000000000000000006020830152604082019050919050565b600061376d601183613c07565b91507f7765206e6f74206c61756e6368207965740000000000000000000000000000006000830152602082019050919050565b60006137ad602283613c07565b91507f5448554d423a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61380f81613edc565b82525050565b61381e81613ee6565b82525050565b60006020820190506138396000830184613177565b92915050565b600060208201905061385460008301846131e4565b92915050565b600060208201905061386f60008301846131f3565b92915050565b6000602082019050818103600083015261388f8184613211565b905092915050565b600060208201905081810360008301526138b08161324a565b9050919050565b600060208201905081810360008301526138d08161328a565b9050919050565b600060208201905081810360008301526138f0816132f0565b9050919050565b6000602082019050818103600083015261391081613330565b9050919050565b6000602082019050818103600083015261393081613396565b9050919050565b60006020820190508181036000830152613950816133d6565b9050919050565b600060208201905081810360008301526139708161343c565b9050919050565b60006020820190508181036000830152613990816134a2565b9050919050565b600060208201905081810360008301526139b081613508565b9050919050565b600060208201905081810360008301526139d081613548565b9050919050565b600060208201905081810360008301526139f0816135ae565b9050919050565b60006020820190508181036000830152613a1081613614565b9050919050565b60006020820190508181036000830152613a3081613654565b9050919050565b60006020820190508181036000830152613a50816136ba565b9050919050565b60006020820190508181036000830152613a70816136fa565b9050919050565b60006020820190508181036000830152613a9081613760565b9050919050565b60006020820190508181036000830152613ab0816137a0565b9050919050565b6000602082019050613acc6000830184613806565b92915050565b600060a082019050613ae76000830188613806565b613af46020830187613202565b8181036040830152613b068186613186565b9050613b156060830185613177565b613b226080830184613806565b9695505050505050565b6000606082019050613b416000830186613806565b613b4e6020830185613806565b613b5b6040830184613806565b949350505050565b6000608082019050613b786000830187613806565b613b856020830186613806565b613b926040830185613806565b613b9f6060830184613806565b95945050505050565b6000602082019050613bbd6000830184613815565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c2382613edc565b9150613c2e83613edc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c6357613c62613f5c565b5b828201905092915050565b6000613c7982613edc565b9150613c8483613edc565b925082613c9457613c93613f8b565b5b828204905092915050565b6000808291508390505b6001851115613ce957808604811115613cc557613cc4613f5c565b5b6001851615613cd45780820291505b8081029050613ce285613fcb565b9450613ca9565b94509492505050565b6000613cfd82613edc565b9150613d0883613ee6565b9250613d357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d3d565b905092915050565b600082613d4d5760019050613e09565b81613d5b5760009050613e09565b8160018114613d715760028114613d7b57613daa565b6001915050613e09565b60ff841115613d8d57613d8c613f5c565b5b8360020a915084821115613da457613da3613f5c565b5b50613e09565b5060208310610133831016604e8410600b8410161715613ddf5782820a905083811115613dda57613dd9613f5c565b5b613e09565b613dec8484846001613c9f565b92509050818404811115613e0357613e02613f5c565b5b81810290505b9392505050565b6000613e1b82613edc565b9150613e2683613edc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e5f57613e5e613f5c565b5b828202905092915050565b6000613e7582613edc565b9150613e8083613edc565b925082821015613e9357613e92613f5c565b5b828203905092915050565b6000613ea982613ebc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613efe82613f05565b9050919050565b6000613f1082613ebc565b9050919050565b6000613f2282613edc565b9050919050565b60005b83811015613f47578082015181840152602081019050613f2c565b83811115613f56576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b613fe181613e9e565b8114613fec57600080fd5b50565b613ff881613eb0565b811461400357600080fd5b50565b61400f81613edc565b811461401a57600080fd5b5056fea264697066735822122095e57e9f022df84c640b280b0a3a7827093b580619c48f149fe1e4ea5a8ed03864736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063893d20e81161010d578063d0d41fe1116100a0578063f515a55c1161006f578063f515a55c1461070e578063f7de4dfd14610737578063fcd2e04914610762578063feae65e71461078b578063ff5211bb146107b9576101f9565b8063d0d41fe114610656578063d8a0663c1461067f578063dd62ed3e146106a8578063f2fde38b146106e5576101f9565b8063a14aee61116100dc578063a14aee6114610586578063a9059cbb146105af578063c683630d146105ec578063c6da305114610629576101f9565b8063893d20e8146104da5780638da5cb5b14610505578063925542871461053057806395d89b411461055b576101f9565b806336a0f8a5116101855780636612e66f116101545780636612e66f1461043257806370a082311461045b578063715018a61461049857806385438bc0146104af576101f9565b806336a0f8a51461037857806349bd5a5e146103a15780635342acb4146103cc57806353d6fd5914610409576101f9565b80631694505e116101c15780631694505e146102ba57806318160ddd146102e557806323b872dd14610310578063313ce5671461034d576101f9565b806301e51ae8146101fe57806306fdde0314610229578063095ea7b3146102545780630a80c0cc14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107d0565b6040516102209190613824565b60405180910390f35b34801561023557600080fd5b5061023e6107f6565b60405161024b9190613875565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190613073565b610833565b604051610288919061383f565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b391906130d8565b61084a565b005b3480156102c657600080fd5b506102cf6108d9565b6040516102dc919061385a565b60405180910390f35b3480156102f157600080fd5b506102fa6108ff565b6040516103079190613ab7565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190612fe8565b610909565b604051610344919061383f565b60405180910390f35b34801561035957600080fd5b506103626109b3565b60405161036f9190613ba8565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a9190613101565b6109bc565b005b3480156103ad57600080fd5b506103b6610a9a565b6040516103c39190613824565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee9190612f5a565b610ac0565b604051610400919061383f565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190613037565b610b16565b005b34801561043e57600080fd5b5061045960048036038101906104549190613037565b610bed565b005b34801561046757600080fd5b50610482600480360381019061047d9190612f5a565b610cc4565b60405161048f9190613ab7565b60405180910390f35b3480156104a457600080fd5b506104ad610d0d565b005b3480156104bb57600080fd5b506104c4610d95565b6040516104d1919061383f565b60405180910390f35b3480156104e657600080fd5b506104ef610da8565b6040516104fc9190613824565b60405180910390f35b34801561051157600080fd5b5061051a610db7565b6040516105279190613824565b60405180910390f35b34801561053c57600080fd5b50610545610de0565b604051610552919061383f565b60405180910390f35b34801561056757600080fd5b50610570610df3565b60405161057d9190613875565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906130af565b610e30565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190613073565b610ec9565b6040516105e3919061383f565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612f5a565b61105c565b604051610620919061383f565b60405180910390f35b34801561063557600080fd5b5061063e6110b2565b60405161064d93929190613b2c565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190612f5a565b6110cb565b005b34801561068b57600080fd5b506106a660048036038101906106a191906130d8565b611253565b005b3480156106b457600080fd5b506106cf60048036038101906106ca9190612fac565b611353565b6040516106dc9190613ab7565b60405180910390f35b3480156106f157600080fd5b5061070c60048036038101906107079190612f5a565b6113da565b005b34801561071a57600080fd5b50610735600480360381019061073091906130d8565b6114d2565b005b34801561074357600080fd5b5061074c611558565b604051610759919061383f565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906130d8565b61156b565b005b34801561079757600080fd5b506107a06115fa565b6040516107b09493929190613b63565b60405180910390f35b3480156107c557600080fd5b506107ce61161a565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f5448554d42000000000000000000000000000000000000000000000000000000815250905090565b6000610840338484611652565b6001905092915050565b61085261181d565b73ffffffffffffffffffffffffffffffffffffffff16610870610db7565b73ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd906139d7565b60405180910390fd5b8060128190555060125460138190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b600061099d843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109989190613e6a565b611652565b6109a8848484611825565b600190509392505050565b60006009905090565b6109c461181d565b73ffffffffffffffffffffffffffffffffffffffff166109e2610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2f906139d7565b60405180910390fd5b6009600a610a469190613cf2565b83610a519190613e10565b6002819055506009600a610a659190613cf2565b82610a709190613e10565b6003819055506009600a610a849190613cf2565b81610a8f9190613e10565b600481905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b1e61181d565b73ffffffffffffffffffffffffffffffffffffffff16610b3c610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b89906139d7565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610bf561181d565b73ffffffffffffffffffffffffffffffffffffffff16610c13610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906139d7565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1561181d565b73ffffffffffffffffffffffffffffffffffffffff16610d33610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d80906139d7565b60405180910390fd5b610d93600061290b565b565b600e60029054906101000a900460ff1681565b6000610db2610db7565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900460ff1681565b60606040518060400160405280600581526020017f5448554d42000000000000000000000000000000000000000000000000000000815250905090565b610e3861181d565b73ffffffffffffffffffffffffffffffffffffffff16610e56610db7565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906139d7565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f5c5750610f2c610db7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fb25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110475760025482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110059190613c18565b1115611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90613a17565b60405180910390fd5b5b611052338484611825565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000601254925060135491506004549050909192565b6110d361181d565b73ffffffffffffffffffffffffffffffffffffffff166110f1610db7565b73ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906139d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae906138d7565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61125b61181d565b73ffffffffffffffffffffffffffffffffffffffff16611279610db7565b73ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906139d7565b60405180910390fd5b606460016112db6108ff565b6112e59190613e10565b6112ef9190613c6e565b811115611331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611328906139b7565b60405180910390fd5b6009600a61133f9190613cf2565b8161134a9190613e10565b60058190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e261181d565b73ffffffffffffffffffffffffffffffffffffffff16611400610db7565b73ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906139d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906138f7565b60405180910390fd5b6114cf8161290b565b50565b6114da61181d565b73ffffffffffffffffffffffffffffffffffffffff166114f8610db7565b73ffffffffffffffffffffffffffffffffffffffff161461154e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611545906139d7565b60405180910390fd5b80600f8190555050565b600e60019054906101000a900460ff1681565b61157361181d565b73ffffffffffffffffffffffffffffffffffffffff16611591610db7565b73ffffffffffffffffffffffffffffffffffffffff16146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de906139d7565b60405180910390fd5b8060108190555060105460118190555050565b600080600080601054935060115492506002549150600354905090919293565b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172990613a97565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118109190613ab7565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613957565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906138b7565b60405180910390fd5b60008111611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90613a57565b60405180910390fd5b600e60019054906101000a900460ff16611ae557600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119fd5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a515750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aa55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613a77565b60405180910390fd5b5b600e60019054906101000a900460ff16158015611b505750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611baa5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bff57600e60029054906101000a900460ff16611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590613a37565b60405180910390fd5b5b600060019050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c945750611c65610db7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611db05781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce89190613e6a565b9250508190555081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3e9190613c18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611da29190613ab7565b60405180910390a350612906565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e575750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e965750611e66610db7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3057600454821115611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790613997565b60405180910390fd5b6001600e60056101000a81548160ff021916908315150217905550600e60009054906101000a900460ff168015611f215750600554611f1e30610cc4565b10155b15611f2f57611f2e6129cf565b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fd75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120165750611fe6610db7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561206157600354821115612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790613897565b60405180910390fd5b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121025750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561210c57600090505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121b85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121c257600090505b801561277457600e60059054906101000a900460ff1661249a5760006064601154846121ee9190613e10565b6121f89190613c6e565b9050600081846122089190613e6a565b905061225c82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122f184600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9490919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061238681600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124269190613ab7565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161248b9190613ab7565b60405180910390a3505061276f565b60006064601354846124ac9190613e10565b6124b69190613c6e565b9050600081846124c69190613e6a565b905061251a82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125af84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9490919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264481600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e49190613ab7565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127499190613ab7565b60405180910390a36000600e60056101000a81548160ff02191690831515021790555050505b612904565b6127c682600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9490919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128fb9190613ab7565b60405180910390a35b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006129da30610cc4565b90506000811115612af857600e60039054906101000a900460ff1615612af3576000811115612ab75760006064600f54612a1330610cc4565b612a1d9190613e10565b612a279190613c6e565b90506000819050612a3781612bde565b60004790506000811115612aaf57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612aad573d6000803e3d6000fd5b505b505050612af2565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae990613977565b60405180910390fd5b5b612b33565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a906139f7565b60405180910390fd5b50565b6000808284612b459190613c18565b905083811015612b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8190613917565b60405180910390fd5b8091505092915050565b6000612bd683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ea2565b905092915050565b6000600267ffffffffffffffff811115612c21577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c4f5781602001602082028036833780820191505090505b5090503081600081518110612c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d2f57600080fd5b505afa158015612d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d679190612f83565b81600181518110612da1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e0830600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611652565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e6c959493929190613ad2565b600060405180830381600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050505050565b6000838311158290612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee19190613875565b60405180910390fd5b5060008385612ef99190613e6a565b9050809150509392505050565b600081359050612f1581613fd8565b92915050565b600081519050612f2a81613fd8565b92915050565b600081359050612f3f81613fef565b92915050565b600081359050612f5481614006565b92915050565b600060208284031215612f6c57600080fd5b6000612f7a84828501612f06565b91505092915050565b600060208284031215612f9557600080fd5b6000612fa384828501612f1b565b91505092915050565b60008060408385031215612fbf57600080fd5b6000612fcd85828601612f06565b9250506020612fde85828601612f06565b9150509250929050565b600080600060608486031215612ffd57600080fd5b600061300b86828701612f06565b935050602061301c86828701612f06565b925050604061302d86828701612f45565b9150509250925092565b6000806040838503121561304a57600080fd5b600061305885828601612f06565b925050602061306985828601612f30565b9150509250929050565b6000806040838503121561308657600080fd5b600061309485828601612f06565b92505060206130a585828601612f45565b9150509250929050565b6000602082840312156130c157600080fd5b60006130cf84828501612f30565b91505092915050565b6000602082840312156130ea57600080fd5b60006130f884828501612f45565b91505092915050565b60008060006060848603121561311657600080fd5b600061312486828701612f45565b935050602061313586828701612f45565b925050604061314686828701612f45565b9150509250925092565b600061315c8383613168565b60208301905092915050565b61317181613e9e565b82525050565b61318081613e9e565b82525050565b600061319182613bd3565b61319b8185613bf6565b93506131a683613bc3565b8060005b838110156131d75781516131be8882613150565b97506131c983613be9565b9250506001810190506131aa565b5085935050505092915050565b6131ed81613eb0565b82525050565b6131fc81613ef3565b82525050565b61320b81613f17565b82525050565b600061321c82613bde565b6132268185613c07565b9350613236818560208601613f29565b61323f81613fba565b840191505092915050565b6000613257601c83613c07565b91507f42757920616d6f756e742065786365656473206d6178206c696d6974000000006000830152602082019050919050565b6000613297602383613c07565b91507f5448554d423a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132fd600f83613c07565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b600061333d602683613c07565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133a3601b83613c07565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006133e3602483613c07565b91507f5448554d423a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613449602583613c07565b91507f5448554d423a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134af602183613c07565b91507f4e6f205448554d4220746f6b656e7320617661696c61626c6520746f2073776160008301527f70000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613515601d83613c07565b91507f53656c6c20616d6f756e742065786365656473206d6178206c696d69740000006000830152602082019050919050565b6000613555602d83613c07565b91507f496e76616c69642076616c75653a2065786365656473203125206f662074686560008301527f20746f74616c20737570706c79000000000000000000000000000000000000006020830152604082019050919050565b60006135bb602483613c07565b91507f4f776e61626c653a207468652063616c6c6572206973206e6f7420746865206f60008301527f776e6572000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613621601c83613c07565b91507f4e6f2062616c616e636520617661696c61626c6520746f2073776170000000006000830152602082019050919050565b6000613661603983613c07565b91507f5448554d423a20726563697069656e742077616c6c65742062616c616e63652060008301527f6578636565647320746865206d6178696d756d206c696d6974000000000000006020830152604082019050919050565b60006136c7602083613c07565b91507f5472616e7366657273206172652063757272656e746c792064697361626c65646000830152602082019050919050565b6000613707603083613c07565b91507f5448554d423a207472616e7366657220616d6f756e74206d757374206265206760008301527f726561746572207468616e207a65726f000000000000000000000000000000006020830152604082019050919050565b600061376d601183613c07565b91507f7765206e6f74206c61756e6368207965740000000000000000000000000000006000830152602082019050919050565b60006137ad602283613c07565b91507f5448554d423a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61380f81613edc565b82525050565b61381e81613ee6565b82525050565b60006020820190506138396000830184613177565b92915050565b600060208201905061385460008301846131e4565b92915050565b600060208201905061386f60008301846131f3565b92915050565b6000602082019050818103600083015261388f8184613211565b905092915050565b600060208201905081810360008301526138b08161324a565b9050919050565b600060208201905081810360008301526138d08161328a565b9050919050565b600060208201905081810360008301526138f0816132f0565b9050919050565b6000602082019050818103600083015261391081613330565b9050919050565b6000602082019050818103600083015261393081613396565b9050919050565b60006020820190508181036000830152613950816133d6565b9050919050565b600060208201905081810360008301526139708161343c565b9050919050565b60006020820190508181036000830152613990816134a2565b9050919050565b600060208201905081810360008301526139b081613508565b9050919050565b600060208201905081810360008301526139d081613548565b9050919050565b600060208201905081810360008301526139f0816135ae565b9050919050565b60006020820190508181036000830152613a1081613614565b9050919050565b60006020820190508181036000830152613a3081613654565b9050919050565b60006020820190508181036000830152613a50816136ba565b9050919050565b60006020820190508181036000830152613a70816136fa565b9050919050565b60006020820190508181036000830152613a9081613760565b9050919050565b60006020820190508181036000830152613ab0816137a0565b9050919050565b6000602082019050613acc6000830184613806565b92915050565b600060a082019050613ae76000830188613806565b613af46020830187613202565b8181036040830152613b068186613186565b9050613b156060830185613177565b613b226080830184613806565b9695505050505050565b6000606082019050613b416000830186613806565b613b4e6020830185613806565b613b5b6040830184613806565b949350505050565b6000608082019050613b786000830187613806565b613b856020830186613806565b613b926040830185613806565b613b9f6060830184613806565b95945050505050565b6000602082019050613bbd6000830184613815565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c2382613edc565b9150613c2e83613edc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c6357613c62613f5c565b5b828201905092915050565b6000613c7982613edc565b9150613c8483613edc565b925082613c9457613c93613f8b565b5b828204905092915050565b6000808291508390505b6001851115613ce957808604811115613cc557613cc4613f5c565b5b6001851615613cd45780820291505b8081029050613ce285613fcb565b9450613ca9565b94509492505050565b6000613cfd82613edc565b9150613d0883613ee6565b9250613d357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d3d565b905092915050565b600082613d4d5760019050613e09565b81613d5b5760009050613e09565b8160018114613d715760028114613d7b57613daa565b6001915050613e09565b60ff841115613d8d57613d8c613f5c565b5b8360020a915084821115613da457613da3613f5c565b5b50613e09565b5060208310610133831016604e8410600b8410161715613ddf5782820a905083811115613dda57613dd9613f5c565b5b613e09565b613dec8484846001613c9f565b92509050818404811115613e0357613e02613f5c565b5b81810290505b9392505050565b6000613e1b82613edc565b9150613e2683613edc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e5f57613e5e613f5c565b5b828202905092915050565b6000613e7582613edc565b9150613e8083613edc565b925082821015613e9357613e92613f5c565b5b828203905092915050565b6000613ea982613ebc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613efe82613f05565b9050919050565b6000613f1082613ebc565b9050919050565b6000613f2282613edc565b9050919050565b60005b83811015613f47578082015181840152602081019050613f2c565b83811115613f56576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b613fe181613e9e565b8114613fec57600080fd5b50565b613ff881613eb0565b811461400357600080fd5b50565b61400f81613edc565b811461401a57600080fd5b5056fea264697066735822122095e57e9f022df84c640b280b0a3a7827093b580619c48f149fe1e4ea5a8ed03864736f6c63430008000033

Deployed Bytecode Sourcemap

4535:11483:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6755:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8723:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15859:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5296:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7036:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8890:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6945:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15423:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5344:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7273:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14844:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14704:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7146:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2719:94;;;;;;;;;;;;;:::i;:::-;;5608:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6660:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2492:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5539:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6850:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14972:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8143:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7857:276;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14380:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15189:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8572:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2821:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15069:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5574:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15705:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7525:324;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14595:101;;;;;;;;;;;;;:::i;:::-;;5114:63;;;;;;;;;;;;;:::o;6755:83::-;6792:13;6825:5;;;;;;;;;;;;;;;;;6818:12;;6755:83;:::o;8723:159::-;8798:4;8815:37;8824:10;8836:7;8845:6;8815:8;:37::i;:::-;8870:4;8863:11;;8723:159;;;;:::o;15859:154::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15952:10:::1;15934:15;:28;;;;15990:15;;15973:14;:32;;;;15859:154:::0;:::o;5296:41::-;;;;;;;;;;;;;:::o;7036:100::-;7089:7;7116:12;;7109:19;;7036:100;:::o;8890:262::-;8988:4;9005:70;9014:6;9022:10;9068:6;9034:11;:19;9046:6;9034:19;;;;;;;;;;;;;;;:31;9054:10;9034:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;9005:8;:70::i;:::-;9086:36;9096:6;9104:9;9115:6;9086:9;:36::i;:::-;9140:4;9133:11;;8890:262;;;;;:::o;6945:83::-;6986:5;4782:1;7004:16;;6945:83;:::o;15423:274::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4782:1:::1;15564:2;:13;;;;:::i;:::-;15552:9;:25;;;;:::i;:::-;15539:10;:38;;;;4782:1;15619:2;:13;;;;:::i;:::-;15604:12;:28;;;;:::i;:::-;15588:13;:44;;;;4782:1;15676:2;:13;;;;:::i;:::-;15660;:29;;;;:::i;:::-;15643:14;:46;;;;15423:274:::0;;;:::o;5344:28::-;;;;;;;;;;;;;:::o;7273:124::-;7338:4;7362:18;:27;7381:7;7362:27;;;;;;;;;;;;;;;;;;;;;;;;;7355:34;;7273:124;;;:::o;14844:120::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14950:6:::1;14926:12;:21;14939:7;14926:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14844:120:::0;;:::o;14704:132::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14822:6:::1;14792:18;:27;14811:7;14792:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;14704:132:::0;;:::o;7146:119::-;7212:7;7239:9;:18;7249:7;7239:18;;;;;;;;;;;;;;;;7232:25;;7146:119;;;:::o;2719:94::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;2784:21:::1;2802:1;2784:9;:21::i;:::-;2719:94::o:0;5608:37::-;;;;;;;;;;;;;:::o;6660:83::-;6701:7;6728;:5;:7::i;:::-;6721:14;;6660:83;:::o;2492:87::-;2538:7;2565:6;;;;;;;;;;;2558:13;;2492:87;:::o;5539:28::-;;;;;;;;;;;;;:::o;6850:87::-;6889:13;6922:7;;;;;;;;;;;;;;;;;6915:14;;6850:87;:::o;14972:89::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15047:6:::1;15035:9;;:18;;;;;;;;;;;;;;;;;;14972:89:::0;:::o;8143:421::-;8221:4;8256:13;;;;;;;;;;;8243:26;;:9;:26;;;;:50;;;;;8286:7;:5;:7::i;:::-;8273:20;;:9;:20;;;;8243:50;:84;;;;;8298:18;:29;8317:9;8298:29;;;;;;;;;;;;;;;;;;;;;;;;;8297:30;8243:84;8240:232;;;8386:10;;8376:6;8353:9;:20;8363:9;8353:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:43;;8345:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;8240:232;8484:40;8494:10;8506:9;8517:6;8484:9;:40::i;:::-;8552:4;8545:11;;8143:421;;;;:::o;7405:112::-;7464:4;7488:12;:21;7501:7;7488:21;;;;;;;;;;;;;;;;;;;;;;;;;7481:28;;7405:112;;;:::o;7857:276::-;7912:19;7942:21;7974;8028:15;;8014:29;;8070:14;;8054:30;;8111:14;;8095:30;;7857:276;;;:::o;14380:206::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14481:1:::1;14459:24;;:10;:24;;;;14451:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14520:10;14514:3;;:16;;;;;;;;;;;;;;;;;;14574:4;14541:18;:30;14560:10;14541:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14380:206:::0;:::o;15189:226::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15306:3:::1;15301:1;15285:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15284:25;;;;:::i;:::-;15269:11;:40;;15261:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;4782:1;15394:2;:13;;;;:::i;:::-;15380:11;:27;;;;:::i;:::-;15370:7;:37;;;;15189:226:::0;:::o;8572:143::-;8653:7;8680:11;:18;8692:5;8680:18;;;;;;;;;;;;;;;:27;8699:7;8680:27;;;;;;;;;;;;;;;;8673:34;;8572:143;;;;:::o;2821:192::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;2930:1:::1;2910:22;;:8;:22;;;;2902:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2986:19;2996:8;2986:9;:19::i;:::-;2821:192:::0;:::o;15069:112::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15162:11:::1;15147:12;:26;;;;15069:112:::0;:::o;5574:27::-;;;;;;;;;;;;;:::o;15705:144::-;2638:12;:10;:12::i;:::-;2627:23;;:7;:5;:7::i;:::-;:23;;;2619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15793:10:::1;15779:11;:24;;;;15830:11;;15814:13;:27;;;;15705:144:::0;:::o;7525:324::-;7579:18;7608:20;7639:17;7667:20;7719:11;;7706:24;;7756:13;;7741:28;;7792:10;;7780:22;;7828:13;;7813:28;;7525:324;;;;:::o;14595:101::-;14649:4;14639:7;;:14;;;;;;;;;;;;;;;;;;14684:4;14664:17;;:24;;;;;;;;;;;;;;;;;;14595:101::o;9160:337::-;9270:1;9253:19;;:5;:19;;;;9245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9351:1;9332:21;;:7;:21;;;;9324:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9435:6;9405:11;:18;9417:5;9405:18;;;;;;;;;;;;;;;:27;9424:7;9405:27;;;;;;;;;;;;;;;:36;;;;9473:7;9457:32;;9466:5;9457:32;;;9482:6;9457:32;;;;;;:::i;:::-;;;;;;;;9160:337;;;:::o;815:98::-;868:7;895:10;888:17;;815:98;:::o;9505:3313::-;9622:1;9604:20;;:6;:20;;;;9596:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9706:1;9685:23;;:9;:23;;;;9677:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9776:1;9767:6;:10;9759:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9845:7;;;;;;;;;;;9841:155;;9862:18;:26;9881:6;9862:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;9892:18;:29;9911:9;9892:29;;;;;;;;;;;;;;;;;;;;;;;;;9862:59;:83;;;;9925:12;:20;9938:6;9925:20;;;;;;;;;;;;;;;;;;;;;;;;;9862:83;:110;;;;9949:12;:23;9962:9;9949:23;;;;;;;;;;;;;;;;;;;;;;;;;9862:110;9854:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9841:155;10010:7;;;;;;;;;;;10009:8;:38;;;;;10034:13;;;;;;;;;;;10021:26;;:9;:26;;;;10009:38;:65;;;;;10061:13;;;;;;;;;;;10051:23;;:6;:23;;;;10009:65;10006:135;;;10085:17;;;;;;;;;;;10077:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10006:135;10153:15;10171:4;10153:22;;10207:13;;;;;;;;;;;10194:26;;:9;:26;;;:47;;;;;10234:7;:5;:7::i;:::-;10224:17;;:6;:17;;;10194:47;10190:230;;;10281:6;10260:9;:17;10270:6;10260:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;10326:6;10302:9;:20;10312:9;10302:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10369:9;10352:35;;10361:6;10352:35;;;10380:6;10352:35;;;;;;:::i;:::-;;;;;;;;10402:7;;;10190:230;10467:13;;;;;;;;;;;10454:26;;:9;:26;;;:57;;;;;10485:18;:26;10504:6;10485:26;;;;;;;;;;;;;;;;;;;;;;;;;10484:27;10454:57;:78;;;;;10525:7;:5;:7::i;:::-;10515:17;;:6;:17;;;;10454:78;10451:362;;;10572:14;;10562:6;:24;;10554:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10654:4;10641:10;;:17;;;;;;;;;;;;;;;;;;10697:9;;;;;;;;;;;:48;;;;;10738:7;;10710:24;10728:4;10710:9;:24::i;:::-;:35;;10697:48;10694:106;;;10771:9;:7;:9::i;:::-;10694:106;10451:362;10853:13;;;;;;;;;;;10843:23;;:6;:23;;;:57;;;;;10871:18;:29;10890:9;10871:29;;;;;;;;;;;;;;;;;;;;;;;;;10870:30;10843:57;:81;;;;;10917:7;:5;:7::i;:::-;10904:20;;:9;:20;;;;10843:81;10840:212;;;10980:13;;10970:6;:23;;10962:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10840:212;11068:18;:26;11087:6;11068:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;11098:18;:29;11117:9;11098:29;;;;;;;;;;;;;;;;;;;;;;;;;11068:59;11064:88;;;11144:5;11131:18;;11064:88;11179:13;;;;;;;;;;;11166:26;;:9;:26;;;;:53;;;;;11206:13;;;;;;;;;;;11196:23;;:6;:23;;;;11166:53;11162:82;;;11236:5;11223:18;;11162:82;11260:10;11256:1555;;;11297:10;;;;;;;;;;;11293:1270;;11333:22;11383:3;11367:13;;11358:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11333:53;;11409:22;11443:14;11434:6;:23;;;;:::i;:::-;11409:48;;11550:44;11579:14;11550:9;:24;11568:4;11550:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11523:9;:24;11541:4;11523:24;;;;;;;;;;;;;;;:71;;;;11637:29;11659:6;11637:9;:17;11647:6;11637:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11617:9;:17;11627:6;11617:17;;;;;;;;;;;;;;;:49;;;;11712:40;11737:14;11712:9;:20;11722:9;11712:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11689:9;:20;11699:9;11689:20;;;;;;;;;;;;;;;:63;;;;11799:9;11782:43;;11791:6;11782:43;;;11810:14;11782:43;;;;;;:::i;:::-;;;;;;;;11878:4;11853:47;;11862:6;11853:47;;;11885:14;11853:47;;;;;;:::i;:::-;;;;;;;;11293:1270;;;;;11951:22;12002:3;11985:14;;11976:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;11951:54;;12028:22;12062:14;12053:6;:23;;;;:::i;:::-;12028:48;;12150:44;12179:14;12150:9;:24;12168:4;12150:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12123:9;:24;12141:4;12123:24;;;;;;;;;;;;;;;:71;;;;12237:29;12259:6;12237:9;:17;12247:6;12237:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12217:9;:17;12227:6;12217:17;;;;;;;;;;;;;;;:49;;;;12312:40;12337:14;12312:9;:20;12322:9;12312:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12289:9;:20;12299:9;12289:20;;;;;;;;;;;;;;;:63;;;;12399:9;12382:43;;12391:6;12382:43;;;12410:14;12382:43;;;;;;:::i;:::-;;;;;;;;12478:4;12453:47;;12462:6;12453:47;;;12485:14;12453:47;;;;;;:::i;:::-;;;;;;;;12538:5;12525:10;;:18;;;;;;;;;;;;;;;;;;11293:1270;;;11256:1555;;;12633:29;12655:6;12633:9;:17;12643:6;12633:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12613:9;:17;12623:6;12613:17;;;;;;;;;;;;;;;:49;;;;12704:32;12729:6;12704:9;:20;12714:9;12704:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12681:9;:20;12691:9;12681:20;;;;;;;;;;;;;;;:55;;;;12779:9;12762:35;;12771:6;12762:35;;;12790:6;12762:35;;;;;;:::i;:::-;;;;;;;;11256:1555;9505:3313;;;;;:::o;3021:173::-;3077:16;3096:6;;;;;;;;;;;3077:25;;3122:8;3113:6;;:17;;;;;;;;;;;;;;;;;;3177:8;3146:40;;3167:8;3146:40;;;;;;;;;;;;3021:173;;:::o;13494:842::-;13534:28;13565:24;13583:4;13565:9;:24::i;:::-;13534:55;;13628:1;13605:20;:24;13602:713;;;13651:10;;;;;;;;;;;13648:566;;;13709:1;13686:20;:24;13683:514;;;13756:17;13818:3;13803:12;;13776:24;13794:4;13776:9;:24::i;:::-;:39;;;;:::i;:::-;:45;;;;:::i;:::-;13756:65;;13846:14;13863:9;13846:26;;13897:24;13914:6;13897:16;:24::i;:::-;13946:23;13972:21;13946:47;;14040:1;14022:15;:19;14018:66;;;14052:3;;;;;;;;;;;14044:21;;:38;14066:15;14044:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14018:66;13683:514;;;;;;14134:43;;;;;;;;;;:::i;:::-;;;;;;;;13683:514;13648:566;13602:713;;;14247:38;;;;;;;;;;:::i;:::-;;;;;;;;13602:713;13494:842;:::o;1069:179::-;1127:7;1147:9;1163:1;1159;:5;;;;:::i;:::-;1147:17;;1188:1;1183;:6;;1175:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1239:1;1232:8;;;1069:179;;;;:::o;1257:136::-;1315:7;1342:43;1346:1;1349;1342:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1335:50;;1257:136;;;;:::o;12828:656::-;12954:21;12992:1;12978:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12954:40;;13023:4;13005;13010:1;13005:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13049:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13039:4;13044:1;13039:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;13151:62;13168:4;13183:15;;;;;;;;;;;13201:11;13151:8;:62::i;:::-;13252:15;;;;;;;;;;;:66;;;13333:11;13359:1;13403:4;13430;13450:15;13252:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12828:656;;:::o;1402:224::-;1522:7;1555:1;1550;:6;;1558:12;1542:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1582:9;1598:1;1594;:5;;;;:::i;:::-;1582:17;;1617:1;1610:8;;;1402:224;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:284::-;;972:2;960:9;951:7;947:23;943:32;940:2;;;988:1;985;978:12;940:2;1031:1;1056:64;1112:7;1103:6;1092:9;1088:22;1056:64;:::i;:::-;1046:74;;1002:128;930:207;;;;:::o;1143:407::-;;;1268:2;1256:9;1247:7;1243:23;1239:32;1236:2;;;1284:1;1281;1274:12;1236:2;1327:1;1352:53;1397:7;1388:6;1377:9;1373:22;1352:53;:::i;:::-;1342:63;;1298:117;1454:2;1480:53;1525:7;1516:6;1505:9;1501:22;1480:53;:::i;:::-;1470:63;;1425:118;1226:324;;;;;:::o;1556:552::-;;;;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1714:1;1711;1704:12;1666:2;1757:1;1782:53;1827:7;1818:6;1807:9;1803:22;1782:53;:::i;:::-;1772:63;;1728:117;1884:2;1910:53;1955:7;1946:6;1935:9;1931:22;1910:53;:::i;:::-;1900:63;;1855:118;2012:2;2038:53;2083:7;2074:6;2063:9;2059:22;2038:53;:::i;:::-;2028:63;;1983:118;1656:452;;;;;:::o;2114:401::-;;;2236:2;2224:9;2215:7;2211:23;2207:32;2204:2;;;2252:1;2249;2242:12;2204:2;2295:1;2320:53;2365:7;2356:6;2345:9;2341:22;2320:53;:::i;:::-;2310:63;;2266:117;2422:2;2448:50;2490:7;2481:6;2470:9;2466:22;2448:50;:::i;:::-;2438:60;;2393:115;2194:321;;;;;:::o;2521:407::-;;;2646:2;2634:9;2625:7;2621:23;2617:32;2614:2;;;2662:1;2659;2652:12;2614:2;2705:1;2730:53;2775:7;2766:6;2755:9;2751:22;2730:53;:::i;:::-;2720:63;;2676:117;2832:2;2858:53;2903:7;2894:6;2883:9;2879:22;2858:53;:::i;:::-;2848:63;;2803:118;2604:324;;;;;:::o;2934:256::-;;3039:2;3027:9;3018:7;3014:23;3010:32;3007:2;;;3055:1;3052;3045:12;3007:2;3098:1;3123:50;3165:7;3156:6;3145:9;3141:22;3123:50;:::i;:::-;3113:60;;3069:114;2997:193;;;;:::o;3196:262::-;;3304:2;3292:9;3283:7;3279:23;3275:32;3272:2;;;3320:1;3317;3310:12;3272:2;3363:1;3388:53;3433:7;3424:6;3413:9;3409:22;3388:53;:::i;:::-;3378:63;;3334:117;3262:196;;;;:::o;3464:552::-;;;;3606:2;3594:9;3585:7;3581:23;3577:32;3574:2;;;3622:1;3619;3612:12;3574:2;3665:1;3690:53;3735:7;3726:6;3715:9;3711:22;3690:53;:::i;:::-;3680:63;;3636:117;3792:2;3818:53;3863:7;3854:6;3843:9;3839:22;3818:53;:::i;:::-;3808:63;;3763:118;3920:2;3946:53;3991:7;3982:6;3971:9;3967:22;3946:53;:::i;:::-;3936:63;;3891:118;3564:452;;;;;:::o;4022:179::-;;4112:46;4154:3;4146:6;4112:46;:::i;:::-;4190:4;4185:3;4181:14;4167:28;;4102:99;;;;:::o;4207:108::-;4284:24;4302:5;4284:24;:::i;:::-;4279:3;4272:37;4262:53;;:::o;4321:118::-;4408:24;4426:5;4408:24;:::i;:::-;4403:3;4396:37;4386:53;;:::o;4475:732::-;;4623:54;4671:5;4623:54;:::i;:::-;4693:86;4772:6;4767:3;4693:86;:::i;:::-;4686:93;;4803:56;4853:5;4803:56;:::i;:::-;4882:7;4913:1;4898:284;4923:6;4920:1;4917:13;4898:284;;;4999:6;4993:13;5026:63;5085:3;5070:13;5026:63;:::i;:::-;5019:70;;5112:60;5165:6;5112:60;:::i;:::-;5102:70;;4958:224;4945:1;4942;4938:9;4933:14;;4898:284;;;4902:14;5198:3;5191:10;;4599:608;;;;;;;:::o;5213:109::-;5294:21;5309:5;5294:21;:::i;:::-;5289:3;5282:34;5272:50;;:::o;5328:183::-;5441:63;5498:5;5441:63;:::i;:::-;5436:3;5429:76;5419:92;;:::o;5517:147::-;5612:45;5651:5;5612:45;:::i;:::-;5607:3;5600:58;5590:74;;:::o;5670:364::-;;5786:39;5819:5;5786:39;:::i;:::-;5841:71;5905:6;5900:3;5841:71;:::i;:::-;5834:78;;5921:52;5966:6;5961:3;5954:4;5947:5;5943:16;5921:52;:::i;:::-;5998:29;6020:6;5998:29;:::i;:::-;5993:3;5989:39;5982:46;;5762:272;;;;;:::o;6040:326::-;;6203:67;6267:2;6262:3;6203:67;:::i;:::-;6196:74;;6300:30;6296:1;6291:3;6287:11;6280:51;6357:2;6352:3;6348:12;6341:19;;6186:180;;;:::o;6372:367::-;;6535:67;6599:2;6594:3;6535:67;:::i;:::-;6528:74;;6632:34;6628:1;6623:3;6619:11;6612:55;6698:5;6693:2;6688:3;6684:12;6677:27;6730:2;6725:3;6721:12;6714:19;;6518:221;;;:::o;6745:313::-;;6908:67;6972:2;6967:3;6908:67;:::i;:::-;6901:74;;7005:17;7001:1;6996:3;6992:11;6985:38;7049:2;7044:3;7040:12;7033:19;;6891:167;;;:::o;7064:370::-;;7227:67;7291:2;7286:3;7227:67;:::i;:::-;7220:74;;7324:34;7320:1;7315:3;7311:11;7304:55;7390:8;7385:2;7380:3;7376:12;7369:30;7425:2;7420:3;7416:12;7409:19;;7210:224;;;:::o;7440:325::-;;7603:67;7667:2;7662:3;7603:67;:::i;:::-;7596:74;;7700:29;7696:1;7691:3;7687:11;7680:50;7756:2;7751:3;7747:12;7740:19;;7586:179;;;:::o;7771:368::-;;7934:67;7998:2;7993:3;7934:67;:::i;:::-;7927:74;;8031:34;8027:1;8022:3;8018:11;8011:55;8097:6;8092:2;8087:3;8083:12;8076:28;8130:2;8125:3;8121:12;8114:19;;7917:222;;;:::o;8145:369::-;;8308:67;8372:2;8367:3;8308:67;:::i;:::-;8301:74;;8405:34;8401:1;8396:3;8392:11;8385:55;8471:7;8466:2;8461:3;8457:12;8450:29;8505:2;8500:3;8496:12;8489:19;;8291:223;;;:::o;8520:365::-;;8683:67;8747:2;8742:3;8683:67;:::i;:::-;8676:74;;8780:34;8776:1;8771:3;8767:11;8760:55;8846:3;8841:2;8836:3;8832:12;8825:25;8876:2;8871:3;8867:12;8860:19;;8666:219;;;:::o;8891:327::-;;9054:67;9118:2;9113:3;9054:67;:::i;:::-;9047:74;;9151:31;9147:1;9142:3;9138:11;9131:52;9209:2;9204:3;9200:12;9193:19;;9037:181;;;:::o;9224:377::-;;9387:67;9451:2;9446:3;9387:67;:::i;:::-;9380:74;;9484:34;9480:1;9475:3;9471:11;9464:55;9550:15;9545:2;9540:3;9536:12;9529:37;9592:2;9587:3;9583:12;9576:19;;9370:231;;;:::o;9607:368::-;;9770:67;9834:2;9829:3;9770:67;:::i;:::-;9763:74;;9867:34;9863:1;9858:3;9854:11;9847:55;9933:6;9928:2;9923:3;9919:12;9912:28;9966:2;9961:3;9957:12;9950:19;;9753:222;;;:::o;9981:326::-;;10144:67;10208:2;10203:3;10144:67;:::i;:::-;10137:74;;10241:30;10237:1;10232:3;10228:11;10221:51;10298:2;10293:3;10289:12;10282:19;;10127:180;;;:::o;10313:389::-;;10476:67;10540:2;10535:3;10476:67;:::i;:::-;10469:74;;10573:34;10569:1;10564:3;10560:11;10553:55;10639:27;10634:2;10629:3;10625:12;10618:49;10693:2;10688:3;10684:12;10677:19;;10459:243;;;:::o;10708:330::-;;10871:67;10935:2;10930:3;10871:67;:::i;:::-;10864:74;;10968:34;10964:1;10959:3;10955:11;10948:55;11029:2;11024:3;11020:12;11013:19;;10854:184;;;:::o;11044:380::-;;11207:67;11271:2;11266:3;11207:67;:::i;:::-;11200:74;;11304:34;11300:1;11295:3;11291:11;11284:55;11370:18;11365:2;11360:3;11356:12;11349:40;11415:2;11410:3;11406:12;11399:19;;11190:234;;;:::o;11430:315::-;;11593:67;11657:2;11652:3;11593:67;:::i;:::-;11586:74;;11690:19;11686:1;11681:3;11677:11;11670:40;11736:2;11731:3;11727:12;11720:19;;11576:169;;;:::o;11751:366::-;;11914:67;11978:2;11973:3;11914:67;:::i;:::-;11907:74;;12011:34;12007:1;12002:3;11998:11;11991:55;12077:4;12072:2;12067:3;12063:12;12056:26;12108:2;12103:3;12099:12;12092:19;;11897:220;;;:::o;12123:118::-;12210:24;12228:5;12210:24;:::i;:::-;12205:3;12198:37;12188:53;;:::o;12247:112::-;12330:22;12346:5;12330:22;:::i;:::-;12325:3;12318:35;12308:51;;:::o;12365:222::-;;12496:2;12485:9;12481:18;12473:26;;12509:71;12577:1;12566:9;12562:17;12553:6;12509:71;:::i;:::-;12463:124;;;;:::o;12593:210::-;;12718:2;12707:9;12703:18;12695:26;;12731:65;12793:1;12782:9;12778:17;12769:6;12731:65;:::i;:::-;12685:118;;;;:::o;12809:274::-;;12966:2;12955:9;12951:18;12943:26;;12979:97;13073:1;13062:9;13058:17;13049:6;12979:97;:::i;:::-;12933:150;;;;:::o;13089:313::-;;13240:2;13229:9;13225:18;13217:26;;13289:9;13283:4;13279:20;13275:1;13264:9;13260:17;13253:47;13317:78;13390:4;13381:6;13317:78;:::i;:::-;13309:86;;13207:195;;;;:::o;13408:419::-;;13612:2;13601:9;13597:18;13589:26;;13661:9;13655:4;13651:20;13647:1;13636:9;13632:17;13625:47;13689:131;13815:4;13689:131;:::i;:::-;13681:139;;13579:248;;;:::o;13833:419::-;;14037:2;14026:9;14022:18;14014:26;;14086:9;14080:4;14076:20;14072:1;14061:9;14057:17;14050:47;14114:131;14240:4;14114:131;:::i;:::-;14106:139;;14004:248;;;:::o;14258:419::-;;14462:2;14451:9;14447:18;14439:26;;14511:9;14505:4;14501:20;14497:1;14486:9;14482:17;14475:47;14539:131;14665:4;14539:131;:::i;:::-;14531:139;;14429:248;;;:::o;14683:419::-;;14887:2;14876:9;14872:18;14864:26;;14936:9;14930:4;14926:20;14922:1;14911:9;14907:17;14900:47;14964:131;15090:4;14964:131;:::i;:::-;14956:139;;14854:248;;;:::o;15108:419::-;;15312:2;15301:9;15297:18;15289:26;;15361:9;15355:4;15351:20;15347:1;15336:9;15332:17;15325:47;15389:131;15515:4;15389:131;:::i;:::-;15381:139;;15279:248;;;:::o;15533:419::-;;15737:2;15726:9;15722:18;15714:26;;15786:9;15780:4;15776:20;15772:1;15761:9;15757:17;15750:47;15814:131;15940:4;15814:131;:::i;:::-;15806:139;;15704:248;;;:::o;15958:419::-;;16162:2;16151:9;16147:18;16139:26;;16211:9;16205:4;16201:20;16197:1;16186:9;16182:17;16175:47;16239:131;16365:4;16239:131;:::i;:::-;16231:139;;16129:248;;;:::o;16383:419::-;;16587:2;16576:9;16572:18;16564:26;;16636:9;16630:4;16626:20;16622:1;16611:9;16607:17;16600:47;16664:131;16790:4;16664:131;:::i;:::-;16656:139;;16554:248;;;:::o;16808:419::-;;17012:2;17001:9;16997:18;16989:26;;17061:9;17055:4;17051:20;17047:1;17036:9;17032:17;17025:47;17089:131;17215:4;17089:131;:::i;:::-;17081:139;;16979:248;;;:::o;17233:419::-;;17437:2;17426:9;17422:18;17414:26;;17486:9;17480:4;17476:20;17472:1;17461:9;17457:17;17450:47;17514:131;17640:4;17514:131;:::i;:::-;17506:139;;17404:248;;;:::o;17658:419::-;;17862:2;17851:9;17847:18;17839:26;;17911:9;17905:4;17901:20;17897:1;17886:9;17882:17;17875:47;17939:131;18065:4;17939:131;:::i;:::-;17931:139;;17829:248;;;:::o;18083:419::-;;18287:2;18276:9;18272:18;18264:26;;18336:9;18330:4;18326:20;18322:1;18311:9;18307:17;18300:47;18364:131;18490:4;18364:131;:::i;:::-;18356:139;;18254:248;;;:::o;18508:419::-;;18712:2;18701:9;18697:18;18689:26;;18761:9;18755:4;18751:20;18747:1;18736:9;18732:17;18725:47;18789:131;18915:4;18789:131;:::i;:::-;18781:139;;18679:248;;;:::o;18933:419::-;;19137:2;19126:9;19122:18;19114:26;;19186:9;19180:4;19176:20;19172:1;19161:9;19157:17;19150:47;19214:131;19340:4;19214:131;:::i;:::-;19206:139;;19104:248;;;:::o;19358:419::-;;19562:2;19551:9;19547:18;19539:26;;19611:9;19605:4;19601:20;19597:1;19586:9;19582:17;19575:47;19639:131;19765:4;19639:131;:::i;:::-;19631:139;;19529:248;;;:::o;19783:419::-;;19987:2;19976:9;19972:18;19964:26;;20036:9;20030:4;20026:20;20022:1;20011:9;20007:17;20000:47;20064:131;20190:4;20064:131;:::i;:::-;20056:139;;19954:248;;;:::o;20208:419::-;;20412:2;20401:9;20397:18;20389:26;;20461:9;20455:4;20451:20;20447:1;20436:9;20432:17;20425:47;20489:131;20615:4;20489:131;:::i;:::-;20481:139;;20379:248;;;:::o;20633:222::-;;20764:2;20753:9;20749:18;20741:26;;20777:71;20845:1;20834:9;20830:17;20821:6;20777:71;:::i;:::-;20731:124;;;;:::o;20861:831::-;;21162:3;21151:9;21147:19;21139:27;;21176:71;21244:1;21233:9;21229:17;21220:6;21176:71;:::i;:::-;21257:80;21333:2;21322:9;21318:18;21309:6;21257:80;:::i;:::-;21384:9;21378:4;21374:20;21369:2;21358:9;21354:18;21347:48;21412:108;21515:4;21506:6;21412:108;:::i;:::-;21404:116;;21530:72;21598:2;21587:9;21583:18;21574:6;21530:72;:::i;:::-;21612:73;21680:3;21669:9;21665:19;21656:6;21612:73;:::i;:::-;21129:563;;;;;;;;:::o;21698:442::-;;21885:2;21874:9;21870:18;21862:26;;21898:71;21966:1;21955:9;21951:17;21942:6;21898:71;:::i;:::-;21979:72;22047:2;22036:9;22032:18;22023:6;21979:72;:::i;:::-;22061;22129:2;22118:9;22114:18;22105:6;22061:72;:::i;:::-;21852:288;;;;;;:::o;22146:553::-;;22361:3;22350:9;22346:19;22338:27;;22375:71;22443:1;22432:9;22428:17;22419:6;22375:71;:::i;:::-;22456:72;22524:2;22513:9;22509:18;22500:6;22456:72;:::i;:::-;22538;22606:2;22595:9;22591:18;22582:6;22538:72;:::i;:::-;22620;22688:2;22677:9;22673:18;22664:6;22620:72;:::i;:::-;22328:371;;;;;;;:::o;22705:214::-;;22832:2;22821:9;22817:18;22809:26;;22845:67;22909:1;22898:9;22894:17;22885:6;22845:67;:::i;:::-;22799:120;;;;:::o;22925:132::-;;23015:3;23007:11;;23045:4;23040:3;23036:14;23028:22;;22997:60;;;:::o;23063:114::-;;23164:5;23158:12;23148:22;;23137:40;;;:::o;23183:99::-;;23269:5;23263:12;23253:22;;23242:40;;;:::o;23288:113::-;;23390:4;23385:3;23381:14;23373:22;;23363:38;;;:::o;23407:184::-;;23540:6;23535:3;23528:19;23580:4;23575:3;23571:14;23556:29;;23518:73;;;;:::o;23597:169::-;;23715:6;23710:3;23703:19;23755:4;23750:3;23746:14;23731:29;;23693:73;;;;:::o;23772:305::-;;23831:20;23849:1;23831:20;:::i;:::-;23826:25;;23865:20;23883:1;23865:20;:::i;:::-;23860:25;;24019:1;23951:66;23947:74;23944:1;23941:81;23938:2;;;24025:18;;:::i;:::-;23938:2;24069:1;24066;24062:9;24055:16;;23816:261;;;;:::o;24083:185::-;;24140:20;24158:1;24140:20;:::i;:::-;24135:25;;24174:20;24192:1;24174:20;:::i;:::-;24169:25;;24213:1;24203:2;;24218:18;;:::i;:::-;24203:2;24260:1;24257;24253:9;24248:14;;24125:143;;;;:::o;24274:848::-;;;24366:6;24357:15;;24390:5;24381:14;;24404:712;24425:1;24415:8;24412:15;24404:712;;;24520:4;24515:3;24511:14;24505:4;24502:24;24499:2;;;24529:18;;:::i;:::-;24499:2;24579:1;24569:8;24565:16;24562:2;;;24994:4;24987:5;24983:16;24974:25;;24562:2;25044:4;25038;25034:15;25026:23;;25074:32;25097:8;25074:32;:::i;:::-;25062:44;;24404:712;;;24347:775;;;;;;;:::o;25128:281::-;;25210:23;25228:4;25210:23;:::i;:::-;25202:31;;25254:25;25270:8;25254:25;:::i;:::-;25242:37;;25298:104;25335:66;25325:8;25319:4;25298:104;:::i;:::-;25289:113;;25192:217;;;;:::o;25415:1073::-;;25660:8;25650:2;;25681:1;25672:10;;25683:5;;25650:2;25709:4;25699:2;;25726:1;25717:10;;25728:5;;25699:2;25795:4;25843:1;25838:27;;;;25879:1;25874:191;;;;25788:277;;25838:27;25856:1;25847:10;;25858:5;;;25874:191;25919:3;25909:8;25906:17;25903:2;;;25926:18;;:::i;:::-;25903:2;25975:8;25972:1;25968:16;25959:25;;26010:3;26003:5;26000:14;25997:2;;;26017:18;;:::i;:::-;25997:2;26050:5;;;25788:277;;26174:2;26164:8;26161:16;26155:3;26149:4;26146:13;26142:36;26124:2;26114:8;26111:16;26106:2;26100:4;26097:12;26093:35;26077:111;26074:2;;;26230:8;26224:4;26220:19;26211:28;;26265:3;26258:5;26255:14;26252:2;;;26272:18;;:::i;:::-;26252:2;26305:5;;26074:2;26345:42;26383:3;26373:8;26367:4;26364:1;26345:42;:::i;:::-;26330:57;;;;26419:4;26414:3;26410:14;26403:5;26400:25;26397:2;;;26428:18;;:::i;:::-;26397:2;26477:4;26470:5;26466:16;26457:25;;25475:1013;;;;;;:::o;26494:348::-;;26557:20;26575:1;26557:20;:::i;:::-;26552:25;;26591:20;26609:1;26591:20;:::i;:::-;26586:25;;26779:1;26711:66;26707:74;26704:1;26701:81;26696:1;26689:9;26682:17;26678:105;26675:2;;;26786:18;;:::i;:::-;26675:2;26834:1;26831;26827:9;26816:20;;26542:300;;;;:::o;26848:191::-;;26908:20;26926:1;26908:20;:::i;:::-;26903:25;;26942:20;26960:1;26942:20;:::i;:::-;26937:25;;26981:1;26978;26975:8;26972:2;;;26986:18;;:::i;:::-;26972:2;27031:1;27028;27024:9;27016:17;;26893:146;;;;:::o;27045:96::-;;27111:24;27129:5;27111:24;:::i;:::-;27100:35;;27090:51;;;:::o;27147:90::-;;27224:5;27217:13;27210:21;27199:32;;27189:48;;;:::o;27243:126::-;;27320:42;27313:5;27309:54;27298:65;;27288:81;;;:::o;27375:77::-;;27441:5;27430:16;;27420:32;;;:::o;27458:86::-;;27533:4;27526:5;27522:16;27511:27;;27501:43;;;:::o;27550:178::-;;27659:63;27716:5;27659:63;:::i;:::-;27646:76;;27636:92;;;:::o;27734:139::-;;27843:24;27861:5;27843:24;:::i;:::-;27830:37;;27820:53;;;:::o;27879:121::-;;27970:24;27988:5;27970:24;:::i;:::-;27957:37;;27947:53;;;:::o;28006:307::-;28074:1;28084:113;28098:6;28095:1;28092:13;28084:113;;;28183:1;28178:3;28174:11;28168:18;28164:1;28159:3;28155:11;28148:39;28120:2;28117:1;28113:10;28108:15;;28084:113;;;28215:6;28212:1;28209:13;28206:2;;;28295:1;28286:6;28281:3;28277:16;28270:27;28206:2;28055:258;;;;:::o;28319:180::-;28367:77;28364:1;28357:88;28464:4;28461:1;28454:15;28488:4;28485:1;28478:15;28505:180;28553:77;28550:1;28543:88;28650:4;28647:1;28640:15;28674:4;28671:1;28664:15;28691:102;;28783:2;28779:7;28774:2;28767:5;28763:14;28759:28;28749:38;;28739:54;;;:::o;28799:102::-;;28888:5;28885:1;28881:13;28860:34;;28850:51;;;:::o;28907:122::-;28980:24;28998:5;28980:24;:::i;:::-;28973:5;28970:35;28960:2;;29019:1;29016;29009:12;28960:2;28950:79;:::o;29035:116::-;29105:21;29120:5;29105:21;:::i;:::-;29098:5;29095:32;29085:2;;29141:1;29138;29131:12;29085:2;29075:76;:::o;29157:122::-;29230:24;29248:5;29230:24;:::i;:::-;29223:5;29220:35;29210:2;;29269:1;29266;29259:12;29210:2;29200:79;:::o

Swarm Source

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