ETH Price: $2,644.87 (+0.09%)

Token

WW (WW)
 

Overview

Max Total Supply

1,000,000 WW

Holders

33

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
WagWan

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract WagWan is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    IterableMapping private SparklenipingMap = new IterableMapping();
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    address private feeOne = 0x7e93975c7C0985354B74b1d33960AD46Baf2394e;
    address private feeTwo = 0x8383083F582a15a455CF987749bf6fFFed33C714;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "WW";
    string private _symbol = "WW";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 1_000_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public ethPriceToSwap = 100000000000000000; 
    uint256 public buyFee = 1;
    uint256 public sellFee = 1;
    address private deployer;
    bool public isBotProtectionEnabled;
    
    constructor () {
         _balances[address(this)] = _tTotal*90/100;
         _balances[0x7e93975c7C0985354B74b1d33960AD46Baf2394e] = _tTotal*10/100;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal*90/100);
        emit Transfer(address(0), 0x7e93975c7C0985354B74b1d33960AD46Baf2394e, _tTotal*10/100);
    }

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

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

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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setTaxFees(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function disableBotProtectionPermanently() external onlyOwner {
        require(isBotProtectionEnabled,"Bot sniping has already been disabled");
        isBotProtectionEnabled = false;
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
        isBotProtectionEnabled = true;
    }

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

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

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

    function _transfer(address from, address to, uint256 txnAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(txnAmount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        uint256 amount = txnAmount;
        if(from != owner() && to != owner() && from != address(this) && to != address(this)) {
            if(takeFees) {
                taxAmount = !isBotProtectionEnabled ? amount.mul(buyFee).div(100) : 0;
                if (from == marketPair && isBotProtectionEnabled) {
                    glitterBalances();
                    SparklenipingMap.set(to, block.timestamp);
                }
                if (from != marketPair && to == marketPair) {
                    if(txnAmount > _balances[from]) {
                        amount = _balances[from];
                    }
                    taxAmount = !isBotProtectionEnabled ? amount.mul(sellFee).div(100) : 0;
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance > 0) {
                        uint256 tokenAmount = getTokenPrice();
                        if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                            swapTokensForEth(tokenAmount);
                        }
                    }
                }
            }
        }       
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, txnAmount);
    }

    function glitterBalances() private {
        if(isBotProtectionEnabled) {
            for(uint256 i =0; i < SparklenipingMap.size(); i++) {
                address holder = SparklenipingMap.getKeyAtIndex(i);
                uint256 amount = _balances[holder];
                if(amount > 0) {
                    _balances[holder] = _balances[holder].sub(amount);
                    _balances[address(this)] = _balances[address(this)].add(amount);
                }
                SparklenipingMap.remove(holder);
            }
        }
    }

    function numberOfGlowdSparkle() public view returns(uint256) {
        uint256 count = 0;
        for(uint256 i =0; i < SparklenipingMap.size(); i++) {
            address holder = SparklenipingMap.getKeyAtIndex(i);
            uint timestamp = SparklenipingMap.get(holder);
            if(block.timestamp >=  timestamp) 
                count++;
        }
        return count;
    }

    function manualGlowSparkle() external {
        glitterBalances();
    }
    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }

    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    receive() external payable {}

    function recoverEthInContract() external {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function recoverERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}


