ETH Price: $3,477.49 (-1.11%)
Gas: 5 Gwei

Token

EndlessWebWorlds (EWW)
 

Overview

Max Total Supply

100,000,000,000 EWW

Holders

342

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 EWW

Value
$0.00
0x07f20f2cc2e1e95b1fff697d3dec5d51c3db4ee0
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x27AA7B6a...c87B167B1
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
EndlessWebWorlds

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-04
*/

// File: contracts/Withdrawable.sol

abstract contract Withdrawable {
    address internal _withdrawAddress;

    constructor(address withdrawAddress__) {
        _withdrawAddress = withdrawAddress__;
    }

    modifier onlyWithdrawer() {
        require(msg.sender == _withdrawAddress);
        _;
    }

    function withdraw() external onlyWithdrawer {
        _withdraw();
    }

    function _withdraw() internal {
        payable(_withdrawAddress).transfer(address(this).balance);
    }

    function setWithdrawAddress(address newWithdrawAddress)
        external
        onlyWithdrawer
    {
        _withdrawAddress = newWithdrawAddress;
    }

    function withdrawAddress() external view returns (address) {
        return _withdrawAddress;
    }
}

// File: contracts/Ownable.sol

pragma solidity ^0.8.7;

abstract contract Ownable {
    address _owner;

    modifier onlyOwner() {
        require(msg.sender == _owner);
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }

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

// File: contracts/IUniswapV2Factory.sol

pragma solidity ^0.8.7;

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

// File: contracts/IUniswapV2Router02.sol

pragma solidity ^0.8.7;

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function factory() external pure returns (address);

    function WETH() 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
        );
}

// File: contracts/DoubleSwapped.sol

pragma solidity ^0.8.7;


contract DoubleSwapped {
    bool internal _inSwap;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    function _swapTokensForEth(
        uint256 tokenAmount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        // make the swap
        //console.log("doubleSwap ", tokenAmount);
        _uniswapV2Router.swapExactTokensForETH(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function _swapTokensForEthOnTransfer(
        uint256 transferAmount,
        uint256 swapCount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal {
        if (swapCount == 0) return;
        uint256 maxSwapCount = 2 * transferAmount;
        if (swapCount > maxSwapCount) swapCount = maxSwapCount;
        _swapTokensForEth(swapCount, _uniswapV2Router);
    }
}

// File: contracts/IERC20.sol

pragma solidity ^0.8.7;

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
    );
}
// File: contracts/ERC20.sol

pragma solidity ^0.8.7;


abstract contract ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e20;
    uint8 constant _decimals = 9;
    string _name;
    string _symbol;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal constant INFINITY_ALLOWANCE = 2**256 - 1;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

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

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        if (currentAllowance == INFINITY_ALLOWANCE) return true;
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }
}

// File: contracts/MaxWalletDynamic.sol

pragma solidity ^0.8.7;


abstract contract MaxWalletDynamic {
    uint256 startMaxWallet;
    uint256 startTime; // last increment time
    uint256 constant startMaxBuyPercentil = 5; // maximum buy on start 1000=100%
    uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes
    uint256 constant maxBuyIncrementPercentil = 3; // increment maxbyu percentil 1000=100%
    uint256 constant maxIncrements = 1000; // maximum time incrementations
    uint256 maxBuyIncrementValue; // value for increment maxBuy

    function startMaxWalletDynamic(uint256 totalSupply) internal {
        startTime = block.timestamp;
        startMaxWallet = (totalSupply * startMaxBuyPercentil) / 1000;
        maxBuyIncrementValue = (totalSupply * maxBuyIncrementPercentil) / 1000;
    }

    function checkMaxWallet(uint256 walletSize) internal view {
        require(walletSize <= getMaxWallet(), "max wallet limit");
    }

    function getMaxWallet() public view returns (uint256) {
        uint256 incrementCount = (block.timestamp - startTime) /
            (maxBuyIncrementMinutesTimer * 1 minutes);
        if (incrementCount >= maxIncrements) incrementCount = maxIncrements;
        return startMaxWallet + maxBuyIncrementValue * incrementCount;
    }

    function _setStartMaxWallet(uint256 startMaxWallet_) internal {
        startMaxWallet = startMaxWallet_;
    }
}

// File: contracts/TradableErc20.sol

pragma solidity ^0.8.7;