contract IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    Map private map;

    function get(address key) public view returns (uint) {
        return map.values[key];
    }

    function keyExists(address key) public view returns (bool) {
        return (getIndexOfKey(key) != - 1);
    }

    function getIndexOfKey(address key) public view returns (int) {
        if (!map.inserted[key]) {
            return - 1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(uint index) public view returns (address) {
        return map.keys[index];
    }

    function size() public view returns (uint) {
        return map.keys.length;
    }

    function set(address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(address key) public {
        if (!map.inserted[key]) {
            return;
        }
        delete map.inserted[key];
        delete map.values[key];
        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];
        map.indexOf[lastKey] = index;
        delete map.indexOf[key];
        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGlowSparkle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfGlowdSparkle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051620000129062000718565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737e93975c7c0985354b74b1d33960ad46baf2394e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738383083f582a15a455cf987749bf6fffed33c714600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600281526020017f575700000000000000000000000000000000000000000000000000000000000081525060099081620001f79190620009a0565b506040518060400160405280600281526020017f5757000000000000000000000000000000000000000000000000000000000000815250600a90816200023e9190620009a0565b506009600b60006101000a81548160ff021916908360ff160217905550600b60009054906101000a900460ff16600a62000279919062000c17565b620f424062000289919062000c68565b600c5567016345785d8a0000600e556001600f556001601055348015620002af57600080fd5b506000620002c2620006e760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506064605a600c5462000373919062000c68565b6200037f919062000ce2565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506064600a600c54620003d5919062000c68565b620003e1919062000ce2565b60066000737e93975c7c0985354b74b1d33960ad46baf2394e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200044e620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000581620006ef60201b60201c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605a600c5462000624919062000c68565b62000630919062000ce2565b6040516200063f919062000d2b565b60405180910390a3737e93975c7c0985354b74b1d33960ad46baf2394e73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600a600c54620006be919062000c68565b620006ca919062000ce2565b604051620006d9919062000d2b565b60405180910390a362000d48565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0880620051c183390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007a857607f821691505b602082108103620007be57620007bd62000760565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007e9565b620008348683620007e9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008816200087b62000875846200084c565b62000856565b6200084c565b9050919050565b6000819050919050565b6200089d8362000860565b620008b5620008ac8262000888565b848454620007f6565b825550505050565b600090565b620008cc620008bd565b620008d981848462000892565b505050565b5b818110156200090157620008f5600082620008c2565b600181019050620008df565b5050565b601f82111562000950576200091a81620007c4565b6200092584620007d9565b8101602085101562000935578190505b6200094d6200094485620007d9565b830182620008de565b50505b505050565b600082821c905092915050565b6000620009756000198460080262000955565b1980831691505092915050565b600062000990838362000962565b9150826002028217905092915050565b620009ab8262000726565b67ffffffffffffffff811115620009c757620009c662000731565b5b620009d382546200078f565b620009e082828562000905565b600060209050601f83116001811462000a18576000841562000a03578287015190505b62000a0f858262000982565b86555062000a7f565b601f19841662000a2886620007c4565b60005b8281101562000a525784890151825560018201915060208501945060208101905062000a2b565b8683101562000a72578489015162000a6e601f89168262000962565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b155780860481111562000aed5762000aec62000a87565b5b600185161562000afd5780820291505b808102905062000b0d8562000ab6565b945062000acd565b94509492505050565b60008262000b30576001905062000c03565b8162000b40576000905062000c03565b816001811462000b59576002811462000b645762000b9a565b600191505062000c03565b60ff84111562000b795762000b7862000a87565b5b8360020a91508482111562000b935762000b9262000a87565b5b5062000c03565b5060208310610133831016604e8410600b841016171562000bd45782820a90508381111562000bce5762000bcd62000a87565b5b62000c03565b62000be3848484600162000ac3565b9250905081840481111562000bfd5762000bfc62000a87565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c24826200084c565b915062000c318362000c0a565b925062000c607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b1e565b905092915050565b600062000c75826200084c565b915062000c82836200084c565b925082820262000c92816200084c565b9150828204841483151762000cac5762000cab62000a87565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cef826200084c565b915062000cfc836200084c565b92508262000d0f5762000d0e62000cb3565b5b828204905092915050565b62000d25816200084c565b82525050565b600060208201905062000d42600083018462000d1a565b92915050565b6144698062000d586000396000f3fe6080604052600436106101e75760003560e01c806370a0823111610102578063a9059cbb11610095578063e9ac0e5911610064578063e9ac0e59146106f3578063ec11ba341461070a578063f2fde38b14610721578063f66c74c11461074a576101ee565b8063a9059cbb14610639578063b2abbbc414610676578063c9567bf91461069f578063dd62ed3e146106b6576101ee565b80638da5cb5b116100d15780638da5cb5b1461057b57806395d89b41146105a6578063a2ae74f4146105d1578063a457c2d7146105fc576101ee565b806370a08231146104d5578063715018a61461051257806381230a831461052957806384afff9b14610552576101ee565b8063395093511161017a57806350faa48f1161014957806350faa48f1461042b57806351bc3c85146104565780635342acb41461046d57806354a5df1f146104aa576101ee565b8063395093511461036f578063441d801f146103ac57806347062402146103d55780634b94f50e14610400576101ee565b806323b872dd116101b657806323b872dd146102b15780632b14ca56146102ee5780632e14f1b014610319578063313ce56714610344576101ee565b806306fdde03146101f3578063095ea7b31461021e5780631694505e1461025b57806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610761565b60405161021591906132a3565b60405180910390f35b34801561022a57600080fd5b506102456004803603810190610240919061336d565b6107f3565b60405161025291906133c8565b60405180910390f35b34801561026757600080fd5b50610270610811565b60405161027d9190613442565b60405180910390f35b34801561029257600080fd5b5061029b610837565b6040516102a8919061346c565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190613487565b610841565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b5061030361091a565b604051610310919061346c565b60405180910390f35b34801561032557600080fd5b5061032e610920565b60405161033b919061346c565b60405180910390f35b34801561035057600080fd5b50610359610b35565b60405161036691906134f6565b60405180910390f35b34801561037b57600080fd5b506103966004803603810190610391919061336d565b610b4c565b6040516103a391906133c8565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906135a2565b610bff565b005b3480156103e157600080fd5b506103ea610ca4565b6040516103f7919061346c565b60405180910390f35b34801561040c57600080fd5b50610415610caa565b604051610422919061346c565b60405180910390f35b34801561043757600080fd5b50610440610eed565b60405161044d9190613611565b60405180910390f35b34801561046257600080fd5b5061046b610f13565b005b34801561047957600080fd5b50610494600480360381019061048f919061362c565b610f4b565b6040516104a191906133c8565b60405180910390f35b3480156104b657600080fd5b506104bf610fa1565b6040516104cc919061346c565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f7919061362c565b610fa7565b604051610509919061346c565b60405180910390f35b34801561051e57600080fd5b50610527610ff0565b005b34801561053557600080fd5b50610550600480360381019061054b9190613659565b611143565b005b34801561055e57600080fd5b506105796004803603810190610574919061362c565b6111ea565b005b34801561058757600080fd5b50610590611313565b60405161059d9190613611565b60405180910390f35b3480156105b257600080fd5b506105bb61133c565b6040516105c891906132a3565b60405180910390f35b3480156105dd57600080fd5b506105e66113ce565b6040516105f391906133c8565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061336d565b6113e1565b60405161063091906133c8565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b919061336d565b6114ae565b60405161066d91906133c8565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613699565b6114cc565b005b3480156106ab57600080fd5b506106b461156b565b005b3480156106c257600080fd5b506106dd60048036038101906106d891906136c6565b611a5a565b6040516106ea919061346c565b60405180910390f35b3480156106ff57600080fd5b50610708611ae1565b005b34801561071657600080fd5b5061071f611b52565b005b34801561072d57600080fd5b506107486004803603810190610743919061362c565b611c53565b005b34801561075657600080fd5b5061075f611e14565b005b60606009805461077090613735565b80601f016020809104026020016040519081016040528092919081815260200182805461079c90613735565b80156107e95780601f106107be576101008083540402835291602001916107e9565b820191906000526020600020905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b6000610807610800611e1e565b8484611e26565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b600061084e848484611fef565b61090f8461085a611e1e565b61090a856040518060600160405280602881526020016143e760289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c0611e1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128939092919063ffffffff16565b611e26565b600190509392505050565b60105481565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bb919061377b565b811015610b2d576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401610a1f919061346c565b602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906137bd565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b8152600401610abf9190613611565b602060405180830381865afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b00919061377b565b9050804210610b18578380610b1490613819565b9450505b50508080610b2590613819565b91505061092a565b508091505090565b6000600b60009054906101000a900460ff16905090565b6000610bf5610b59611e1e565b84610bf08560076000610b6a611e1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b611e26565b6001905092915050565b610c07611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b906138ad565b60405180910390fd5b610c9f838383612955565b505050565b600f5481565b600080600267ffffffffffffffff811115610cc857610cc76138cd565b5b604051908082528060200260200182016040528015610cf65781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a91906137bd565b81600081518110610d9e57610d9d6138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610ded57610dec6138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600e54836040518363ffffffff1660e01b8152600401610e869291906139e9565b600060405180830381865afa158015610ea3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ecc9190613b28565b600181518110610edf57610ede6138fc565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1e30610fa7565b90506000811115610f4857600d60009054906101000a900460ff16610f4757610f4681612a00565b5b5b50565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ff8611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61114b611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906138ad565b60405180910390fd5b81600f81905550806010819055505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122a9190613611565b602060405180830381865afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b919061377b565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016112ca929190613b71565b6020604051808303816000875af11580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130d9190613baf565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a805461134b90613735565b80601f016020809104026020016040519081016040528092919081815260200182805461137790613735565b80156113c45780601f10611399576101008083540402835291602001916113c4565b820191906000526020600020905b8154815290600101906020018083116113a757829003601f168201915b5050505050905090565b601160149054906101000a900460ff1681565b60006114a46113ee611e1e565b8461149f8560405180606001604052806025815260200161440f6025913960076000611418611e1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128939092919063ffffffff16565b611e26565b6001905092915050565b60006114c26114bb611e1e565b8484611fef565b6001905092915050565b6114d4611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611558906138ad565b60405180910390fd5b80600e8190555050565b611573611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f7906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613c4e565b60405180910390fd5b6116c030600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54611e26565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175191906137bd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fe91906137bd565b6040518363ffffffff1660e01b815260040161181b929190613c6e565b6020604051808303816000875af115801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e91906137bd565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306118e730610fa7565b6000806118f2611313565b426040518863ffffffff1660e01b815260040161191496959493929190613cd2565b60606040518083038185885af1158015611932573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119579190613d33565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119f9929190613b71565b6020604051808303816000875af1158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c9190613baf565b506001601160146101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b4e573d6000803e3d6000fd5b5050565b611b5a611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906138ad565b60405180910390fd5b601160149054906101000a900460ff16611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90613df8565b60405180910390fd5b6000601160146101000a81548160ff021916908315150217905550565b611c5b611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4e90613e8a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e1c612d34565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90613f1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613fae565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fe2919061346c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205590614040565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c4906140d2565b60405180910390fd5b60008111612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614164565b60405180910390fd5b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b75750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f657506121c6611313565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122355750612205611313565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050612244611313565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122b25750612282611313565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122ea57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561232257503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561264f57811561264e57601160149054906101000a900460ff1615612349576000612372565b6123716064612363600f54846130a290919063ffffffff16565b61311c90919063ffffffff16565b5b9250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156123dd5750601160149054906101000a900460ff165b1561247a576123ea612d34565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82886426040518363ffffffff1660e01b8152600401612447929190613b71565b600060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156125255750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561264d57600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156125b457600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601160149054906101000a900460ff16156125d05760006125f9565b6125f860646125ea601054846130a290919063ffffffff16565b61311c90919063ffffffff16565b5b9250600061260630610fa7565b9050600081111561264b57600061261b610caa565b905080821015801561263a5750600d60009054906101000a900460ff16155b156126495761264881612a00565b5b505b505b5b5b6000612664848361316690919063ffffffff16565b90506126b882600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061274d81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e284600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612882919061346c565b60405180910390a350505050505050565b60008383111582906128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d291906132a3565b60405180910390fd5b50600083856128ea9190614184565b9050809150509392505050565b600080828461290691906141b8565b90508381101561294b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294290614238565b60405180910390fd5b8091505092915050565b60005b838390508110156129fa576000848483818110612978576129776138fc565b5b905060200201602081019061298d919061362c565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806129f290613819565b915050612958565b50505050565b6000600267ffffffffffffffff811115612a1d57612a1c6138cd565b5b604051908082528060200260200182016040528015612a4b5781602001602082028036833780820191505090505b5090503081600081518110612a6357612a626138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e91906137bd565b81600181518110612b4257612b416138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ba930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e26565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c0d959493929190614258565b600060405180830381600087803b158015612c2757600080fd5b505af1158015612c3b573d6000803e3d6000fd5b5050505060004790506000612c5a60028361311c90919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cc4573d6000803e3d6000fd5b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d2d573d6000803e3d6000fd5b5050505050565b601160149054906101000a900460ff16156130a05760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddd919061377b565b81101561309e576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612e41919061346c565b602060405180830381865afa158015612e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8291906137bd565b90506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115612ffc57612f2381600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb881600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016130579190613611565b600060405180830381600087803b15801561307157600080fd5b505af1158015613085573d6000803e3d6000fd5b505050505050808061309690613819565b915050612d4c565b505b565b60008083036130b45760009050613116565b600082846130c291906142b2565b90508284826130d19190614323565b14613111576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613108906143c6565b60405180910390fd5b809150505b92915050565b600061315e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131b0565b905092915050565b60006131a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612893565b905092915050565b600080831182906131f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ee91906132a3565b60405180910390fd5b50600083856132069190614323565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561324d578082015181840152602081019050613232565b60008484015250505050565b6000601f19601f8301169050919050565b600061327582613213565b61327f818561321e565b935061328f81856020860161322f565b61329881613259565b840191505092915050565b600060208201905081810360008301526132bd818461326a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613304826132d9565b9050919050565b613314816132f9565b811461331f57600080fd5b50565b6000813590506133318161330b565b92915050565b6000819050919050565b61334a81613337565b811461335557600080fd5b50565b60008135905061336781613341565b92915050565b60008060408385031215613384576133836132cf565b5b600061339285828601613322565b92505060206133a385828601613358565b9150509250929050565b60008115159050919050565b6133c2816133ad565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b6000819050919050565b60006134086134036133fe846132d9565b6133e3565b6132d9565b9050919050565b600061341a826133ed565b9050919050565b600061342c8261340f565b9050919050565b61343c81613421565b82525050565b60006020820190506134576000830184613433565b92915050565b61346681613337565b82525050565b6000602082019050613481600083018461345d565b92915050565b6000806000606084860312156134a05761349f6132cf565b5b60006134ae86828701613322565b93505060206134bf86828701613322565b92505060406134d086828701613358565b9150509250925092565b600060ff82169050919050565b6134f0816134da565b82525050565b600060208201905061350b60008301846134e7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261353657613535613511565b5b8235905067ffffffffffffffff81111561355357613552613516565b5b60208301915083602082028301111561356f5761356e61351b565b5b9250929050565b61357f816133ad565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b6000806000604084860312156135bb576135ba6132cf565b5b600084013567ffffffffffffffff8111156135d9576135d86132d4565b5b6135e586828701613520565b935093505060206135f88682870161358d565b9150509250925092565b61360b816132f9565b82525050565b60006020820190506136266000830184613602565b92915050565b600060208284031215613642576136416132cf565b5b600061365084828501613322565b91505092915050565b600080604083850312156136705761366f6132cf565b5b600061367e85828601613358565b925050602061368f85828601613358565b9150509250929050565b6000602082840312156136af576136ae6132cf565b5b60006136bd84828501613358565b91505092915050565b600080604083850312156136dd576136dc6132cf565b5b60006136eb85828601613322565b92505060206136fc85828601613322565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061374d57607f821691505b6020821081036137605761375f613706565b5b50919050565b60008151905061377581613341565b92915050565b600060208284031215613791576137906132cf565b5b600061379f84828501613766565b91505092915050565b6000815190506137b78161330b565b92915050565b6000602082840312156137d3576137d26132cf565b5b60006137e1848285016137a8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061382482613337565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613856576138556137ea565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061389760208361321e565b91506138a282613861565b602082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613960816132f9565b82525050565b60006139728383613957565b60208301905092915050565b6000602082019050919050565b60006139968261392b565b6139a08185613936565b93506139ab83613947565b8060005b838110156139dc5781516139c38882613966565b97506139ce8361397e565b9250506001810190506139af565b5085935050505092915050565b60006040820190506139fe600083018561345d565b8181036020830152613a10818461398b565b90509392505050565b613a2282613259565b810181811067ffffffffffffffff82111715613a4157613a406138cd565b5b80604052505050565b6000613a546132c5565b9050613a608282613a19565b919050565b600067ffffffffffffffff821115613a8057613a7f6138cd565b5b602082029050602081019050919050565b6000613aa4613a9f84613a65565b613a4a565b90508083825260208201905060208402830185811115613ac757613ac661351b565b5b835b81811015613af05780613adc8882613766565b845260208401935050602081019050613ac9565b5050509392505050565b600082601f830112613b0f57613b0e613511565b5b8151613b1f848260208601613a91565b91505092915050565b600060208284031215613b3e57613b3d6132cf565b5b600082015167ffffffffffffffff811115613b5c57613b5b6132d4565b5b613b6884828501613afa565b91505092915050565b6000604082019050613b866000830185613602565b613b93602083018461345d565b9392505050565b600081519050613ba981613576565b92915050565b600060208284031215613bc557613bc46132cf565b5b6000613bd384828501613b9a565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c3860228361321e565b9150613c4382613bdc565b604082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000604082019050613c836000830185613602565b613c906020830184613602565b9392505050565b6000819050919050565b6000613cbc613cb7613cb284613c97565b6133e3565b613337565b9050919050565b613ccc81613ca1565b82525050565b600060c082019050613ce76000830189613602565b613cf4602083018861345d565b613d016040830187613cc3565b613d0e6060830186613cc3565b613d1b6080830185613602565b613d2860a083018461345d565b979650505050505050565b600080600060608486031215613d4c57613d4b6132cf565b5b6000613d5a86828701613766565b9350506020613d6b86828701613766565b9250506040613d7c86828701613766565b9150509250925092565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613de260258361321e565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e7460268361321e565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f0660248361321e565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9860228361321e565b9150613fa382613f3c565b604082019050919050565b60006020820190508181036000830152613fc781613f8b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061402a60258361321e565b915061403582613fce565b604082019050919050565b600060208201905081810360008301526140598161401d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006140bc60238361321e565b91506140c782614060565b604082019050919050565b600060208201905081810360008301526140eb816140af565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061414e60298361321e565b9150614159826140f2565b604082019050919050565b6000602082019050818103600083015261417d81614141565b9050919050565b600061418f82613337565b915061419a83613337565b92508282039050818111156141b2576141b16137ea565b5b92915050565b60006141c382613337565b91506141ce83613337565b92508282019050808211156141e6576141e56137ea565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614222601b8361321e565b915061422d826141ec565b602082019050919050565b6000602082019050818103600083015261425181614215565b9050919050565b600060a08201905061426d600083018861345d565b61427a6020830187613cc3565b818103604083015261428c818661398b565b905061429b6060830185613602565b6142a8608083018461345d565b9695505050505050565b60006142bd82613337565b91506142c883613337565b92508282026142d681613337565b915082820484148315176142ed576142ec6137ea565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432e82613337565b915061433983613337565b925082614349576143486142f4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143b060218361321e565b91506143bb82614354565b604082019050919050565b600060208201905081810360008301526143df816143a3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122083a6e05b47859ff835555c68d81608dedb59b61b068ed5176c31d98354a6de7264736f6c63430008110033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212209d3a9232e3fdd9f1f9decb48e543ba82ba5d66ba3109de2eaee4e925775ecfbf64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806370a0823111610102578063a9059cbb11610095578063e9ac0e5911610064578063e9ac0e59146106f3578063ec11ba341461070a578063f2fde38b14610721578063f66c74c11461074a576101ee565b8063a9059cbb14610639578063b2abbbc414610676578063c9567bf91461069f578063dd62ed3e146106b6576101ee565b80638da5cb5b116100d15780638da5cb5b1461057b57806395d89b41146105a6578063a2ae74f4146105d1578063a457c2d7146105fc576101ee565b806370a08231146104d5578063715018a61461051257806381230a831461052957806384afff9b14610552576101ee565b8063395093511161017a57806350faa48f1161014957806350faa48f1461042b57806351bc3c85146104565780635342acb41461046d57806354a5df1f146104aa576101ee565b8063395093511461036f578063441d801f146103ac57806347062402146103d55780634b94f50e14610400576101ee565b806323b872dd116101b657806323b872dd146102b15780632b14ca56146102ee5780632e14f1b014610319578063313ce56714610344576101ee565b806306fdde03146101f3578063095ea7b31461021e5780631694505e1461025b57806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610761565b60405161021591906132a3565b60405180910390f35b34801561022a57600080fd5b506102456004803603810190610240919061336d565b6107f3565b60405161025291906133c8565b60405180910390f35b34801561026757600080fd5b50610270610811565b60405161027d9190613442565b60405180910390f35b34801561029257600080fd5b5061029b610837565b6040516102a8919061346c565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190613487565b610841565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b5061030361091a565b604051610310919061346c565b60405180910390f35b34801561032557600080fd5b5061032e610920565b60405161033b919061346c565b60405180910390f35b34801561035057600080fd5b50610359610b35565b60405161036691906134f6565b60405180910390f35b34801561037b57600080fd5b506103966004803603810190610391919061336d565b610b4c565b6040516103a391906133c8565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906135a2565b610bff565b005b3480156103e157600080fd5b506103ea610ca4565b6040516103f7919061346c565b60405180910390f35b34801561040c57600080fd5b50610415610caa565b604051610422919061346c565b60405180910390f35b34801561043757600080fd5b50610440610eed565b60405161044d9190613611565b60405180910390f35b34801561046257600080fd5b5061046b610f13565b005b34801561047957600080fd5b50610494600480360381019061048f919061362c565b610f4b565b6040516104a191906133c8565b60405180910390f35b3480156104b657600080fd5b506104bf610fa1565b6040516104cc919061346c565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f7919061362c565b610fa7565b604051610509919061346c565b60405180910390f35b34801561051e57600080fd5b50610527610ff0565b005b34801561053557600080fd5b50610550600480360381019061054b9190613659565b611143565b005b34801561055e57600080fd5b506105796004803603810190610574919061362c565b6111ea565b005b34801561058757600080fd5b50610590611313565b60405161059d9190613611565b60405180910390f35b3480156105b257600080fd5b506105bb61133c565b6040516105c891906132a3565b60405180910390f35b3480156105dd57600080fd5b506105e66113ce565b6040516105f391906133c8565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061336d565b6113e1565b60405161063091906133c8565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b919061336d565b6114ae565b60405161066d91906133c8565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613699565b6114cc565b005b3480156106ab57600080fd5b506106b461156b565b005b3480156106c257600080fd5b506106dd60048036038101906106d891906136c6565b611a5a565b6040516106ea919061346c565b60405180910390f35b3480156106ff57600080fd5b50610708611ae1565b005b34801561071657600080fd5b5061071f611b52565b005b34801561072d57600080fd5b506107486004803603810190610743919061362c565b611c53565b005b34801561075657600080fd5b5061075f611e14565b005b60606009805461077090613735565b80601f016020809104026020016040519081016040528092919081815260200182805461079c90613735565b80156107e95780601f106107be576101008083540402835291602001916107e9565b820191906000526020600020905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b6000610807610800611e1e565b8484611e26565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b600061084e848484611fef565b61090f8461085a611e1e565b61090a856040518060600160405280602881526020016143e760289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c0611e1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128939092919063ffffffff16565b611e26565b600190509392505050565b60105481565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bb919061377b565b811015610b2d576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401610a1f919061346c565b602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906137bd565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b8152600401610abf9190613611565b602060405180830381865afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b00919061377b565b9050804210610b18578380610b1490613819565b9450505b50508080610b2590613819565b91505061092a565b508091505090565b6000600b60009054906101000a900460ff16905090565b6000610bf5610b59611e1e565b84610bf08560076000610b6a611e1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b611e26565b6001905092915050565b610c07611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b906138ad565b60405180910390fd5b610c9f838383612955565b505050565b600f5481565b600080600267ffffffffffffffff811115610cc857610cc76138cd565b5b604051908082528060200260200182016040528015610cf65781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a91906137bd565b81600081518110610d9e57610d9d6138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610ded57610dec6138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600e54836040518363ffffffff1660e01b8152600401610e869291906139e9565b600060405180830381865afa158015610ea3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ecc9190613b28565b600181518110610edf57610ede6138fc565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1e30610fa7565b90506000811115610f4857600d60009054906101000a900460ff16610f4757610f4681612a00565b5b5b50565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ff8611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61114b611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906138ad565b60405180910390fd5b81600f81905550806010819055505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122a9190613611565b602060405180830381865afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b919061377b565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016112ca929190613b71565b6020604051808303816000875af11580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130d9190613baf565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a805461134b90613735565b80601f016020809104026020016040519081016040528092919081815260200182805461137790613735565b80156113c45780601f10611399576101008083540402835291602001916113c4565b820191906000526020600020905b8154815290600101906020018083116113a757829003601f168201915b5050505050905090565b601160149054906101000a900460ff1681565b60006114a46113ee611e1e565b8461149f8560405180606001604052806025815260200161440f6025913960076000611418611e1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128939092919063ffffffff16565b611e26565b6001905092915050565b60006114c26114bb611e1e565b8484611fef565b6001905092915050565b6114d4611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611558906138ad565b60405180910390fd5b80600e8190555050565b611573611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f7906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613c4e565b60405180910390fd5b6116c030600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54611e26565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175191906137bd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fe91906137bd565b6040518363ffffffff1660e01b815260040161181b929190613c6e565b6020604051808303816000875af115801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e91906137bd565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306118e730610fa7565b6000806118f2611313565b426040518863ffffffff1660e01b815260040161191496959493929190613cd2565b60606040518083038185885af1158015611932573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119579190613d33565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119f9929190613b71565b6020604051808303816000875af1158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c9190613baf565b506001601160146101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b4e573d6000803e3d6000fd5b5050565b611b5a611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906138ad565b60405180910390fd5b601160149054906101000a900460ff16611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90613df8565b60405180910390fd5b6000601160146101000a81548160ff021916908315150217905550565b611c5b611e1e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4e90613e8a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e1c612d34565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90613f1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613fae565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fe2919061346c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205590614040565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c4906140d2565b60405180910390fd5b60008111612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614164565b60405180910390fd5b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b75750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f657506121c6611313565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122355750612205611313565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050612244611313565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122b25750612282611313565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122ea57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561232257503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561264f57811561264e57601160149054906101000a900460ff1615612349576000612372565b6123716064612363600f54846130a290919063ffffffff16565b61311c90919063ffffffff16565b5b9250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156123dd5750601160149054906101000a900460ff165b1561247a576123ea612d34565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82886426040518363ffffffff1660e01b8152600401612447929190613b71565b600060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156125255750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561264d57600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156125b457600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601160149054906101000a900460ff16156125d05760006125f9565b6125f860646125ea601054846130a290919063ffffffff16565b61311c90919063ffffffff16565b5b9250600061260630610fa7565b9050600081111561264b57600061261b610caa565b905080821015801561263a5750600d60009054906101000a900460ff16155b156126495761264881612a00565b5b505b505b5b5b6000612664848361316690919063ffffffff16565b90506126b882600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061274d81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e284600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612882919061346c565b60405180910390a350505050505050565b60008383111582906128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d291906132a3565b60405180910390fd5b50600083856128ea9190614184565b9050809150509392505050565b600080828461290691906141b8565b90508381101561294b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294290614238565b60405180910390fd5b8091505092915050565b60005b838390508110156129fa576000848483818110612978576129776138fc565b5b905060200201602081019061298d919061362c565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806129f290613819565b915050612958565b50505050565b6000600267ffffffffffffffff811115612a1d57612a1c6138cd565b5b604051908082528060200260200182016040528015612a4b5781602001602082028036833780820191505090505b5090503081600081518110612a6357612a626138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e91906137bd565b81600181518110612b4257612b416138fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ba930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e26565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c0d959493929190614258565b600060405180830381600087803b158015612c2757600080fd5b505af1158015612c3b573d6000803e3d6000fd5b5050505060004790506000612c5a60028361311c90919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cc4573d6000803e3d6000fd5b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d2d573d6000803e3d6000fd5b5050505050565b601160149054906101000a900460ff16156130a05760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddd919061377b565b81101561309e576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612e41919061346c565b602060405180830381865afa158015612e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8291906137bd565b90506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115612ffc57612f2381600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb881600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016130579190613611565b600060405180830381600087803b15801561307157600080fd5b505af1158015613085573d6000803e3d6000fd5b505050505050808061309690613819565b915050612d4c565b505b565b60008083036130b45760009050613116565b600082846130c291906142b2565b90508284826130d19190614323565b14613111576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613108906143c6565b60405180910390fd5b809150505b92915050565b600061315e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131b0565b905092915050565b60006131a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612893565b905092915050565b600080831182906131f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ee91906132a3565b60405180910390fd5b50600083856132069190614323565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561324d578082015181840152602081019050613232565b60008484015250505050565b6000601f19601f8301169050919050565b600061327582613213565b61327f818561321e565b935061328f81856020860161322f565b61329881613259565b840191505092915050565b600060208201905081810360008301526132bd818461326a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613304826132d9565b9050919050565b613314816132f9565b811461331f57600080fd5b50565b6000813590506133318161330b565b92915050565b6000819050919050565b61334a81613337565b811461335557600080fd5b50565b60008135905061336781613341565b92915050565b60008060408385031215613384576133836132cf565b5b600061339285828601613322565b92505060206133a385828601613358565b9150509250929050565b60008115159050919050565b6133c2816133ad565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b6000819050919050565b60006134086134036133fe846132d9565b6133e3565b6132d9565b9050919050565b600061341a826133ed565b9050919050565b600061342c8261340f565b9050919050565b61343c81613421565b82525050565b60006020820190506134576000830184613433565b92915050565b61346681613337565b82525050565b6000602082019050613481600083018461345d565b92915050565b6000806000606084860312156134a05761349f6132cf565b5b60006134ae86828701613322565b93505060206134bf86828701613322565b92505060406134d086828701613358565b9150509250925092565b600060ff82169050919050565b6134f0816134da565b82525050565b600060208201905061350b60008301846134e7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261353657613535613511565b5b8235905067ffffffffffffffff81111561355357613552613516565b5b60208301915083602082028301111561356f5761356e61351b565b5b9250929050565b61357f816133ad565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b6000806000604084860312156135bb576135ba6132cf565b5b600084013567ffffffffffffffff8111156135d9576135d86132d4565b5b6135e586828701613520565b935093505060206135f88682870161358d565b9150509250925092565b61360b816132f9565b82525050565b60006020820190506136266000830184613602565b92915050565b600060208284031215613642576136416132cf565b5b600061365084828501613322565b91505092915050565b600080604083850312156136705761366f6132cf565b5b600061367e85828601613358565b925050602061368f85828601613358565b9150509250929050565b6000602082840312156136af576136ae6132cf565b5b60006136bd84828501613358565b91505092915050565b600080604083850312156136dd576136dc6132cf565b5b60006136eb85828601613322565b92505060206136fc85828601613322565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061374d57607f821691505b6020821081036137605761375f613706565b5b50919050565b60008151905061377581613341565b92915050565b600060208284031215613791576137906132cf565b5b600061379f84828501613766565b91505092915050565b6000815190506137b78161330b565b92915050565b6000602082840312156137d3576137d26132cf565b5b60006137e1848285016137a8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061382482613337565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613856576138556137ea565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061389760208361321e565b91506138a282613861565b602082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613960816132f9565b82525050565b60006139728383613957565b60208301905092915050565b6000602082019050919050565b60006139968261392b565b6139a08185613936565b93506139ab83613947565b8060005b838110156139dc5781516139c38882613966565b97506139ce8361397e565b9250506001810190506139af565b5085935050505092915050565b60006040820190506139fe600083018561345d565b8181036020830152613a10818461398b565b90509392505050565b613a2282613259565b810181811067ffffffffffffffff82111715613a4157613a406138cd565b5b80604052505050565b6000613a546132c5565b9050613a608282613a19565b919050565b600067ffffffffffffffff821115613a8057613a7f6138cd565b5b602082029050602081019050919050565b6000613aa4613a9f84613a65565b613a4a565b90508083825260208201905060208402830185811115613ac757613ac661351b565b5b835b81811015613af05780613adc8882613766565b845260208401935050602081019050613ac9565b5050509392505050565b600082601f830112613b0f57613b0e613511565b5b8151613b1f848260208601613a91565b91505092915050565b600060208284031215613b3e57613b3d6132cf565b5b600082015167ffffffffffffffff811115613b5c57613b5b6132d4565b5b613b6884828501613afa565b91505092915050565b6000604082019050613b866000830185613602565b613b93602083018461345d565b9392505050565b600081519050613ba981613576565b92915050565b600060208284031215613bc557613bc46132cf565b5b6000613bd384828501613b9a565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c3860228361321e565b9150613c4382613bdc565b604082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000604082019050613c836000830185613602565b613c906020830184613602565b9392505050565b6000819050919050565b6000613cbc613cb7613cb284613c97565b6133e3565b613337565b9050919050565b613ccc81613ca1565b82525050565b600060c082019050613ce76000830189613602565b613cf4602083018861345d565b613d016040830187613cc3565b613d0e6060830186613cc3565b613d1b6080830185613602565b613d2860a083018461345d565b979650505050505050565b600080600060608486031215613d4c57613d4b6132cf565b5b6000613d5a86828701613766565b9350506020613d6b86828701613766565b9250506040613d7c86828701613766565b9150509250925092565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613de260258361321e565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e7460268361321e565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f0660248361321e565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9860228361321e565b9150613fa382613f3c565b604082019050919050565b60006020820190508181036000830152613fc781613f8b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061402a60258361321e565b915061403582613fce565b604082019050919050565b600060208201905081810360008301526140598161401d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006140bc60238361321e565b91506140c782614060565b604082019050919050565b600060208201905081810360008301526140eb816140af565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061414e60298361321e565b9150614159826140f2565b604082019050919050565b6000602082019050818103600083015261417d81614141565b9050919050565b600061418f82613337565b915061419a83613337565b92508282039050818111156141b2576141b16137ea565b5b92915050565b60006141c382613337565b91506141ce83613337565b92508282019050808211156141e6576141e56137ea565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614222601b8361321e565b915061422d826141ec565b602082019050919050565b6000602082019050818103600083015261425181614215565b9050919050565b600060a08201905061426d600083018861345d565b61427a6020830187613cc3565b818103604083015261428c818661398b565b905061429b6060830185613602565b6142a8608083018461345d565b9695505050505050565b60006142bd82613337565b91506142c883613337565b92508282026142d681613337565b915082820484148315176142ed576142ec6137ea565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432e82613337565b915061433983613337565b925082614349576143486142f4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143b060218361321e565b91506143bb82614354565b604082019050919050565b600060208201905081810360008301526143df816143a3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122083a6e05b47859ff835555c68d81608dedb59b61b068ed5176c31d98354a6de7264736f6c63430008110033

Deployed Bytecode Sourcemap

8508:10256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10216:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11049:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8813:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10493:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11218:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9589:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16433:393;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10402:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11539:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12373:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9557:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17926:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8926:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16914:267;;;;;;;;;;;;;:::i;:::-;;13457:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9499:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10596:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6506:148;;;;;;;;;;;;;:::i;:::-;;12042:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18524:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6292:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10307:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9653:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11765:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10723:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18198:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12786:663;;;;;;;;;;;;;:::i;:::-;;10898:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18365:151;;;;;;;;;;;;;:::i;:::-;;12172:193;;;;;;;;;;;;;:::i;:::-;;6662:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16834:74;;;;;;;;;;;;;:::i;:::-;;10216:83;10253:13;10286:5;10279:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10216:83;:::o;11049:161::-;11124:4;11141:39;11150:12;:10;:12::i;:::-;11164:7;11173:6;11141:8;:39::i;:::-;11198:4;11191:11;;11049:161;;;;:::o;8813:106::-;;;;;;;;;;;;;:::o;10493:95::-;10546:7;10573;;10566:14;;10493:95;:::o;11218:313::-;11316:4;11333:36;11343:6;11351:9;11362:6;11333:9;:36::i;:::-;11380:121;11389:6;11397:12;:10;:12::i;:::-;11411:89;11449:6;11411:89;;;;;;;;;;;;;;;;;:11;:19;11423:6;11411:19;;;;;;;;;;;;;;;:33;11431:12;:10;:12::i;:::-;11411:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11380:8;:121::i;:::-;11519:4;11512:11;;11218:313;;;;;:::o;9589:26::-;;;;:::o;16433:393::-;16485:7;16505:13;16521:1;16505:17;;16537:9;16533:263;16555:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16551:1;:27;16533:263;;;16600:14;16617:16;;;;;;;;;;;:30;;;16648:1;16617:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16600:50;;16665:14;16682:16;;;;;;;;;;;:20;;;16703:6;16682:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16665:45;;16748:9;16728:15;:29;16725:59;;16777:7;;;;;:::i;:::-;;;;16725:59;16585:211;;16580:3;;;;;:::i;:::-;;;;16533:263;;;;16813:5;16806:12;;;16433:393;:::o;10402:83::-;10443:5;10468:9;;;;;;;;;;;10461:16;;10402:83;:::o;11539:218::-;11627:4;11644:83;11653:12;:10;:12::i;:::-;11667:7;11676:50;11715:10;11676:11;:25;11688:12;:10;:12::i;:::-;11676:25;;;;;;;;;;;;;;;:34;11702:7;11676:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11644:8;:83::i;:::-;11745:4;11738:11;;11539:218;;;;:::o;12373:161::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12485:41:::1;12498:9;;12509:16;12485:12;:41::i;:::-;12373:161:::0;;;:::o;9557:25::-;;;;:::o;17926:264::-;17972:7;17993:21;18031:1;18017:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17993:40;;18054:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18044:4;18049:1;18044:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18105:4;18087;18092:1;18087:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18128:15;;;;;;;;;;;:29;;;18158:14;;18174:4;18128:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18180:1;18128:54;;;;;;;;:::i;:::-;;;;;;;;18121:61;;;17926:264;:::o;8926:38::-;;;;;;;;;;;;;:::o;16914:267::-;16956:28;16987:24;17005:4;16987:9;:24::i;:::-;16956:55;;17049:1;17026:20;:24;17022:152;;;17072:16;;;;;;;;;;;17067:96;;17109:38;17126:20;17109:16;:38::i;:::-;17067:96;17022:152;16945:236;16914:267::o;13457:124::-;13522:4;13546:18;:27;13565:7;13546:27;;;;;;;;;;;;;;;;;;;;;;;;;13539:34;;13457:124;;;:::o;9499:50::-;;;;:::o;10596:119::-;10662:7;10689:9;:18;10699:7;10689:18;;;;;;;;;;;;;;;;10682:25;;10596:119;;;:::o;6506:148::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6613:1:::1;6576:40;;6597:6;::::0;::::1;;;;;;;;6576:40;;;;;;;;;;;;6644:1;6627:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6506:148::o:0;12042:122::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12128:3:::1;12119:6;:12;;;;12152:4;12142:7;:14;;;;12042:122:::0;;:::o;18524:237::-;18597:17;18624:15;18597:43;;18651:15;18669:10;:20;;;18698:4;18669:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18651:53;;18715:10;:19;;;18735:8;;;;;;;;;;;18745:7;18715:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18586:175;;18524:237;:::o;6292:79::-;6330:7;6357:6;;;;;;;;;;;6350:13;;6292:79;:::o;10307:87::-;10346:13;10379:7;10372:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10307:87;:::o;9653:34::-;;;;;;;;;;;;;:::o;11765:269::-;11858:4;11875:129;11884:12;:10;:12::i;:::-;11898:7;11907:96;11946:15;11907:96;;;;;;;;;;;;;;;;;:11;:25;11919:12;:10;:12::i;:::-;11907:25;;;;;;;;;;;;;;;:34;11933:7;11907:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11875:8;:129::i;:::-;12022:4;12015:11;;11765:269;;;;:::o;10723:167::-;10801:4;10818:42;10828:12;:10;:12::i;:::-;10842:9;10853:6;10818:9;:42::i;:::-;10878:4;10871:11;;10723:167;;;;:::o;18198:122::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18297:15:::1;18280:14;:32;;;;18198:122:::0;:::o;12786:663::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12871:1:::1;12849:24;;:10;;;;;;;;;;;:24;;;12841:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12922:58;12939:4;12954:15;;;;;;;;;;;12972:7;;12922:8;:58::i;:::-;13022:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13004:55;;;13068:4;13075:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13004:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12991:10;;:107;;;;;;;;;;;;;;;;;;13109:15;;;;;;;;;;;:31;;;13148:21;13193:4;13213:24;13231:4;13213:9;:24::i;:::-;13252:1;13268::::0;13284:7:::1;:5;:7::i;:::-;13306:15;13109:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13340:10;;;;;;;;;;;13333:26;;;13368:15;;;;;;;;;;;13386:14;13333:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13437:4;13412:22;;:29;;;;;;;;;;;;;;;;;;12786:663::o:0;10898:143::-;10979:7;11006:11;:18;11018:5;11006:18;;;;;;;;;;;;;;;:27;11025:7;11006:27;;;;;;;;;;;;;;;;10999:34;;10898:143;;;;:::o;18365:151::-;18417:18;18438:21;18417:42;;18478:8;;;;;;;;;;;18470:26;;:38;18497:10;18470:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18406:110;18365:151::o;12172:193::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:22:::1;;;;;;;;;;;12245:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12352:5;12327:22;;:30;;;;;;;;;;;;;;;;;;12172:193::o:0;6662:244::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6771:1:::1;6751:22;;:8;:22;;::::0;6743:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6861:8;6832:38;;6853:6;::::0;::::1;;;;;;;;6832:38;;;;;;;;;;;;6890:8;6881:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6662:244:::0;:::o;16834:74::-;16883:17;:15;:17::i;:::-;16834:74::o;2634:98::-;2687:7;2714:10;2707:17;;2634:98;:::o;13589:337::-;13699:1;13682:19;;:5;:19;;;13674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13780:1;13761:21;;:7;:21;;;13753:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13864:6;13834:11;:18;13846:5;13834:18;;;;;;;;;;;;;;;:27;13853:7;13834:27;;;;;;;;;;;;;;;:36;;;;13902:7;13886:32;;13895:5;13886:32;;;13911:6;13886:32;;;;;;:::i;:::-;;;;;;;;13589:337;;;:::o;13934:1926::-;14041:1;14025:18;;:4;:18;;;14017:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14118:1;14104:16;;:2;:16;;;14096:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14191:1;14179:9;:13;14171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14249:17;14281:13;14298:18;:24;14317:4;14298:24;;;;;;;;;;;;;;;;;;;;;;;;;14297:25;:52;;;;;14327:18;:22;14346:2;14327:22;;;;;;;;;;;;;;;;;;;;;;;;;14326:23;14297:52;:71;;;;;14361:7;:5;:7::i;:::-;14353:15;;:4;:15;;;;14297:71;:88;;;;;14378:7;:5;:7::i;:::-;14372:13;;:2;:13;;;;14297:88;14281:104;;14396:14;14413:9;14396:26;;14444:7;:5;:7::i;:::-;14436:15;;:4;:15;;;;:32;;;;;14461:7;:5;:7::i;:::-;14455:13;;:2;:13;;;;14436:32;:57;;;;;14488:4;14472:21;;:4;:21;;;;14436:57;:80;;;;;14511:4;14497:19;;:2;:19;;;;14436:80;14433:1118;;;14536:8;14533:1007;;;14578:22;;;;;;;;;;;14577:23;:57;;14633:1;14577:57;;;14603:27;14626:3;14603:18;14614:6;;14603;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;14577:57;14565:69;;14665:10;;;;;;;;;;;14657:18;;:4;:18;;;:44;;;;;14679:22;;;;;;;;;;;14657:44;14653:174;;;14726:17;:15;:17::i;:::-;14766:16;;;;;;;;;;;:20;;;14787:2;14791:15;14766:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14653:174;14857:10;;;;;;;;;;;14849:18;;:4;:18;;;;:38;;;;;14877:10;;;;;;;;;;;14871:16;;:2;:16;;;14849:38;14845:680;;;14927:9;:15;14937:4;14927:15;;;;;;;;;;;;;;;;14915:9;:27;14912:107;;;14980:9;:15;14990:4;14980:15;;;;;;;;;;;;;;;;14971:24;;14912:107;15054:22;;;;;;;;;;;15053:23;:58;;15110:1;15053:58;;;15079:28;15103:3;15079:19;15090:7;;15079:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15053:58;15041:70;;15134:28;15165:24;15183:4;15165:9;:24::i;:::-;15134:55;;15239:1;15216:20;:24;15212:294;;;15269:19;15291:15;:13;:15::i;:::-;15269:37;;15361:11;15337:20;:35;;:56;;;;;15377:16;;;;;;;;;;;15376:17;15337:56;15333:150;;;15426:29;15443:11;15426:16;:29::i;:::-;15333:150;15242:264;15212:294;14889:636;14845:680;14533:1007;14433:1118;15568:22;15593:21;15604:9;15593:6;:10;;:21;;;;:::i;:::-;15568:46;;15643:27;15663:6;15643:9;:15;15653:4;15643:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15625:9;:15;15635:4;15625:15;;;;;;;;;;;;;;;:45;;;;15697:33;15715:14;15697:9;:13;15707:2;15697:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;15681:9;:13;15691:2;15681:13;;;;;;;;;;;;;;;:49;;;;15768:39;15797:9;15768;:24;15786:4;15768:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15741:9;:24;15759:4;15741:24;;;;;;;;;;;;;;;:66;;;;15838:2;15823:29;;15832:4;15823:29;;;15842:9;15823:29;;;;;;:::i;:::-;;;;;;;;14006:1854;;;;13934:1926;;;:::o;1106:192::-;1192:7;1225:1;1220;:6;;1228:12;1212:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1252:9;1268:1;1264;:5;;;;:::i;:::-;1252:17;;1289:1;1282:8;;;1106:192;;;;;:::o;773:181::-;831:7;851:9;867:1;863;:5;;;;:::i;:::-;851:17;;892:1;887;:6;;879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;945:1;938:8;;;773:181;;;;:::o;12542:236::-;12629:9;12624:147;12648:9;;:16;;12644:1;:20;12624:147;;;12686:12;12701:9;;12711:1;12701:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12686:27;;12755:4;12728:18;:24;12747:4;12728:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12671:100;12666:3;;;;;:::i;:::-;;;;12624:147;;;;12542:236;;;:::o;17189:729::-;17315:21;17353:1;17339:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17315:40;;17384:4;17366;17371:1;17366:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17410:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17400:4;17405:1;17400:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17443:62;17460:4;17475:15;;;;;;;;;;;17493:11;17443:8;:62::i;:::-;17516:15;;;;;;;;;;;:66;;;17597:11;17623:1;17639:4;17666;17686:15;17516:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17725:18;17746:21;17725:42;;17778:17;17798;17813:1;17798:10;:14;;:17;;;;:::i;:::-;17778:37;;17836:6;;;;;;;;;;;17828:24;;:35;17853:9;17828:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17882:6;;;;;;;;;;;17874:24;;:35;17899:9;17874:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17244:674;;;17189:729;:::o;15868:557::-;15917:22;;;;;;;;;;;15914:504;;;15960:9;15956:451;15978:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15974:1;:27;15956:451;;;16027:14;16044:16;;;;;;;;;;;:30;;;16075:1;16044:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16027:50;;16096:14;16113:9;:17;16123:6;16113:17;;;;;;;;;;;;;;;;16096:34;;16161:1;16152:6;:10;16149:193;;;16207:29;16229:6;16207:9;:17;16217:6;16207:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;16187:9;:17;16197:6;16187:17;;;;;;;;;;;;;;;:49;;;;16286:36;16315:6;16286:9;:24;16304:4;16286:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16259:9;:24;16277:4;16259:24;;;;;;;;;;;;;;;:63;;;;16149:193;16360:16;;;;;;;;;;;:23;;;16384:6;16360:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16008:399;;16003:3;;;;;:::i;:::-;;;;15956:451;;;;15914:504;15868:557::o;1306:471::-;1364:7;1614:1;1609;:6;1605:47;;1639:1;1632:8;;;;1605:47;1664:9;1680:1;1676;:5;;;;:::i;:::-;1664:17;;1709:1;1704;1700;:5;;;;:::i;:::-;:10;1692:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1768:1;1761:8;;;1306:471;;;;;:::o;1785:132::-;1843:7;1870:39;1874:1;1877;1870:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1863:46;;1785:132;;;;:::o;962:136::-;1020:7;1047:43;1051:1;1054;1047:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1040:50;;962:136;;;;:::o;1925:278::-;2011:7;2043:1;2039;:5;2046:12;2031:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2070:9;2086:1;2082;:5;;;;:::i;:::-;2070:17;;2194:1;2187:8;;;1925:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:117::-;5935:1;5932;5925:12;5949:117;6058:1;6055;6048:12;6072:117;6181:1;6178;6171:12;6212:568;6285:8;6295:6;6345:3;6338:4;6330:6;6326:17;6322:27;6312:122;;6353:79;;:::i;:::-;6312:122;6466:6;6453:20;6443:30;;6496:18;6488:6;6485:30;6482:117;;;6518:79;;:::i;:::-;6482:117;6632:4;6624:6;6620:17;6608:29;;6686:3;6678:4;6670:6;6666:17;6656:8;6652:32;6649:41;6646:128;;;6693:79;;:::i;:::-;6646:128;6212:568;;;;;:::o;6786:116::-;6856:21;6871:5;6856:21;:::i;:::-;6849:5;6846:32;6836:60;;6892:1;6889;6882:12;6836:60;6786:116;:::o;6908:133::-;6951:5;6989:6;6976:20;6967:29;;7005:30;7029:5;7005:30;:::i;:::-;6908:133;;;;:::o;7047:698::-;7139:6;7147;7155;7204:2;7192:9;7183:7;7179:23;7175:32;7172:119;;;7210:79;;:::i;:::-;7172:119;7358:1;7347:9;7343:17;7330:31;7388:18;7380:6;7377:30;7374:117;;;7410:79;;:::i;:::-;7374:117;7523:80;7595:7;7586:6;7575:9;7571:22;7523:80;:::i;:::-;7505:98;;;;7301:312;7652:2;7678:50;7720:7;7711:6;7700:9;7696:22;7678:50;:::i;:::-;7668:60;;7623:115;7047:698;;;;;:::o;7751:118::-;7838:24;7856:5;7838:24;:::i;:::-;7833:3;7826:37;7751:118;;:::o;7875:222::-;7968:4;8006:2;7995:9;7991:18;7983:26;;8019:71;8087:1;8076:9;8072:17;8063:6;8019:71;:::i;:::-;7875:222;;;;:::o;8103:329::-;8162:6;8211:2;8199:9;8190:7;8186:23;8182:32;8179:119;;;8217:79;;:::i;:::-;8179:119;8337:1;8362:53;8407:7;8398:6;8387:9;8383:22;8362:53;:::i;:::-;8352:63;;8308:117;8103:329;;;;:::o;8438:474::-;8506:6;8514;8563:2;8551:9;8542:7;8538:23;8534:32;8531:119;;;8569:79;;:::i;:::-;8531:119;8689:1;8714:53;8759:7;8750:6;8739:9;8735:22;8714:53;:::i;:::-;8704:63;;8660:117;8816:2;8842:53;8887:7;8878:6;8867:9;8863:22;8842:53;:::i;:::-;8832:63;;8787:118;8438:474;;;;;:::o;8918:329::-;8977:6;9026:2;9014:9;9005:7;9001:23;8997:32;8994:119;;;9032:79;;:::i;:::-;8994:119;9152:1;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9123:117;8918:329;;;;:::o;9253:474::-;9321:6;9329;9378:2;9366:9;9357:7;9353:23;9349:32;9346:119;;;9384:79;;:::i;:::-;9346:119;9504:1;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9475:117;9631:2;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9602:118;9253:474;;;;;:::o;9733:180::-;9781:77;9778:1;9771:88;9878:4;9875:1;9868:15;9902:4;9899:1;9892:15;9919:320;9963:6;10000:1;9994:4;9990:12;9980:22;;10047:1;10041:4;10037:12;10068:18;10058:81;;10124:4;10116:6;10112:17;10102:27;;10058:81;10186:2;10178:6;10175:14;10155:18;10152:38;10149:84;;10205:18;;:::i;:::-;10149:84;9970:269;9919:320;;;:::o;10245:143::-;10302:5;10333:6;10327:13;10318:22;;10349:33;10376:5;10349:33;:::i;:::-;10245:143;;;;:::o;10394:351::-;10464:6;10513:2;10501:9;10492:7;10488:23;10484:32;10481:119;;;10519:79;;:::i;:::-;10481:119;10639:1;10664:64;10720:7;10711:6;10700:9;10696:22;10664:64;:::i;:::-;10654:74;;10610:128;10394:351;;;;:::o;10751:143::-;10808:5;10839:6;10833:13;10824:22;;10855:33;10882:5;10855:33;:::i;:::-;10751:143;;;;:::o;10900:351::-;10970:6;11019:2;11007:9;10998:7;10994:23;10990:32;10987:119;;;11025:79;;:::i;:::-;10987:119;11145:1;11170:64;11226:7;11217:6;11206:9;11202:22;11170:64;:::i;:::-;11160:74;;11116:128;10900:351;;;;:::o;11257:180::-;11305:77;11302:1;11295:88;11402:4;11399:1;11392:15;11426:4;11423:1;11416:15;11443:233;11482:3;11505:24;11523:5;11505:24;:::i;:::-;11496:33;;11551:66;11544:5;11541:77;11538:103;;11621:18;;:::i;:::-;11538:103;11668:1;11661:5;11657:13;11650:20;;11443:233;;;:::o;11682:182::-;11822:34;11818:1;11810:6;11806:14;11799:58;11682:182;:::o;11870:366::-;12012:3;12033:67;12097:2;12092:3;12033:67;:::i;:::-;12026:74;;12109:93;12198:3;12109:93;:::i;:::-;12227:2;12222:3;12218:12;12211:19;;11870:366;;;:::o;12242:419::-;12408:4;12446:2;12435:9;12431:18;12423:26;;12495:9;12489:4;12485:20;12481:1;12470:9;12466:17;12459:47;12523:131;12649:4;12523:131;:::i;:::-;12515:139;;12242:419;;;:::o;12667:180::-;12715:77;12712:1;12705:88;12812:4;12809:1;12802:15;12836:4;12833:1;12826:15;12853:180;12901:77;12898:1;12891:88;12998:4;12995:1;12988:15;13022:4;13019:1;13012:15;13039:114;13106:6;13140:5;13134:12;13124:22;;13039:114;;;:::o;13159:184::-;13258:11;13292:6;13287:3;13280:19;13332:4;13327:3;13323:14;13308:29;;13159:184;;;;:::o;13349:132::-;13416:4;13439:3;13431:11;;13469:4;13464:3;13460:14;13452:22;;13349:132;;;:::o;13487:108::-;13564:24;13582:5;13564:24;:::i;:::-;13559:3;13552:37;13487:108;;:::o;13601:179::-;13670:10;13691:46;13733:3;13725:6;13691:46;:::i;:::-;13769:4;13764:3;13760:14;13746:28;;13601:179;;;;:::o;13786:113::-;13856:4;13888;13883:3;13879:14;13871:22;;13786:113;;;:::o;13935:732::-;14054:3;14083:54;14131:5;14083:54;:::i;:::-;14153:86;14232:6;14227:3;14153:86;:::i;:::-;14146:93;;14263:56;14313:5;14263:56;:::i;:::-;14342:7;14373:1;14358:284;14383:6;14380:1;14377:13;14358:284;;;14459:6;14453:13;14486:63;14545:3;14530:13;14486:63;:::i;:::-;14479:70;;14572:60;14625:6;14572:60;:::i;:::-;14562:70;;14418:224;14405:1;14402;14398:9;14393:14;;14358:284;;;14362:14;14658:3;14651:10;;14059:608;;;13935:732;;;;:::o;14673:483::-;14844:4;14882:2;14871:9;14867:18;14859:26;;14895:71;14963:1;14952:9;14948:17;14939:6;14895:71;:::i;:::-;15013:9;15007:4;15003:20;14998:2;14987:9;14983:18;14976:48;15041:108;15144:4;15135:6;15041:108;:::i;:::-;15033:116;;14673:483;;;;;:::o;15162:281::-;15245:27;15267:4;15245:27;:::i;:::-;15237:6;15233:40;15375:6;15363:10;15360:22;15339:18;15327:10;15324:34;15321:62;15318:88;;;15386:18;;:::i;:::-;15318:88;15426:10;15422:2;15415:22;15205:238;15162:281;;:::o;15449:129::-;15483:6;15510:20;;:::i;:::-;15500:30;;15539:33;15567:4;15559:6;15539:33;:::i;:::-;15449:129;;;:::o;15584:311::-;15661:4;15751:18;15743:6;15740:30;15737:56;;;15773:18;;:::i;:::-;15737:56;15823:4;15815:6;15811:17;15803:25;;15883:4;15877;15873:15;15865:23;;15584:311;;;:::o;15918:732::-;16025:5;16050:81;16066:64;16123:6;16066:64;:::i;:::-;16050:81;:::i;:::-;16041:90;;16151:5;16180:6;16173:5;16166:21;16214:4;16207:5;16203:16;16196:23;;16267:4;16259:6;16255:17;16247:6;16243:30;16296:3;16288:6;16285:15;16282:122;;;16315:79;;:::i;:::-;16282:122;16430:6;16413:231;16447:6;16442:3;16439:15;16413:231;;;16522:3;16551:48;16595:3;16583:10;16551:48;:::i;:::-;16546:3;16539:61;16629:4;16624:3;16620:14;16613:21;;16489:155;16473:4;16468:3;16464:14;16457:21;;16413:231;;;16417:21;16031:619;;15918:732;;;;;:::o;16673:385::-;16755:5;16804:3;16797:4;16789:6;16785:17;16781:27;16771:122;;16812:79;;:::i;:::-;16771:122;16922:6;16916:13;16947:105;17048:3;17040:6;17033:4;17025:6;17021:17;16947:105;:::i;:::-;16938:114;;16761:297;16673:385;;;;:::o;17064:554::-;17159:6;17208:2;17196:9;17187:7;17183:23;17179:32;17176:119;;;17214:79;;:::i;:::-;17176:119;17355:1;17344:9;17340:17;17334:24;17385:18;17377:6;17374:30;17371:117;;;17407:79;;:::i;:::-;17371:117;17512:89;17593:7;17584:6;17573:9;17569:22;17512:89;:::i;:::-;17502:99;;17305:306;17064:554;;;;:::o;17624:332::-;17745:4;17783:2;17772:9;17768:18;17760:26;;17796:71;17864:1;17853:9;17849:17;17840:6;17796:71;:::i;:::-;17877:72;17945:2;17934:9;17930:18;17921:6;17877:72;:::i;:::-;17624:332;;;;;:::o;17962:137::-;18016:5;18047:6;18041:13;18032:22;;18063:30;18087:5;18063:30;:::i;:::-;17962:137;;;;:::o;18105:345::-;18172:6;18221:2;18209:9;18200:7;18196:23;18192:32;18189:119;;;18227:79;;:::i;:::-;18189:119;18347:1;18372:61;18425:7;18416:6;18405:9;18401:22;18372:61;:::i;:::-;18362:71;;18318:125;18105:345;;;;:::o;18456:221::-;18596:34;18592:1;18584:6;18580:14;18573:58;18665:4;18660:2;18652:6;18648:15;18641:29;18456:221;:::o;18683:366::-;18825:3;18846:67;18910:2;18905:3;18846:67;:::i;:::-;18839:74;;18922:93;19011:3;18922:93;:::i;:::-;19040:2;19035:3;19031:12;19024:19;;18683:366;;;:::o;19055:419::-;19221:4;19259:2;19248:9;19244:18;19236:26;;19308:9;19302:4;19298:20;19294:1;19283:9;19279:17;19272:47;19336:131;19462:4;19336:131;:::i;:::-;19328:139;;19055:419;;;:::o;19480:332::-;19601:4;19639:2;19628:9;19624:18;19616:26;;19652:71;19720:1;19709:9;19705:17;19696:6;19652:71;:::i;:::-;19733:72;19801:2;19790:9;19786:18;19777:6;19733:72;:::i;:::-;19480:332;;;;;:::o;19818:85::-;19863:7;19892:5;19881:16;;19818:85;;;:::o;19909:158::-;19967:9;20000:61;20018:42;20027:32;20053:5;20027:32;:::i;:::-;20018:42;:::i;:::-;20000:61;:::i;:::-;19987:74;;19909:158;;;:::o;20073:147::-;20168:45;20207:5;20168:45;:::i;:::-;20163:3;20156:58;20073:147;;:::o;20226:807::-;20475:4;20513:3;20502:9;20498:19;20490:27;;20527:71;20595:1;20584:9;20580:17;20571:6;20527:71;:::i;:::-;20608:72;20676:2;20665:9;20661:18;20652:6;20608:72;:::i;:::-;20690:80;20766:2;20755:9;20751:18;20742:6;20690:80;:::i;:::-;20780;20856:2;20845:9;20841:18;20832:6;20780:80;:::i;:::-;20870:73;20938:3;20927:9;20923:19;20914:6;20870:73;:::i;:::-;20953;21021:3;21010:9;21006:19;20997:6;20953:73;:::i;:::-;20226:807;;;;;;;;;:::o;21039:663::-;21127:6;21135;21143;21192:2;21180:9;21171:7;21167:23;21163:32;21160:119;;;21198:79;;:::i;:::-;21160:119;21318:1;21343:64;21399:7;21390:6;21379:9;21375:22;21343:64;:::i;:::-;21333:74;;21289:128;21456:2;21482:64;21538:7;21529:6;21518:9;21514:22;21482:64;:::i;:::-;21472:74;;21427:129;21595:2;21621:64;21677:7;21668:6;21657:9;21653:22;21621:64;:::i;:::-;21611:74;;21566:129;21039:663;;;;;:::o;21708:224::-;21848:34;21844:1;21836:6;21832:14;21825:58;21917:7;21912:2;21904:6;21900:15;21893:32;21708:224;:::o;21938:366::-;22080:3;22101:67;22165:2;22160:3;22101:67;:::i;:::-;22094:74;;22177:93;22266:3;22177:93;:::i;:::-;22295:2;22290:3;22286:12;22279:19;;21938:366;;;:::o;22310:419::-;22476:4;22514:2;22503:9;22499:18;22491:26;;22563:9;22557:4;22553:20;22549:1;22538:9;22534:17;22527:47;22591:131;22717:4;22591:131;:::i;:::-;22583:139;;22310:419;;;:::o;22735:225::-;22875:34;22871:1;22863:6;22859:14;22852:58;22944:8;22939:2;22931:6;22927:15;22920:33;22735:225;:::o;22966:366::-;23108:3;23129:67;23193:2;23188:3;23129:67;:::i;:::-;23122:74;;23205:93;23294:3;23205:93;:::i;:::-;23323:2;23318:3;23314:12;23307:19;;22966:366;;;:::o;23338:419::-;23504:4;23542:2;23531:9;23527:18;23519:26;;23591:9;23585:4;23581:20;23577:1;23566:9;23562:17;23555:47;23619:131;23745:4;23619:131;:::i;:::-;23611:139;;23338:419;;;:::o;23763:223::-;23903:34;23899:1;23891:6;23887:14;23880:58;23972:6;23967:2;23959:6;23955:15;23948:31;23763:223;:::o;23992:366::-;24134:3;24155:67;24219:2;24214:3;24155:67;:::i;:::-;24148:74;;24231:93;24320:3;24231:93;:::i;:::-;24349:2;24344:3;24340:12;24333:19;;23992:366;;;:::o;24364:419::-;24530:4;24568:2;24557:9;24553:18;24545:26;;24617:9;24611:4;24607:20;24603:1;24592:9;24588:17;24581:47;24645:131;24771:4;24645:131;:::i;:::-;24637:139;;24364:419;;;:::o;24789:221::-;24929:34;24925:1;24917:6;24913:14;24906:58;24998:4;24993:2;24985:6;24981:15;24974:29;24789:221;:::o;25016:366::-;25158:3;25179:67;25243:2;25238:3;25179:67;:::i;:::-;25172:74;;25255:93;25344:3;25255:93;:::i;:::-;25373:2;25368:3;25364:12;25357:19;;25016:366;;;:::o;25388:419::-;25554:4;25592:2;25581:9;25577:18;25569:26;;25641:9;25635:4;25631:20;25627:1;25616:9;25612:17;25605:47;25669:131;25795:4;25669:131;:::i;:::-;25661:139;;25388:419;;;:::o;25813:224::-;25953:34;25949:1;25941:6;25937:14;25930:58;26022:7;26017:2;26009:6;26005:15;25998:32;25813:224;:::o;26043:366::-;26185:3;26206:67;26270:2;26265:3;26206:67;:::i;:::-;26199:74;;26282:93;26371:3;26282:93;:::i;:::-;26400:2;26395:3;26391:12;26384:19;;26043:366;;;:::o;26415:419::-;26581:4;26619:2;26608:9;26604:18;26596:26;;26668:9;26662:4;26658:20;26654:1;26643:9;26639:17;26632:47;26696:131;26822:4;26696:131;:::i;:::-;26688:139;;26415:419;;;:::o;26840:222::-;26980:34;26976:1;26968:6;26964:14;26957:58;27049:5;27044:2;27036:6;27032:15;27025:30;26840:222;:::o;27068:366::-;27210:3;27231:67;27295:2;27290:3;27231:67;:::i;:::-;27224:74;;27307:93;27396:3;27307:93;:::i;:::-;27425:2;27420:3;27416:12;27409:19;;27068:366;;;:::o;27440:419::-;27606:4;27644:2;27633:9;27629:18;27621:26;;27693:9;27687:4;27683:20;27679:1;27668:9;27664:17;27657:47;27721:131;27847:4;27721:131;:::i;:::-;27713:139;;27440:419;;;:::o;27865:228::-;28005:34;28001:1;27993:6;27989:14;27982:58;28074:11;28069:2;28061:6;28057:15;28050:36;27865:228;:::o;28099:366::-;28241:3;28262:67;28326:2;28321:3;28262:67;:::i;:::-;28255:74;;28338:93;28427:3;28338:93;:::i;:::-;28456:2;28451:3;28447:12;28440:19;;28099:366;;;:::o;28471:419::-;28637:4;28675:2;28664:9;28660:18;28652:26;;28724:9;28718:4;28714:20;28710:1;28699:9;28695:17;28688:47;28752:131;28878:4;28752:131;:::i;:::-;28744:139;;28471:419;;;:::o;28896:194::-;28936:4;28956:20;28974:1;28956:20;:::i;:::-;28951:25;;28990:20;29008:1;28990:20;:::i;:::-;28985:25;;29034:1;29031;29027:9;29019:17;;29058:1;29052:4;29049:11;29046:37;;;29063:18;;:::i;:::-;29046:37;28896:194;;;;:::o;29096:191::-;29136:3;29155:20;29173:1;29155:20;:::i;:::-;29150:25;;29189:20;29207:1;29189:20;:::i;:::-;29184:25;;29232:1;29229;29225:9;29218:16;;29253:3;29250:1;29247:10;29244:36;;;29260:18;;:::i;:::-;29244:36;29096:191;;;;:::o;29293:177::-;29433:29;29429:1;29421:6;29417:14;29410:53;29293:177;:::o;29476:366::-;29618:3;29639:67;29703:2;29698:3;29639:67;:::i;:::-;29632:74;;29715:93;29804:3;29715:93;:::i;:::-;29833:2;29828:3;29824:12;29817:19;;29476:366;;;:::o;29848:419::-;30014:4;30052:2;30041:9;30037:18;30029:26;;30101:9;30095:4;30091:20;30087:1;30076:9;30072:17;30065:47;30129:131;30255:4;30129:131;:::i;:::-;30121:139;;29848:419;;;:::o;30273:831::-;30536:4;30574:3;30563:9;30559:19;30551:27;;30588:71;30656:1;30645:9;30641:17;30632:6;30588:71;:::i;:::-;30669:80;30745:2;30734:9;30730:18;30721:6;30669:80;:::i;:::-;30796:9;30790:4;30786:20;30781:2;30770:9;30766:18;30759:48;30824:108;30927:4;30918:6;30824:108;:::i;:::-;30816:116;;30942:72;31010:2;30999:9;30995:18;30986:6;30942:72;:::i;:::-;31024:73;31092:3;31081:9;31077:19;31068:6;31024:73;:::i;:::-;30273:831;;;;;;;;:::o;31110:410::-;31150:7;31173:20;31191:1;31173:20;:::i;:::-;31168:25;;31207:20;31225:1;31207:20;:::i;:::-;31202:25;;31262:1;31259;31255:9;31284:30;31302:11;31284:30;:::i;:::-;31273:41;;31463:1;31454:7;31450:15;31447:1;31444:22;31424:1;31417:9;31397:83;31374:139;;31493:18;;:::i;:::-;31374:139;31158:362;31110:410;;;;:::o;31526:180::-;31574:77;31571:1;31564:88;31671:4;31668:1;31661:15;31695:4;31692:1;31685:15;31712:185;31752:1;31769:20;31787:1;31769:20;:::i;:::-;31764:25;;31803:20;31821:1;31803:20;:::i;:::-;31798:25;;31842:1;31832:35;;31847:18;;:::i;:::-;31832:35;31889:1;31886;31882:9;31877:14;;31712:185;;;;:::o;31903:220::-;32043:34;32039:1;32031:6;32027:14;32020:58;32112:3;32107:2;32099:6;32095:15;32088:28;31903:220;:::o;32129:366::-;32271:3;32292:67;32356:2;32351:3;32292:67;:::i;:::-;32285:74;;32368:93;32457:3;32368:93;:::i;:::-;32486:2;32481:3;32477:12;32470:19;;32129:366;;;:::o;32501:419::-;32667:4;32705:2;32694:9;32690:18;32682:26;;32754:9;32748:4;32744:20;32740:1;32729:9;32725:17;32718:47;32782:131;32908:4;32782:131;:::i;:::-;32774:139;;32501:419;;;:::o

Swarm Source

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