abstract contract TradableErc20 is ERC20, DoubleSwapped, Ownable, Withdrawable {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapPair;
    bool public buyEnable = false;
    address public constant ADDR_BURN =
        0x000000000000000000000000000000000000dEaD;
    address public extraAddress;
    mapping(address => bool) _isExcludedFromFee;
    uint256 public buyFeePpm = 2; // fee in 1/1000
    uint256 public sellFeePpm = 2; // fee in 1/1000
    uint256 public thisShare = 410; // in 1/1000
    uint256 public extraShare = 0; // in 1/1000
    uint256 maxWalletStart = 5e16;
    uint256 addMaxWalletPerMinute = 5e16;
    uint256 tradingStartTime;

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
        Withdrawable(msg.sender)
    {
        _isExcludedFromFee[address(0)] = true;
        _isExcludedFromFee[ADDR_BURN] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
    }

    receive() external payable {}

    function maxWallet() public view returns (uint256) {
        if (tradingStartTime == 0) return _totalSupply;
        uint256 res = maxWalletStart +
            ((block.timestamp - tradingStartTime) * addMaxWalletPerMinute) /
            (1 minutes);
        if (res > _totalSupply) return _totalSupply;
        return res;
    }

    function createLiquidity() public onlyOwner {
        require(uniswapPair == address(0));
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        uint256 initialLiquidity = getSupplyForMakeLiquidity();
        _balances[address(this)] = initialLiquidity;
        emit Transfer(address(0), address(this), initialLiquidity);

        _balances[msg.sender] = 1e19;
        emit Transfer(address(0), msg.sender, initialLiquidity);

        _allowances[address(this)][
            address(_uniswapV2Router)
        ] = INFINITY_ALLOWANCE;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            initialLiquidity,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapPair = pair;
        tradingStartTime = block.timestamp;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(_balances[from] >= amount, "not enough token for transfer");
        require(to != address(0), "incorrect address");

        // buy
        if (from == uniswapPair && !_isExcludedFromFee[to]) {
            require(buyEnable, "trading disabled");
            // get taxes
            amount = _getFeeBuy(from, to, amount);
            require(
                _balances[to] + amount <= maxWallet(),
                "max wallet constraint"
            );
        }
        // sell
        else if (
            !_inSwap &&
            uniswapPair != address(0) &&
            to == uniswapPair &&
            !_isExcludedFromFee[from]
        ) {
            // fee
            amount = _getFeeSell(from, amount);
            // swap tokens
            _swapTokensForEthOnTransfer(
                amount,
                _balances[address(this)],
                _uniswapV2Router
            );
        }

        // transfer
        super._transfer(from, to, amount);
    }

    function getFeeBuy(address account, uint256 amount)
        public view
        returns (uint256)
    {
        return (amount * buyFeePpm) / 1000;
    }

    function getFeeSell(address account, uint256 amount)
        public view
        returns (uint256)
    {
        return (amount * sellFeePpm) / 1000;
    }

    function setBuyFee(uint256 newBuyFeePpm) external onlyWithdrawer {
        require(newBuyFeePpm <= 100);
        buyFeePpm = newBuyFeePpm;
    }

    function setSellFee(uint256 newSellFeePpm) external onlyWithdrawer {
        require(newSellFeePpm <= 100);
        sellFeePpm = newSellFeePpm;
    }

    function SetExtraContractAddress(address newExtraContractAddress)
        external
        onlyWithdrawer
    {
        extraAddress = newExtraContractAddress;
    }

    function removeExtraContractAddress() external onlyWithdrawer {
        extraAddress = address(0);
    }

    function setShare(uint256 thisSharePpm, uint256 stackingSharePpm)
        external
        onlyWithdrawer
    {
        thisShare = thisSharePpm;
        extraShare = stackingSharePpm;
        require(thisShare + extraShare <= 1000);
    }

    function _getFeeBuy(
        address pair,
        address to,
        uint256 amount
    ) private returns (uint256) {
        return _arrangeFee(pair, amount, getFeeBuy(to, amount));
    }

    function _getFeeSell(address from, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(from, amount, getFeeSell(from, amount));
    }

    function _arrangeFee(
        address from,
        uint256 amount,
        uint256 fee
    ) private returns (uint256) {
        uint256 thisFee = (fee * thisShare) / 1000;
        uint256 stacking = 0;
        if (extraAddress != address(0))
            stacking = (fee * extraShare) / 1000;
        uint256 burn = 0;
        if (thisShare + extraShare < 1000) burn = fee - thisFee - stacking;

        amount -= fee;
        _balances[from] -= fee;

        if (thisFee > 0) {
            _balances[address(this)] += thisFee;
            emit Transfer(from, address(this), thisFee);
        }
        if (stacking > 0) {
            _balances[extraAddress] += stacking;
            emit Transfer(from, extraAddress, stacking);
        }
        if (burn > 0) {
            _balances[ADDR_BURN] += burn;
            emit Transfer(from, ADDR_BURN, burn);
        }

        return amount;
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyWithdrawer
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setEnableBuy(bool value) external onlyOwner {
        require(buyEnable == false); // can only triggered once
        buyEnable = value;
    }

    function getSupplyForMakeLiquidity() internal virtual returns (uint256);
}

// File: contracts/EndlessWebWorlds.sol

pragma solidity ^0.8.7;


struct AirdropData {
    address acc;
    uint256 count;
}

contract EndlessWebWorlds is TradableErc20 {
    constructor() TradableErc20("EndlessWebWorlds", "EWW") {}

    function getSupplyForMakeLiquidity()
        internal
        view
        override
        returns (uint256)
    {
        return _totalSupply - 1e19;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADDR_BURN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newExtraContractAddress","type":"address"}],"name":"SetExtraContractAddress","outputs":[],"stateMutability":"nonpayable","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":"buyEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"extraAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeExtraContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFeePpm","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setEnableBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellFeePpm","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thisSharePpm","type":"uint256"},{"internalType":"uint256","name":"stackingSharePpm","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWithdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d631000006000556000600760146101000a81548160ff0219169083151502179055506002600a556002600b5561019a600c556000600d5566b1a2bc2ec50000600e5566b1a2bc2ec50000600f553480156200006457600080fd5b506040518060400160405280601081526020017f456e646c657373576562576f726c6473000000000000000000000000000000008152506040518060400160405280600381526020017f45575700000000000000000000000000000000000000000000000000000000008152503382828160019080519060200190620000ec929190620002f5565b50806002908051906020019062000105929190620002f5565b50505033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050506200040a565b8280546200030390620003a5565b90600052602060002090601f01602090048101928262000327576000855562000373565b82601f106200034257805160ff191683800117855562000373565b8280016001018555821562000373579182015b828111156200037257825182559160200191906001019062000355565b5b50905062000382919062000386565b5090565b5b80821115620003a157600081600090555060010162000387565b5090565b60006002820490506001821680620003be57607f821691505b60208210811415620003d557620003d4620003db565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613192806200041a6000396000f3fe6080604052600436106101f25760003560e01c80636bf8e9cc1161010d578063c6510557116100a0578063dd62ed3e1161006f578063dd62ed3e146106c2578063f1153e64146106ff578063f2fde38b1461072a578063f8b45b0514610753578063f95fa9cf1461077e576101f9565b8063c65105571461062c578063c7af2a9c14610655578063c816841b1461066c578063d57038e114610697576101f9565b80638da5cb5b116100dc5780638da5cb5b1461056e57806395d89b4114610599578063a9059cbb146105c4578063c4b44a4014610601576101f9565b80636bf8e9cc146104b65780636c90b57f146104df57806370a08231146105085780638b4cee0814610545576101f9565b80632b96ddbe116101855780633ab1a494116101545780633ab1a494146104225780633ccfd60b1461044b5780633d389faf1461046257806347fd4ab31461048d576101f9565b80632b96ddbe1461038a5780632ccb9321146103a15780632d36b92b146103cc578063313ce567146103f7576101f9565b806318160ddd116101c157806318160ddd146102ba5780631a795197146102e55780631d55009a1461032257806323b872dd1461034d576101f9565b806306fdde03146101fe578063095ea7b3146102295780630cc835a3146102665780631581b6001461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107bb565b6040516102209190612b30565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612752565b61084d565b60405161025d9190612b15565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061281b565b610864565b005b34801561029b57600080fd5b506102a46108d6565b6040516102b19190612a70565b60405180910390f35b3480156102c657600080fd5b506102cf610900565b6040516102dc9190612bd2565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612752565b610909565b6040516103199190612bd2565b60405180910390f35b34801561032e57600080fd5b5061033761092e565b6040516103449190612bd2565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f91906126ff565b610934565b6040516103819190612b15565b60405180910390f35b34801561039657600080fd5b5061039f610a1b565b005b3480156103ad57600080fd5b506103b6610ab9565b6040516103c39190612a70565b60405180910390f35b3480156103d857600080fd5b506103e1610abf565b6040516103ee9190612a70565b60405180910390f35b34801561040357600080fd5b5061040c610ae5565b6040516104199190612c47565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190612665565b610aee565b005b34801561045757600080fd5b50610460610b8c565b005b34801561046e57600080fd5b50610477610bf0565b6040516104849190612b15565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906127ee565b610c03565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190612848565b610c9a565b005b3480156104eb57600080fd5b5061050660048036038101906105019190612792565b610d24565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612665565b610e11565b60405161053c9190612bd2565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061281b565b610e5a565b005b34801561057a57600080fd5b50610583610ecc565b6040516105909190612a70565b60405180910390f35b3480156105a557600080fd5b506105ae610ef6565b6040516105bb9190612b30565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190612752565b610f88565b6040516105f89190612b15565b60405180910390f35b34801561060d57600080fd5b50610616610f9f565b6040516106239190612bd2565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612665565b610fa5565b005b34801561066157600080fd5b5061066a611043565b005b34801561067857600080fd5b5061068161161a565b60405161068e9190612a70565b60405180910390f35b3480156106a357600080fd5b506106ac611640565b6040516106b99190612bd2565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906126bf565b611646565b6040516106f69190612bd2565b60405180910390f35b34801561070b57600080fd5b506107146116cd565b6040516107219190612bd2565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c9190612665565b6116d3565b005b34801561075f57600080fd5b50610768611771565b6040516107759190612bd2565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190612752565b6117dc565b6040516107b29190612bd2565b60405180910390f35b6060600180546107ca90612eb7565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690612eb7565b80156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b5050505050905090565b600061085a338484611801565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108be57600080fd5b60648111156108cc57600080fd5b80600a8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054905090565b60006103e8600b548361091c9190612d8f565b6109269190612d5e565b905092915050565b600c5481565b60006109418484846118ec565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109cf57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811415610a01576001915050610a14565b610a0e8533858403611801565b60019150505b9392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7557600080fd5b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61dead81565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4857600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be657600080fd5b610bee611d1b565b565b600760149054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5d57600080fd5b60001515600760149054906101000a900460ff16151514610c7d57600080fd5b80600760146101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf457600080fd5b81600c8190555080600d819055506103e8600d54600c54610d159190612d08565b1115610d2057600080fd5b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7e57600080fd5b60005b8251811015610e0c578160096000858481518110610da257610da1612ff0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610e0590612f1a565b9050610d81565b505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb457600080fd5b6064811115610ec257600080fd5b80600b8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610f0590612eb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3190612eb7565b8015610f7e5780601f10610f5357610100808354040283529160200191610f7e565b820191906000526020600020905b815481529060010190602001808311610f6157829003601f168201915b5050505050905090565b6000610f953384846118ec565b6001905092915050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fff57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461109d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f857600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561115457600080fd5b505afa158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c9190612692565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190612692565b6040518363ffffffff1660e01b8152600401611257929190612a8b565b602060405180830381600087803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190612692565b905060006112b5611d86565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113599190612bd2565b60405180910390a3678ac7230489e80000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161140b9190612bd2565b60405180910390a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71947308460008033426040518863ffffffff1660e01b815260040161157996959493929190612ab4565b6060604051808303818588803b15801561159257600080fd5b505af11580156115a6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115cb9190612888565b50505081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426010819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172d57600080fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060105414156117875760005490506117d9565b6000603c600f546010544261179c9190612de9565b6117a69190612d8f565b6117b09190612d5e565b600e546117bd9190612d08565b90506000548111156117d4576000549150506117d9565b809150505b90565b60006103e8600a54836117ef9190612d8f565b6117f99190612d5e565b905092915050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118df9190612bd2565b60405180910390a3505050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590612b52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590612b92565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a855750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b7f57600760149054906101000a900460ff16611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090612b72565b60405180910390fd5b611ae4838383611da3565b9050611aee611771565b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b399190612d08565b1115611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7190612bb2565b60405180910390fd5b611d0b565b600560009054906101000a900460ff16158015611beb5750600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611c445750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015611c9a5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0a57611ca98382611dc2565b9050611d0981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054737a250d5630b4cf539739df2c5dacb4c659f2488d611de0565b5b5b611d16838383611e1c565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611d83573d6000803e3d6000fd5b50565b6000678ac7230489e80000600054611d9e9190612de9565b905090565b6000611db98483611db486866117dc565b611f74565b90509392505050565b6000611dd88383611dd38686610909565b611f74565b905092915050565b6000821415611dee57611e17565b6000836002611dfd9190612d8f565b905080831115611e0b578092505b611e158383612346565b505b505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e6d57600080fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f029190612d08565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f669190612bd2565b60405180910390a350505050565b6000806103e8600c5484611f889190612d8f565b611f929190612d5e565b905060008073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576103e8600d5485611ffc9190612d8f565b6120069190612d5e565b90505b60006103e8600d54600c5461201e9190612d08565b101561203e578183866120319190612de9565b61203b9190612de9565b90505b848661204a9190612de9565b955084600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461209b9190612de9565b9250508190555060008311156121675782600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120fa9190612d08565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161215e9190612bd2565b60405180910390a35b6000821115612270578160036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121e19190612d08565b92505081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122679190612bd2565b60405180910390a35b600081111561233957806003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ca9190612d08565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123309190612bd2565b60405180910390a35b8593505050509392505050565b6001600560006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561237e5761237d61301f565b5b6040519080825280602002602001820160405280156123ac5781602001602082028036833780820191505090505b50905030816000815181106123c4576123c3612ff0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561244457600080fd5b505afa158015612458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247c9190612692565b816001815181106124905761248f612ff0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318cbafe58460008430426040518663ffffffff1660e01b815260040161250c959493929190612bed565b600060405180830381600087803b15801561252657600080fd5b505af115801561253a573d6000803e3d6000fd5b50505050506000600560006101000a81548160ff0219169083151502179055505050565b600061257161256c84612c87565b612c62565b9050808382526020820190508285602086028201111561259457612593613053565b5b60005b858110156125c457816125aa88826125ce565b845260208401935060208301925050600181019050612597565b5050509392505050565b6000813590506125dd81613117565b92915050565b6000815190506125f281613117565b92915050565b600082601f83011261260d5761260c61304e565b5b813561261d84826020860161255e565b91505092915050565b6000813590506126358161312e565b92915050565b60008135905061264a81613145565b92915050565b60008151905061265f81613145565b92915050565b60006020828403121561267b5761267a61305d565b5b6000612689848285016125ce565b91505092915050565b6000602082840312156126a8576126a761305d565b5b60006126b6848285016125e3565b91505092915050565b600080604083850312156126d6576126d561305d565b5b60006126e4858286016125ce565b92505060206126f5858286016125ce565b9150509250929050565b6000806000606084860312156127185761271761305d565b5b6000612726868287016125ce565b9350506020612737868287016125ce565b92505060406127488682870161263b565b9150509250925092565b600080604083850312156127695761276861305d565b5b6000612777858286016125ce565b92505060206127888582860161263b565b9150509250929050565b600080604083850312156127a9576127a861305d565b5b600083013567ffffffffffffffff8111156127c7576127c6613058565b5b6127d3858286016125f8565b92505060206127e485828601612626565b9150509250929050565b6000602082840312156128045761280361305d565b5b600061281284828501612626565b91505092915050565b6000602082840312156128315761283061305d565b5b600061283f8482850161263b565b91505092915050565b6000806040838503121561285f5761285e61305d565b5b600061286d8582860161263b565b925050602061287e8582860161263b565b9150509250929050565b6000806000606084860312156128a1576128a061305d565b5b60006128af86828701612650565b93505060206128c086828701612650565b92505060406128d186828701612650565b9150509250925092565b60006128e783836128f3565b60208301905092915050565b6128fc81612e1d565b82525050565b61290b81612e1d565b82525050565b600061291c82612cc3565b6129268185612ce6565b935061293183612cb3565b8060005b8381101561296257815161294988826128db565b975061295483612cd9565b925050600181019050612935565b5085935050505092915050565b61297881612e2f565b82525050565b61298781612e72565b82525050565b600061299882612cce565b6129a28185612cf7565b93506129b2818560208601612e84565b6129bb81613062565b840191505092915050565b60006129d3601d83612cf7565b91506129de82613073565b602082019050919050565b60006129f6601083612cf7565b9150612a018261309c565b602082019050919050565b6000612a19601183612cf7565b9150612a24826130c5565b602082019050919050565b6000612a3c601583612cf7565b9150612a47826130ee565b602082019050919050565b612a5b81612e5b565b82525050565b612a6a81612e65565b82525050565b6000602082019050612a856000830184612902565b92915050565b6000604082019050612aa06000830185612902565b612aad6020830184612902565b9392505050565b600060c082019050612ac96000830189612902565b612ad66020830188612a52565b612ae3604083018761297e565b612af0606083018661297e565b612afd6080830185612902565b612b0a60a0830184612a52565b979650505050505050565b6000602082019050612b2a600083018461296f565b92915050565b60006020820190508181036000830152612b4a818461298d565b905092915050565b60006020820190508181036000830152612b6b816129c6565b9050919050565b60006020820190508181036000830152612b8b816129e9565b9050919050565b60006020820190508181036000830152612bab81612a0c565b9050919050565b60006020820190508181036000830152612bcb81612a2f565b9050919050565b6000602082019050612be76000830184612a52565b92915050565b600060a082019050612c026000830188612a52565b612c0f602083018761297e565b8181036040830152612c218186612911565b9050612c306060830185612902565b612c3d6080830184612a52565b9695505050505050565b6000602082019050612c5c6000830184612a61565b92915050565b6000612c6c612c7d565b9050612c788282612ee9565b919050565b6000604051905090565b600067ffffffffffffffff821115612ca257612ca161301f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612d1382612e5b565b9150612d1e83612e5b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d5357612d52612f63565b5b828201905092915050565b6000612d6982612e5b565b9150612d7483612e5b565b925082612d8457612d83612f92565b5b828204905092915050565b6000612d9a82612e5b565b9150612da583612e5b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612dde57612ddd612f63565b5b828202905092915050565b6000612df482612e5b565b9150612dff83612e5b565b925082821015612e1257612e11612f63565b5b828203905092915050565b6000612e2882612e3b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612e7d82612e5b565b9050919050565b60005b83811015612ea2578082015181840152602081019050612e87565b83811115612eb1576000848401525b50505050565b60006002820490506001821680612ecf57607f821691505b60208210811415612ee357612ee2612fc1565b5b50919050565b612ef282613062565b810181811067ffffffffffffffff82111715612f1157612f1061301f565b5b80604052505050565b6000612f2582612e5b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f5857612f57612f63565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6e6f7420656e6f75676820746f6b656e20666f72207472616e73666572000000600082015250565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b7f696e636f72726563742061646472657373000000000000000000000000000000600082015250565b7f6d61782077616c6c657420636f6e73747261696e740000000000000000000000600082015250565b61312081612e1d565b811461312b57600080fd5b50565b61313781612e2f565b811461314257600080fd5b50565b61314e81612e5b565b811461315957600080fd5b5056fea26469706673582212202942626add6a6b7b4545b9063b3cab3bf8a3dac2bbc3387ddd46f47922cc866b64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80636bf8e9cc1161010d578063c6510557116100a0578063dd62ed3e1161006f578063dd62ed3e146106c2578063f1153e64146106ff578063f2fde38b1461072a578063f8b45b0514610753578063f95fa9cf1461077e576101f9565b8063c65105571461062c578063c7af2a9c14610655578063c816841b1461066c578063d57038e114610697576101f9565b80638da5cb5b116100dc5780638da5cb5b1461056e57806395d89b4114610599578063a9059cbb146105c4578063c4b44a4014610601576101f9565b80636bf8e9cc146104b65780636c90b57f146104df57806370a08231146105085780638b4cee0814610545576101f9565b80632b96ddbe116101855780633ab1a494116101545780633ab1a494146104225780633ccfd60b1461044b5780633d389faf1461046257806347fd4ab31461048d576101f9565b80632b96ddbe1461038a5780632ccb9321146103a15780632d36b92b146103cc578063313ce567146103f7576101f9565b806318160ddd116101c157806318160ddd146102ba5780631a795197146102e55780631d55009a1461032257806323b872dd1461034d576101f9565b806306fdde03146101fe578063095ea7b3146102295780630cc835a3146102665780631581b6001461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107bb565b6040516102209190612b30565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612752565b61084d565b60405161025d9190612b15565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061281b565b610864565b005b34801561029b57600080fd5b506102a46108d6565b6040516102b19190612a70565b60405180910390f35b3480156102c657600080fd5b506102cf610900565b6040516102dc9190612bd2565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612752565b610909565b6040516103199190612bd2565b60405180910390f35b34801561032e57600080fd5b5061033761092e565b6040516103449190612bd2565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f91906126ff565b610934565b6040516103819190612b15565b60405180910390f35b34801561039657600080fd5b5061039f610a1b565b005b3480156103ad57600080fd5b506103b6610ab9565b6040516103c39190612a70565b60405180910390f35b3480156103d857600080fd5b506103e1610abf565b6040516103ee9190612a70565b60405180910390f35b34801561040357600080fd5b5061040c610ae5565b6040516104199190612c47565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190612665565b610aee565b005b34801561045757600080fd5b50610460610b8c565b005b34801561046e57600080fd5b50610477610bf0565b6040516104849190612b15565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906127ee565b610c03565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190612848565b610c9a565b005b3480156104eb57600080fd5b5061050660048036038101906105019190612792565b610d24565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612665565b610e11565b60405161053c9190612bd2565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061281b565b610e5a565b005b34801561057a57600080fd5b50610583610ecc565b6040516105909190612a70565b60405180910390f35b3480156105a557600080fd5b506105ae610ef6565b6040516105bb9190612b30565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190612752565b610f88565b6040516105f89190612b15565b60405180910390f35b34801561060d57600080fd5b50610616610f9f565b6040516106239190612bd2565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612665565b610fa5565b005b34801561066157600080fd5b5061066a611043565b005b34801561067857600080fd5b5061068161161a565b60405161068e9190612a70565b60405180910390f35b3480156106a357600080fd5b506106ac611640565b6040516106b99190612bd2565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906126bf565b611646565b6040516106f69190612bd2565b60405180910390f35b34801561070b57600080fd5b506107146116cd565b6040516107219190612bd2565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c9190612665565b6116d3565b005b34801561075f57600080fd5b50610768611771565b6040516107759190612bd2565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190612752565b6117dc565b6040516107b29190612bd2565b60405180910390f35b6060600180546107ca90612eb7565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690612eb7565b80156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b5050505050905090565b600061085a338484611801565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108be57600080fd5b60648111156108cc57600080fd5b80600a8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054905090565b60006103e8600b548361091c9190612d8f565b6109269190612d5e565b905092915050565b600c5481565b60006109418484846118ec565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109cf57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811415610a01576001915050610a14565b610a0e8533858403611801565b60019150505b9392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7557600080fd5b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61dead81565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4857600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be657600080fd5b610bee611d1b565b565b600760149054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5d57600080fd5b60001515600760149054906101000a900460ff16151514610c7d57600080fd5b80600760146101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf457600080fd5b81600c8190555080600d819055506103e8600d54600c54610d159190612d08565b1115610d2057600080fd5b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7e57600080fd5b60005b8251811015610e0c578160096000858481518110610da257610da1612ff0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610e0590612f1a565b9050610d81565b505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb457600080fd5b6064811115610ec257600080fd5b80600b8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610f0590612eb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3190612eb7565b8015610f7e5780601f10610f5357610100808354040283529160200191610f7e565b820191906000526020600020905b815481529060010190602001808311610f6157829003601f168201915b5050505050905090565b6000610f953384846118ec565b6001905092915050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fff57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461109d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f857600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561115457600080fd5b505afa158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c9190612692565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190612692565b6040518363ffffffff1660e01b8152600401611257929190612a8b565b602060405180830381600087803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190612692565b905060006112b5611d86565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113599190612bd2565b60405180910390a3678ac7230489e80000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161140b9190612bd2565b60405180910390a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71947308460008033426040518863ffffffff1660e01b815260040161157996959493929190612ab4565b6060604051808303818588803b15801561159257600080fd5b505af11580156115a6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115cb9190612888565b50505081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426010819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172d57600080fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060105414156117875760005490506117d9565b6000603c600f546010544261179c9190612de9565b6117a69190612d8f565b6117b09190612d5e565b600e546117bd9190612d08565b90506000548111156117d4576000549150506117d9565b809150505b90565b60006103e8600a54836117ef9190612d8f565b6117f99190612d5e565b905092915050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118df9190612bd2565b60405180910390a3505050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590612b52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590612b92565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a855750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b7f57600760149054906101000a900460ff16611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090612b72565b60405180910390fd5b611ae4838383611da3565b9050611aee611771565b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b399190612d08565b1115611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7190612bb2565b60405180910390fd5b611d0b565b600560009054906101000a900460ff16158015611beb5750600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611c445750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015611c9a5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0a57611ca98382611dc2565b9050611d0981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054737a250d5630b4cf539739df2c5dacb4c659f2488d611de0565b5b5b611d16838383611e1c565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611d83573d6000803e3d6000fd5b50565b6000678ac7230489e80000600054611d9e9190612de9565b905090565b6000611db98483611db486866117dc565b611f74565b90509392505050565b6000611dd88383611dd38686610909565b611f74565b905092915050565b6000821415611dee57611e17565b6000836002611dfd9190612d8f565b905080831115611e0b578092505b611e158383612346565b505b505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e6d57600080fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f029190612d08565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f669190612bd2565b60405180910390a350505050565b6000806103e8600c5484611f889190612d8f565b611f929190612d5e565b905060008073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576103e8600d5485611ffc9190612d8f565b6120069190612d5e565b90505b60006103e8600d54600c5461201e9190612d08565b101561203e578183866120319190612de9565b61203b9190612de9565b90505b848661204a9190612de9565b955084600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461209b9190612de9565b9250508190555060008311156121675782600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120fa9190612d08565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161215e9190612bd2565b60405180910390a35b6000821115612270578160036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121e19190612d08565b92505081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122679190612bd2565b60405180910390a35b600081111561233957806003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ca9190612d08565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123309190612bd2565b60405180910390a35b8593505050509392505050565b6001600560006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561237e5761237d61301f565b5b6040519080825280602002602001820160405280156123ac5781602001602082028036833780820191505090505b50905030816000815181106123c4576123c3612ff0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561244457600080fd5b505afa158015612458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247c9190612692565b816001815181106124905761248f612ff0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318cbafe58460008430426040518663ffffffff1660e01b815260040161250c959493929190612bed565b600060405180830381600087803b15801561252657600080fd5b505af115801561253a573d6000803e3d6000fd5b50505050506000600560006101000a81548160ff0219169083151502179055505050565b600061257161256c84612c87565b612c62565b9050808382526020820190508285602086028201111561259457612593613053565b5b60005b858110156125c457816125aa88826125ce565b845260208401935060208301925050600181019050612597565b5050509392505050565b6000813590506125dd81613117565b92915050565b6000815190506125f281613117565b92915050565b600082601f83011261260d5761260c61304e565b5b813561261d84826020860161255e565b91505092915050565b6000813590506126358161312e565b92915050565b60008135905061264a81613145565b92915050565b60008151905061265f81613145565b92915050565b60006020828403121561267b5761267a61305d565b5b6000612689848285016125ce565b91505092915050565b6000602082840312156126a8576126a761305d565b5b60006126b6848285016125e3565b91505092915050565b600080604083850312156126d6576126d561305d565b5b60006126e4858286016125ce565b92505060206126f5858286016125ce565b9150509250929050565b6000806000606084860312156127185761271761305d565b5b6000612726868287016125ce565b9350506020612737868287016125ce565b92505060406127488682870161263b565b9150509250925092565b600080604083850312156127695761276861305d565b5b6000612777858286016125ce565b92505060206127888582860161263b565b9150509250929050565b600080604083850312156127a9576127a861305d565b5b600083013567ffffffffffffffff8111156127c7576127c6613058565b5b6127d3858286016125f8565b92505060206127e485828601612626565b9150509250929050565b6000602082840312156128045761280361305d565b5b600061281284828501612626565b91505092915050565b6000602082840312156128315761283061305d565b5b600061283f8482850161263b565b91505092915050565b6000806040838503121561285f5761285e61305d565b5b600061286d8582860161263b565b925050602061287e8582860161263b565b9150509250929050565b6000806000606084860312156128a1576128a061305d565b5b60006128af86828701612650565b93505060206128c086828701612650565b92505060406128d186828701612650565b9150509250925092565b60006128e783836128f3565b60208301905092915050565b6128fc81612e1d565b82525050565b61290b81612e1d565b82525050565b600061291c82612cc3565b6129268185612ce6565b935061293183612cb3565b8060005b8381101561296257815161294988826128db565b975061295483612cd9565b925050600181019050612935565b5085935050505092915050565b61297881612e2f565b82525050565b61298781612e72565b82525050565b600061299882612cce565b6129a28185612cf7565b93506129b2818560208601612e84565b6129bb81613062565b840191505092915050565b60006129d3601d83612cf7565b91506129de82613073565b602082019050919050565b60006129f6601083612cf7565b9150612a018261309c565b602082019050919050565b6000612a19601183612cf7565b9150612a24826130c5565b602082019050919050565b6000612a3c601583612cf7565b9150612a47826130ee565b602082019050919050565b612a5b81612e5b565b82525050565b612a6a81612e65565b82525050565b6000602082019050612a856000830184612902565b92915050565b6000604082019050612aa06000830185612902565b612aad6020830184612902565b9392505050565b600060c082019050612ac96000830189612902565b612ad66020830188612a52565b612ae3604083018761297e565b612af0606083018661297e565b612afd6080830185612902565b612b0a60a0830184612a52565b979650505050505050565b6000602082019050612b2a600083018461296f565b92915050565b60006020820190508181036000830152612b4a818461298d565b905092915050565b60006020820190508181036000830152612b6b816129c6565b9050919050565b60006020820190508181036000830152612b8b816129e9565b9050919050565b60006020820190508181036000830152612bab81612a0c565b9050919050565b60006020820190508181036000830152612bcb81612a2f565b9050919050565b6000602082019050612be76000830184612a52565b92915050565b600060a082019050612c026000830188612a52565b612c0f602083018761297e565b8181036040830152612c218186612911565b9050612c306060830185612902565b612c3d6080830184612a52565b9695505050505050565b6000602082019050612c5c6000830184612a61565b92915050565b6000612c6c612c7d565b9050612c788282612ee9565b919050565b6000604051905090565b600067ffffffffffffffff821115612ca257612ca161301f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612d1382612e5b565b9150612d1e83612e5b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d5357612d52612f63565b5b828201905092915050565b6000612d6982612e5b565b9150612d7483612e5b565b925082612d8457612d83612f92565b5b828204905092915050565b6000612d9a82612e5b565b9150612da583612e5b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612dde57612ddd612f63565b5b828202905092915050565b6000612df482612e5b565b9150612dff83612e5b565b925082821015612e1257612e11612f63565b5b828203905092915050565b6000612e2882612e3b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612e7d82612e5b565b9050919050565b60005b83811015612ea2578082015181840152602081019050612e87565b83811115612eb1576000848401525b50505050565b60006002820490506001821680612ecf57607f821691505b60208210811415612ee357612ee2612fc1565b5b50919050565b612ef282613062565b810181811067ffffffffffffffff82111715612f1157612f1061301f565b5b80604052505050565b6000612f2582612e5b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f5857612f57612f63565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6e6f7420656e6f75676820746f6b656e20666f72207472616e73666572000000600082015250565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b7f696e636f72726563742061646472657373000000000000000000000000000000600082015250565b7f6d61782077616c6c657420636f6e73747261696e740000000000000000000000600082015250565b61312081612e1d565b811461312b57600080fd5b50565b61313781612e2f565b811461314257600080fd5b50565b61314e81612e5b565b811461315957600080fd5b5056fea26469706673582212202942626add6a6b7b4545b9063b3cab3bf8a3dac2bbc3387ddd46f47922cc866b64736f6c63430008070033

Deployed Bytecode Sourcemap

16420:452:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5472:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6743:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13609:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;688:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5755:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13441:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10184:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7172:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14102:106;;;;;;;;;;;;;:::i;:::-;;9901:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9995:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5662:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;521:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;325:74;;;;;;;;;;;;;:::i;:::-;;9865:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16042:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14216:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15791:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16707:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13764:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1170:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5565:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5958:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10131:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13924:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11111:1010;;;;;;;;;;;;;:::i;:::-;;9832:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10079:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6549:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10234:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1062:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10768:335;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13275:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5472:85;5511:13;5544:5;5537:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5472:85;:::o;6743:193::-;6847:4;6869:37;6878:10;6890:7;6899:6;6869:8;:37::i;:::-;6924:4;6917:11;;6743:193;;;;:::o;13609:147::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;13709:3:::1;13693:12;:19;;13685:28;;;::::0;::::1;;13736:12;13724:9;:24;;;;13609:147:::0;:::o;688:101::-;738:7;765:16;;;;;;;;;;;758:23;;688:101;:::o;5755:102::-;5810:7;5837:12;;5830:19;;5755:102;:::o;13441:160::-;13533:7;13589:4;13575:10;;13566:6;:19;;;;:::i;:::-;13565:28;;;;:::i;:::-;13558:35;;13441:160;;;;:::o;10184:30::-;;;;:::o;7172:504::-;7306:4;7323:36;7333:6;7341:9;7352:6;7323:9;:36::i;:::-;7372:24;7399:11;:19;7411:6;7399:19;;;;;;;;;;;;;;;:31;7419:10;7399:31;;;;;;;;;;;;;;;;7372:58;;7469:6;7449:16;:26;;7441:35;;;;;;5329:10;7491:16;:38;7487:55;;;7538:4;7531:11;;;;;7487:55;7578;7587:6;7595:10;7626:6;7607:16;:25;7578:8;:55::i;:::-;7664:4;7657:11;;;7172:504;;;;;;:::o;14102:106::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;14198:1:::1;14175:12;;:25;;;;;;;;;;;;;;;;;;14102:106::o:0;9901:87::-;9946:42;9901:87;:::o;9995:27::-;;;;;;;;;;;;;:::o;5662:85::-;5705:5;5106:1;5723:16;;5662:85;:::o;521:159::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;654:18:::1;635:16;;:37;;;;;;;;;;;;;;;;;;521:159:::0;:::o;325:74::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;380:11:::1;:9;:11::i;:::-;325:74::o:0;9865:29::-;;;;;;;;;;;;;:::o;16042:154::-;967:6;;;;;;;;;;;953:20;;:10;:20;;;945:29;;;;;;16127:5:::1;16114:18;;:9;;;;;;;;;;;:18;;;16106:27;;;::::0;::::1;;16183:5;16171:9;;:17;;;;;;;;;;;;;;;;;;16042:154:::0;:::o;14216:246::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;14352:12:::1;14340:9;:24;;;;14388:16;14375:10;:29;;;;14449:4;14435:10;;14423:9;;:22;;;;:::i;:::-;:30;;14415:39;;;::::0;::::1;;14216:246:::0;;:::o;15791:243::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;15920:9:::1;15915:112;15939:8;:15;15935:1;:19;15915:112;;;16010:5;15976:18;:31;15995:8;16004:1;15995:11;;;;;;;;:::i;:::-;;;;;;;;15976:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15956:3;;;;:::i;:::-;;;15915:112;;;;15791:243:::0;;:::o;16707:162::-;16811:7;16843:9;:18;16853:7;16843:18;;;;;;;;;;;;;;;;16836:25;;16707:162;;;:::o;13764:152::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;13867:3:::1;13850:13;:20;;13842:29;;;::::0;::::1;;13895:13;13882:10;:26;;;;13764:152:::0;:::o;1170:81::-;1210:7;1237:6;;;;;;;;;;;1230:13;;1170:81;:::o;5565:89::-;5606:13;5639:7;5632:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5565:89;:::o;5958:199::-;6065:4;6087:40;6097:10;6109:9;6120:6;6087:9;:40::i;:::-;6145:4;6138:11;;5958:199;;;;:::o;10131:29::-;;;;:::o;13924:170::-;280:16;;;;;;;;;;;266:30;;:10;:30;;;258:39;;;;;;14063:23:::1;14048:12;;:38;;;;;;;;;;;;;;;;;;13924:170:::0;:::o;11111:1010::-;967:6;;;;;;;;;;;953:20;;:10;:20;;;945:29;;;;;;11197:1:::1;11174:25;;:11;;;;;;;;;;;:25;;;11166:34;;;::::0;::::1;;11211:12;9782:42;11244:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11226:56;;;11305:4;9782:42;11325:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11226:133;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11211:148;;11370:24;11397:27;:25;:27::i;:::-;11370:54;;11462:16;11435:9;:24;11453:4;11435:24;;;;;;;;;;;;;;;:43;;;;11523:4;11494:53;;11511:1;11494:53;;;11530:16;11494:53;;;;;;:::i;:::-;;;;;;;;11584:4;11560:9;:21;11570:10;11560:21;;;;;;;;;;;;;;;:28;;;;11625:10;11604:50;;11621:1;11604:50;;;11637:16;11604:50;;;;;;:::i;:::-;;;;;;;;5329:10;11667:11;:26;11687:4;11667:26;;;;;;;;;;;;;;;:77;9782:42;11667:77;;;;;;;;;;;;;;;:98;;;;11803:4;11776:18;:24;11795:4;11776:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;9782:42;11818:32;;;11858:21;11903:4;11923:16;11954:1;11970::::0;11986:10:::1;12011:15;11818:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12064:4;12050:11;;:18;;;;;;;;;;;;;;;;;;12098:15;12079:16;:34;;;;11155:966;;11111:1010::o:0;9832:26::-;;;;;;;;;;;;;:::o;10079:28::-;;;;:::o;6549:186::-;6668:7;6700:11;:18;6712:5;6700:18;;;;;;;;;;;;;;;:27;6719:7;6700:27;;;;;;;;;;;;;;;;6693:34;;6549:186;;;;:::o;10234:29::-;;;;:::o;1062:100::-;967:6;;;;;;;;;;;953:20;;:10;:20;;;945:29;;;;;;1146:8:::1;1137:6;;:17;;;;;;;;;;;;;;;;;;1062:100:::0;:::o;10768:335::-;10810:7;10854:1;10834:16;;:21;10830:46;;;10864:12;;10857:19;;;;10830:46;10887:11;11010:9;10971:21;;10951:16;;10933:15;:34;;;;:::i;:::-;10932:60;;;;:::i;:::-;10931:89;;;;:::i;:::-;10901:14;;:119;;;;:::i;:::-;10887:133;;11041:12;;11035:3;:18;11031:43;;;11062:12;;11055:19;;;;;11031:43;11092:3;11085:10;;;10768:335;;:::o;13275:158::-;13366:7;13421:4;13408:9;;13399:6;:18;;;;:::i;:::-;13398:27;;;;:::i;:::-;13391:34;;13275:158;;;;:::o;6944:220::-;7102:6;7072:11;:18;7084:5;7072:18;;;;;;;;;;;;;;;:27;7091:7;7072:27;;;;;;;;;;;;;;;:36;;;;7140:7;7124:32;;7133:5;7124:32;;;7149:6;7124:32;;;;;;:::i;:::-;;;;;;;;6944:220;;;:::o;12129:1138::-;12280:6;12261:9;:15;12271:4;12261:15;;;;;;;;;;;;;;;;:25;;12253:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12353:1;12339:16;;:2;:16;;;;12331:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12418:11;;;;;;;;;;;12410:19;;:4;:19;;;:46;;;;;12434:18;:22;12453:2;12434:22;;;;;;;;;;;;;;;;;;;;;;;;;12433:23;12410:46;12406:787;;;12481:9;;;;;;;;;;;12473:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12561:28;12572:4;12578:2;12582:6;12561:10;:28::i;:::-;12552:37;;12656:11;:9;:11::i;:::-;12646:6;12630:9;:13;12640:2;12630:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:37;;12604:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;12406:787;;;12787:7;;;;;;;;;;;12786:8;:50;;;;;12834:1;12811:25;;:11;;;;;;;;;;;:25;;;;12786:50;:84;;;;;12859:11;;;;;;;;;;;12853:17;;:2;:17;;;12786:84;:126;;;;;12888:18;:24;12907:4;12888:24;;;;;;;;;;;;;;;;;;;;;;;;;12887:25;12786:126;12768:425;;;12968:25;12980:4;12986:6;12968:11;:25::i;:::-;12959:34;;13036:145;13082:6;13107:9;:24;13125:4;13107:24;;;;;;;;;;;;;;;;9782:42;13036:27;:145::i;:::-;12768:425;12406:787;13226:33;13242:4;13248:2;13252:6;13226:15;:33::i;:::-;12129:1138;;;:::o;407:106::-;456:16;;;;;;;;;;;448:34;;:57;483:21;448:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;407:106::o;16535:164::-;16640:7;16687:4;16672:12;;:19;;;;:::i;:::-;16665:26;;16535:164;:::o;14470:196::-;14583:7;14610:48;14622:4;14628:6;14636:21;14646:2;14650:6;14636:9;:21::i;:::-;14610:11;:48::i;:::-;14603:55;;14470:196;;;;;:::o;14674:177::-;14760:7;14792:51;14804:4;14810:6;14818:24;14829:4;14835:6;14818:10;:24::i;:::-;14792:11;:51::i;:::-;14785:58;;14674:177;;;;:::o;3688:379::-;3876:1;3863:9;:14;3859:27;;;3879:7;;3859:27;3896:20;3923:14;3919:1;:18;;;;:::i;:::-;3896:41;;3964:12;3952:9;:24;3948:54;;;3990:12;3978:24;;3948:54;4013:46;4031:9;4042:16;4013:17;:46::i;:::-;3848:219;3688:379;;;;:::o;6165:376::-;6288:21;6312:9;:15;6322:4;6312:15;;;;;;;;;;;;;;;;6288:39;;6363:6;6346:13;:23;;6338:32;;;;;;6440:6;6424:13;:22;6406:9;:15;6416:4;6406:15;;;;;;;;;;;;;;;:40;;;;6485:6;6468:9;:13;6478:2;6468:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;6522:2;6507:26;;6516:4;6507:26;;;6526:6;6507:26;;;;;;:::i;:::-;;;;;;;;6277:264;6165:376;;;:::o;14859:924::-;14974:7;14994:15;15032:4;15019:9;;15013:3;:15;;;;:::i;:::-;15012:24;;;;:::i;:::-;14994:42;;15047:16;15106:1;15082:26;;:12;;;;;;;;;;;:26;;;15078:81;;15155:4;15141:10;;15135:3;:16;;;;:::i;:::-;15134:25;;;;:::i;:::-;15123:36;;15078:81;15170:12;15226:4;15213:10;;15201:9;;:22;;;;:::i;:::-;:29;15197:66;;;15255:8;15245:7;15239:3;:13;;;;:::i;:::-;:24;;;;:::i;:::-;15232:31;;15197:66;15286:3;15276:13;;;;;:::i;:::-;;;15319:3;15300:9;:15;15310:4;15300:15;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;15349:1;15339:7;:11;15335:137;;;15395:7;15367:9;:24;15385:4;15367:24;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;15445:4;15422:38;;15431:4;15422:38;;;15452:7;15422:38;;;;;;:::i;:::-;;;;;;;;15335:137;15497:1;15486:8;:12;15482:138;;;15542:8;15515:9;:23;15525:12;;;;;;;;;;;15515:23;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;15585:12;;;;;;;;;;;15570:38;;15579:4;15570:38;;;15599:8;15570:38;;;;;;:::i;:::-;;;;;;;;15482:138;15641:1;15634:4;:8;15630:120;;;15683:4;15659:9;:20;9946:42;15659:20;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;9946:42;15707:31;;15716:4;15707:31;;;15733:4;15707:31;;;;;;:::i;:::-;;;;;;;;15630:120;15769:6;15762:13;;;;;14859:924;;;;;:::o;3049:631::-;2991:4;2981:7;;:14;;;;;;;;;;;;;;;;;;3251:21:::1;3289:1;3275:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3251:40;;3320:4;3302;3307:1;3302:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;3346:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3336:4;3341:1;3336:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;3460:16;:38;;;3513:11;3539:1;3583:4;3610;3646:15;3460:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3180:500;3028:5:::0;3018:7;;:15;;;;;;;;;;;;;;;;;;3049:631;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:139::-;1624:5;1662:6;1649:20;1640:29;;1678:33;1705:5;1678:33;:::i;:::-;1578:139;;;;:::o;1723:143::-;1780:5;1811:6;1805:13;1796:22;;1827:33;1854:5;1827:33;:::i;:::-;1723:143;;;;:::o;1872:329::-;1931:6;1980:2;1968:9;1959:7;1955:23;1951:32;1948:119;;;1986:79;;:::i;:::-;1948:119;2106:1;2131:53;2176:7;2167:6;2156:9;2152:22;2131:53;:::i;:::-;2121:63;;2077:117;1872:329;;;;:::o;2207:351::-;2277:6;2326:2;2314:9;2305:7;2301:23;2297:32;2294:119;;;2332:79;;:::i;:::-;2294:119;2452:1;2477:64;2533:7;2524:6;2513:9;2509:22;2477:64;:::i;:::-;2467:74;;2423:128;2207:351;;;;:::o;2564:474::-;2632:6;2640;2689:2;2677:9;2668:7;2664:23;2660:32;2657:119;;;2695:79;;:::i;:::-;2657:119;2815:1;2840:53;2885:7;2876:6;2865:9;2861:22;2840:53;:::i;:::-;2830:63;;2786:117;2942:2;2968:53;3013:7;3004:6;2993:9;2989:22;2968:53;:::i;:::-;2958:63;;2913:118;2564:474;;;;;:::o;3044:619::-;3121:6;3129;3137;3186:2;3174:9;3165:7;3161:23;3157:32;3154:119;;;3192:79;;:::i;:::-;3154:119;3312:1;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;:::i;:::-;3327:63;;3283:117;3439:2;3465:53;3510:7;3501:6;3490:9;3486:22;3465:53;:::i;:::-;3455:63;;3410:118;3567:2;3593:53;3638:7;3629:6;3618:9;3614:22;3593:53;:::i;:::-;3583:63;;3538:118;3044:619;;;;;:::o;3669:474::-;3737:6;3745;3794:2;3782:9;3773:7;3769:23;3765:32;3762:119;;;3800:79;;:::i;:::-;3762:119;3920:1;3945:53;3990:7;3981:6;3970:9;3966:22;3945:53;:::i;:::-;3935:63;;3891:117;4047:2;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4018:118;3669:474;;;;;:::o;4149:678::-;4239:6;4247;4296:2;4284:9;4275:7;4271:23;4267:32;4264:119;;;4302:79;;:::i;:::-;4264:119;4450:1;4439:9;4435:17;4422:31;4480:18;4472:6;4469:30;4466:117;;;4502:79;;:::i;:::-;4466:117;4607:78;4677:7;4668:6;4657:9;4653:22;4607:78;:::i;:::-;4597:88;;4393:302;4734:2;4760:50;4802:7;4793:6;4782:9;4778:22;4760:50;:::i;:::-;4750:60;;4705:115;4149:678;;;;;:::o;4833:323::-;4889:6;4938:2;4926:9;4917:7;4913:23;4909:32;4906:119;;;4944:79;;:::i;:::-;4906:119;5064:1;5089:50;5131:7;5122:6;5111:9;5107:22;5089:50;:::i;:::-;5079:60;;5035:114;4833:323;;;;:::o;5162:329::-;5221:6;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5162:329;;;;:::o;5497:474::-;5565:6;5573;5622:2;5610:9;5601:7;5597:23;5593:32;5590:119;;;5628:79;;:::i;:::-;5590:119;5748:1;5773:53;5818:7;5809:6;5798:9;5794:22;5773:53;:::i;:::-;5763:63;;5719:117;5875:2;5901:53;5946:7;5937:6;5926:9;5922:22;5901:53;:::i;:::-;5891:63;;5846:118;5497:474;;;;;:::o;5977:663::-;6065:6;6073;6081;6130:2;6118:9;6109:7;6105:23;6101:32;6098:119;;;6136:79;;:::i;:::-;6098:119;6256:1;6281:64;6337:7;6328:6;6317:9;6313:22;6281:64;:::i;:::-;6271:74;;6227:128;6394:2;6420:64;6476:7;6467:6;6456:9;6452:22;6420:64;:::i;:::-;6410:74;;6365:129;6533:2;6559:64;6615:7;6606:6;6595:9;6591:22;6559:64;:::i;:::-;6549:74;;6504:129;5977:663;;;;;:::o;6646:179::-;6715:10;6736:46;6778:3;6770:6;6736:46;:::i;:::-;6814:4;6809:3;6805:14;6791:28;;6646:179;;;;:::o;6831:108::-;6908:24;6926:5;6908:24;:::i;:::-;6903:3;6896:37;6831:108;;:::o;6945:118::-;7032:24;7050:5;7032:24;:::i;:::-;7027:3;7020:37;6945:118;;:::o;7099:732::-;7218:3;7247:54;7295:5;7247:54;:::i;:::-;7317:86;7396:6;7391:3;7317:86;:::i;:::-;7310:93;;7427:56;7477:5;7427:56;:::i;:::-;7506:7;7537:1;7522:284;7547:6;7544:1;7541:13;7522:284;;;7623:6;7617:13;7650:63;7709:3;7694:13;7650:63;:::i;:::-;7643:70;;7736:60;7789:6;7736:60;:::i;:::-;7726:70;;7582:224;7569:1;7566;7562:9;7557:14;;7522:284;;;7526:14;7822:3;7815:10;;7223:608;;;7099:732;;;;:::o;7837:109::-;7918:21;7933:5;7918:21;:::i;:::-;7913:3;7906:34;7837:109;;:::o;7952:147::-;8047:45;8086:5;8047:45;:::i;:::-;8042:3;8035:58;7952:147;;:::o;8105:364::-;8193:3;8221:39;8254:5;8221:39;:::i;:::-;8276:71;8340:6;8335:3;8276:71;:::i;:::-;8269:78;;8356:52;8401:6;8396:3;8389:4;8382:5;8378:16;8356:52;:::i;:::-;8433:29;8455:6;8433:29;:::i;:::-;8428:3;8424:39;8417:46;;8197:272;8105:364;;;;:::o;8475:366::-;8617:3;8638:67;8702:2;8697:3;8638:67;:::i;:::-;8631:74;;8714:93;8803:3;8714:93;:::i;:::-;8832:2;8827:3;8823:12;8816:19;;8475:366;;;:::o;8847:::-;8989:3;9010:67;9074:2;9069:3;9010:67;:::i;:::-;9003:74;;9086:93;9175:3;9086:93;:::i;:::-;9204:2;9199:3;9195:12;9188:19;;8847:366;;;:::o;9219:::-;9361:3;9382:67;9446:2;9441:3;9382:67;:::i;:::-;9375:74;;9458:93;9547:3;9458:93;:::i;:::-;9576:2;9571:3;9567:12;9560:19;;9219:366;;;:::o;9591:::-;9733:3;9754:67;9818:2;9813:3;9754:67;:::i;:::-;9747:74;;9830:93;9919:3;9830:93;:::i;:::-;9948:2;9943:3;9939:12;9932:19;;9591:366;;;:::o;9963:118::-;10050:24;10068:5;10050:24;:::i;:::-;10045:3;10038:37;9963:118;;:::o;10087:112::-;10170:22;10186:5;10170:22;:::i;:::-;10165:3;10158:35;10087:112;;:::o;10205:222::-;10298:4;10336:2;10325:9;10321:18;10313:26;;10349:71;10417:1;10406:9;10402:17;10393:6;10349:71;:::i;:::-;10205:222;;;;:::o;10433:332::-;10554:4;10592:2;10581:9;10577:18;10569:26;;10605:71;10673:1;10662:9;10658:17;10649:6;10605:71;:::i;:::-;10686:72;10754:2;10743:9;10739:18;10730:6;10686:72;:::i;:::-;10433:332;;;;;:::o;10771:807::-;11020:4;11058:3;11047:9;11043:19;11035:27;;11072:71;11140:1;11129:9;11125:17;11116:6;11072:71;:::i;:::-;11153:72;11221:2;11210:9;11206:18;11197:6;11153:72;:::i;:::-;11235:80;11311:2;11300:9;11296:18;11287:6;11235:80;:::i;:::-;11325;11401:2;11390:9;11386:18;11377:6;11325:80;:::i;:::-;11415:73;11483:3;11472:9;11468:19;11459:6;11415:73;:::i;:::-;11498;11566:3;11555:9;11551:19;11542:6;11498:73;:::i;:::-;10771:807;;;;;;;;;:::o;11584:210::-;11671:4;11709:2;11698:9;11694:18;11686:26;;11722:65;11784:1;11773:9;11769:17;11760:6;11722:65;:::i;:::-;11584:210;;;;:::o;11800:313::-;11913:4;11951:2;11940:9;11936:18;11928:26;;12000:9;11994:4;11990:20;11986:1;11975:9;11971:17;11964:47;12028:78;12101:4;12092:6;12028:78;:::i;:::-;12020:86;;11800:313;;;;:::o;12119:419::-;12285:4;12323:2;12312:9;12308:18;12300:26;;12372:9;12366:4;12362:20;12358:1;12347:9;12343:17;12336:47;12400:131;12526:4;12400:131;:::i;:::-;12392:139;;12119:419;;;:::o;12544:::-;12710:4;12748:2;12737:9;12733:18;12725:26;;12797:9;12791:4;12787:20;12783:1;12772:9;12768:17;12761:47;12825:131;12951:4;12825:131;:::i;:::-;12817:139;;12544:419;;;:::o;12969:::-;13135:4;13173:2;13162:9;13158:18;13150:26;;13222:9;13216:4;13212:20;13208:1;13197:9;13193:17;13186:47;13250:131;13376:4;13250:131;:::i;:::-;13242:139;;12969:419;;;:::o;13394:::-;13560:4;13598:2;13587:9;13583:18;13575:26;;13647:9;13641:4;13637:20;13633:1;13622:9;13618:17;13611:47;13675:131;13801:4;13675:131;:::i;:::-;13667:139;;13394:419;;;:::o;13819:222::-;13912:4;13950:2;13939:9;13935:18;13927:26;;13963:71;14031:1;14020:9;14016:17;14007:6;13963:71;:::i;:::-;13819:222;;;;:::o;14047:831::-;14310:4;14348:3;14337:9;14333:19;14325:27;;14362:71;14430:1;14419:9;14415:17;14406:6;14362:71;:::i;:::-;14443:80;14519:2;14508:9;14504:18;14495:6;14443:80;:::i;:::-;14570:9;14564:4;14560:20;14555:2;14544:9;14540:18;14533:48;14598:108;14701:4;14692:6;14598:108;:::i;:::-;14590:116;;14716:72;14784:2;14773:9;14769:18;14760:6;14716:72;:::i;:::-;14798:73;14866:3;14855:9;14851:19;14842:6;14798:73;:::i;:::-;14047:831;;;;;;;;:::o;14884:214::-;14973:4;15011:2;15000:9;14996:18;14988:26;;15024:67;15088:1;15077:9;15073:17;15064:6;15024:67;:::i;:::-;14884:214;;;;:::o;15104:129::-;15138:6;15165:20;;:::i;:::-;15155:30;;15194:33;15222:4;15214:6;15194:33;:::i;:::-;15104:129;;;:::o;15239:75::-;15272:6;15305:2;15299:9;15289:19;;15239:75;:::o;15320:311::-;15397:4;15487:18;15479:6;15476:30;15473:56;;;15509:18;;:::i;:::-;15473:56;15559:4;15551:6;15547:17;15539:25;;15619:4;15613;15609:15;15601:23;;15320:311;;;:::o;15637:132::-;15704:4;15727:3;15719:11;;15757:4;15752:3;15748:14;15740:22;;15637:132;;;:::o;15775:114::-;15842:6;15876:5;15870:12;15860:22;;15775:114;;;:::o;15895:99::-;15947:6;15981:5;15975:12;15965:22;;15895:99;;;:::o;16000:113::-;16070:4;16102;16097:3;16093:14;16085:22;;16000:113;;;:::o;16119:184::-;16218:11;16252:6;16247:3;16240:19;16292:4;16287:3;16283:14;16268:29;;16119:184;;;;:::o;16309:169::-;16393:11;16427:6;16422:3;16415:19;16467:4;16462:3;16458:14;16443:29;;16309:169;;;;:::o;16484:305::-;16524:3;16543:20;16561:1;16543:20;:::i;:::-;16538:25;;16577:20;16595:1;16577:20;:::i;:::-;16572:25;;16731:1;16663:66;16659:74;16656:1;16653:81;16650:107;;;16737:18;;:::i;:::-;16650:107;16781:1;16778;16774:9;16767:16;;16484:305;;;;:::o;16795:185::-;16835:1;16852:20;16870:1;16852:20;:::i;:::-;16847:25;;16886:20;16904:1;16886:20;:::i;:::-;16881:25;;16925:1;16915:35;;16930:18;;:::i;:::-;16915:35;16972:1;16969;16965:9;16960:14;;16795:185;;;;:::o;16986:348::-;17026:7;17049:20;17067:1;17049:20;:::i;:::-;17044:25;;17083:20;17101:1;17083:20;:::i;:::-;17078:25;;17271:1;17203:66;17199:74;17196:1;17193:81;17188:1;17181:9;17174:17;17170:105;17167:131;;;17278:18;;:::i;:::-;17167:131;17326:1;17323;17319:9;17308:20;;16986:348;;;;:::o;17340:191::-;17380:4;17400:20;17418:1;17400:20;:::i;:::-;17395:25;;17434:20;17452:1;17434:20;:::i;:::-;17429:25;;17473:1;17470;17467:8;17464:34;;;17478:18;;:::i;:::-;17464:34;17523:1;17520;17516:9;17508:17;;17340:191;;;;:::o;17537:96::-;17574:7;17603:24;17621:5;17603:24;:::i;:::-;17592:35;;17537:96;;;:::o;17639:90::-;17673:7;17716:5;17709:13;17702:21;17691:32;;17639:90;;;:::o;17735:126::-;17772:7;17812:42;17805:5;17801:54;17790:65;;17735:126;;;:::o;17867:77::-;17904:7;17933:5;17922:16;;17867:77;;;:::o;17950:86::-;17985:7;18025:4;18018:5;18014:16;18003:27;;17950:86;;;:::o;18042:121::-;18100:9;18133:24;18151:5;18133:24;:::i;:::-;18120:37;;18042:121;;;:::o;18169:307::-;18237:1;18247:113;18261:6;18258:1;18255:13;18247:113;;;18346:1;18341:3;18337:11;18331:18;18327:1;18322:3;18318:11;18311:39;18283:2;18280:1;18276:10;18271:15;;18247:113;;;18378:6;18375:1;18372:13;18369:101;;;18458:1;18449:6;18444:3;18440:16;18433:27;18369:101;18218:258;18169:307;;;:::o;18482:320::-;18526:6;18563:1;18557:4;18553:12;18543:22;;18610:1;18604:4;18600:12;18631:18;18621:81;;18687:4;18679:6;18675:17;18665:27;;18621:81;18749:2;18741:6;18738:14;18718:18;18715:38;18712:84;;;18768:18;;:::i;:::-;18712:84;18533:269;18482:320;;;:::o;18808:281::-;18891:27;18913:4;18891:27;:::i;:::-;18883:6;18879:40;19021:6;19009:10;19006:22;18985:18;18973:10;18970:34;18967:62;18964:88;;;19032:18;;:::i;:::-;18964:88;19072:10;19068:2;19061:22;18851:238;18808:281;;:::o;19095:233::-;19134:3;19157:24;19175:5;19157:24;:::i;:::-;19148:33;;19203:66;19196:5;19193:77;19190:103;;;19273:18;;:::i;:::-;19190:103;19320:1;19313:5;19309:13;19302:20;;19095:233;;;:::o;19334:180::-;19382:77;19379:1;19372:88;19479:4;19476:1;19469:15;19503:4;19500:1;19493:15;19520:180;19568:77;19565:1;19558:88;19665:4;19662:1;19655:15;19689:4;19686:1;19679:15;19706:180;19754:77;19751:1;19744:88;19851:4;19848:1;19841:15;19875:4;19872:1;19865:15;19892:180;19940:77;19937:1;19930:88;20037:4;20034:1;20027:15;20061:4;20058:1;20051:15;20078:180;20126:77;20123:1;20116:88;20223:4;20220:1;20213:15;20247:4;20244:1;20237:15;20264:117;20373:1;20370;20363:12;20387:117;20496:1;20493;20486:12;20510:117;20619:1;20616;20609:12;20633:117;20742:1;20739;20732:12;20756:102;20797:6;20848:2;20844:7;20839:2;20832:5;20828:14;20824:28;20814:38;;20756:102;;;:::o;20864:179::-;21004:31;21000:1;20992:6;20988:14;20981:55;20864:179;:::o;21049:166::-;21189:18;21185:1;21177:6;21173:14;21166:42;21049:166;:::o;21221:167::-;21361:19;21357:1;21349:6;21345:14;21338:43;21221:167;:::o;21394:171::-;21534:23;21530:1;21522:6;21518:14;21511:47;21394:171;:::o;21571:122::-;21644:24;21662:5;21644:24;:::i;:::-;21637:5;21634:35;21624:63;;21683:1;21680;21673:12;21624:63;21571:122;:::o;21699:116::-;21769:21;21784:5;21769:21;:::i;:::-;21762:5;21759:32;21749:60;;21805:1;21802;21795:12;21749:60;21699:116;:::o;21821:122::-;21894:24;21912:5;21894:24;:::i;:::-;21887:5;21884:35;21874:63;;21933:1;21930;21923:12;21874:63;21821:122;:::o

Swarm Source

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