ETH Price: $3,332.04 (+2.06%)
Gas: 5 Gwei

Token

AlphaLeak (LEAK)
 

Overview

Max Total Supply

1,000,000 LEAK

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
19,601.0199 LEAK

Value
$0.00
0xf339b0cfceca9f1ba1e108991aa21bc2a9441931
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:
LEAK

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT


// Get paid to leak Alpha. Users will be able to claim $LEAK tokens proportional to the % increase of a token they post. 
// Automated alpha sniping fees are paid for in $LEAK tokens. 
// User interface coming soon. 

pragma solidity ^0.8.9;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract LEAK is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "AlphaLeak";
    string private constant _symbol = "LEAK";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 1;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 1;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0xb15db296E9463F65C35B53213e57C5c1aeE8F6c1);
    address payable private _marketingAddress = payable(0xb15db296E9463F65C35B53213e57C5c1aeE8F6c1);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _maxTxAmount * 1;
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy + taxFeeOnBuy <= 15, "buy fees below 10");
        require(redisFeeOnSell + taxFeeOnSell <= 15, "sell fees below 10");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount * 10**_decimals;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize * 10**_decimals;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000761565b6000196200002a9190620007c8565b600655600060085560016009556000600a556001600b55600a54600c55600b54600d55600c54600e55600d54600f5573b15db296e9463f65c35b53213e57c5c1aee8f6c1601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b15db296e9463f65c35b53213e57c5c1aee8f6c1601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff0219169083151502179055506064600266038d7ea4c6800062000151919062000803565b6200015d919062000864565b601455600160145462000171919062000803565b60155564e8d4a510006016553480156200018a57600080fd5b5060006200019d620006f760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000252620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033157600080fd5b505afa15801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c919062000906565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003cf57600080fd5b505afa158015620003e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040a919062000906565b6040518363ffffffff1660e01b81526004016200042992919062000949565b602060405180830381600087803b1580156200044457600080fd5b505af115801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f919062000906565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004d5620006ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000682620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620006e8919062000987565b60405180910390a350620009a4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200076e8262000728565b91506200077b8362000728565b9250826200078e576200078d62000732565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d58262000728565b9150620007e28362000728565b925082821015620007f857620007f762000799565b5b828203905092915050565b6000620008108262000728565b91506200081d8362000728565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000859576200085862000799565b5b828202905092915050565b6000620008718262000728565b91506200087e8362000728565b92508262000891576200089062000732565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ce82620008a1565b9050919050565b620008e081620008c1565b8114620008ec57600080fd5b50565b6000815190506200090081620008d5565b92915050565b6000602082840312156200091f576200091e6200089c565b5b60006200092f84828501620008ef565b91505092915050565b6200094381620008c1565b82525050565b600060408201905062000960600083018562000938565b6200096f602083018462000938565b9392505050565b620009818162000728565b82525050565b60006020820190506200099e600083018462000976565b92915050565b613ac480620009b46000396000f3fe6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610545578063dd62ed3e1461056e578063ea1644d5146105ab578063f2fde38b146105d45761018c565b8063a2a957bb146104c8578063a9059cbb146104f1578063c3c8cd801461052e5761018c565b80637d1db4a5146103ca5780638da5cb5b146103f55780638f70ccf7146104205780638f9a55c01461044957806395d89b411461047457806398a5c3151461049f5761018c565b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec1461033657806370a082311461034d578063715018a61461038a57806374010ece146103a15761018c565b8063313ce567146102b757806349bd5a5e146102e25780636d8aa8f81461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b391906128bc565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de919061297c565b61063a565b6040516101f091906129d7565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612a51565b60405180910390f35b34801561023057600080fd5b5061023961067e565b6040516102469190612a7b565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612a96565b61068d565b60405161028391906129d7565b60405180910390f35b34801561029857600080fd5b506102a1610766565b6040516102ae9190612a7b565b60405180910390f35b3480156102c357600080fd5b506102cc61076c565b6040516102d99190612b05565b60405180910390f35b3480156102ee57600080fd5b506102f7610775565b6040516103049190612b2f565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612b76565b61079b565b005b34801561034257600080fd5b5061034b61084d565b005b34801561035957600080fd5b50610374600480360381019061036f9190612ba3565b61091e565b6040516103819190612a7b565b60405180910390f35b34801561039657600080fd5b5061039f61096f565b005b3480156103ad57600080fd5b506103c860048036038101906103c39190612bd0565b610ac2565b005b3480156103d657600080fd5b506103df610b79565b6040516103ec9190612a7b565b60405180910390f35b34801561040157600080fd5b5061040a610b7f565b6040516104179190612b2f565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612b76565b610ba8565b005b34801561045557600080fd5b5061045e610c5a565b60405161046b9190612a7b565b60405180910390f35b34801561048057600080fd5b50610489610c60565b60405161049691906128bc565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612bd0565b610c9d565b005b3480156104d457600080fd5b506104ef60048036038101906104ea9190612bfd565b610d3c565b005b3480156104fd57600080fd5b506105186004803603810190610513919061297c565b610e91565b60405161052591906129d7565b60405180910390f35b34801561053a57600080fd5b50610543610eaf565b005b34801561055157600080fd5b5061056c60048036038101906105679190612cc9565b610f88565b005b34801561057a57600080fd5b5061059560048036038101906105909190612d29565b6110c2565b6040516105a29190612a7b565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612bd0565b611149565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612ba3565b611200565b005b60606040518060400160405280600981526020017f416c7068614c65616b0000000000000000000000000000000000000000000000815250905090565b600061064e6106476113c2565b84846113ca565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b600061069a848484611595565b61075b846106a66113c2565b61075685604051806060016040528060288152602001613a6760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070c6113c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d399092919063ffffffff16565b6113ca565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a36113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082790612db5565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088e6113c2565b73ffffffffffffffffffffffffffffffffffffffff1614806109045750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ec6113c2565b73ffffffffffffffffffffffffffffffffffffffff16145b61090d57600080fd5b600047905061091b81611d9d565b50565b6000610968600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e09565b9050919050565b6109776113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90612db5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aca6113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e90612db5565b60405180910390fd5b6009600a610b659190612f37565b81610b709190612f82565b60148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bb06113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612db5565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600481526020017f4c45414b00000000000000000000000000000000000000000000000000000000815250905090565b610ca56113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990612db5565b60405180910390fd5b8060168190555050565b610d446113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890612db5565b60405180910390fd5b600f8285610ddf9190612fdc565b1115610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e179061307e565b60405180910390fd5b600f8184610e2e9190612fdc565b1115610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906130ea565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610ea5610e9e6113c2565b8484611595565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef06113c2565b73ffffffffffffffffffffffffffffffffffffffff161480610f665750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4e6113c2565b73ffffffffffffffffffffffffffffffffffffffff16145b610f6f57600080fd5b6000610f7a3061091e565b9050610f8581611e77565b50565b610f906113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490612db5565b60405180910390fd5b60005b838390508110156110bc5781600560008686858181106110435761104261310a565b5b90506020020160208101906110589190612ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b490613139565b915050611020565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111516113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590612db5565b60405180910390fd5b6009600a6111ec9190612f37565b816111f79190612f82565b60158190555050565b6112086113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90612db5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc906131f4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190613286565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190613318565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115889190612a7b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc906133aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c9061343c565b60405180910390fd5b600081116116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af906134ce565b60405180910390fd5b6116c0610b7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561172e57506116fe610b7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a3857601360149054906101000a900460ff166117bd5761174f610b7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b390613560565b60405180910390fd5b5b601454811115611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f9906135cc565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118af57601554816118648461091e565b61186e9190612fdc565b106118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a59061365e565b60405180910390fd5b5b60006118ba3061091e565b90506000601654821015905060145482106118d55760145491505b8080156118ef5750601360159054906101000a900460ff16155b80156119495750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119615750601360169054906101000a900460ff165b80156119b75750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a0d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a3557611a1b82611e77565b60004790506000811115611a3357611a3247611d9d565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611adf5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b925750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b915750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ba05760009050611d27565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c4b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c6357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d0e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d2657600a54600c81905550600b54600d819055505b5b611d33848484846120ff565b50505050565b6000838311158290611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7891906128bc565b60405180910390fd5b5060008385611d90919061367e565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e05573d6000803e3d6000fd5b5050565b6000600654821115611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613724565b60405180910390fd5b6000611e5a61212c565b9050611e6f818461215790919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eaf57611eae613744565b5b604051908082528060200260200182016040528015611edd5781602001602082028036833780820191505090505b5090503081600081518110611ef557611ef461310a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf9190613788565b81600181518110611fe357611fe261310a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ca565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120ae9594939291906138ae565b600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061210d5761210c6121a1565b5b6121188484846121e4565b80612126576121256123af565b5b50505050565b60008060006121396123c3565b91509150612150818361215790919063ffffffff16565b9250505090565b600061219983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061241f565b905092915050565b6000600c541480156121b557506000600d54145b156121bf576121e2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806121f687612482565b95509550955095509550955061225486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ea90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061233581612592565b61233f848361264f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161239c9190612a7b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506123f566038d7ea4c6800060065461215790919063ffffffff16565b8210156124125760065466038d7ea4c6800093509350505061241b565b81819350935050505b9091565b60008083118290612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d91906128bc565b60405180910390fd5b50600083856124759190613937565b9050809150509392505050565b600080600080600080600080600061249f8a600c54600d54612689565b92509250925060006124af61212c565b905060008060006124c28e87878761271f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061252c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d39565b905092915050565b60008082846125439190612fdc565b905083811015612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f906139b4565b60405180910390fd5b8091505092915050565b600061259c61212c565b905060006125b382846127a890919063ffffffff16565b905061260781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612664826006546124ea90919063ffffffff16565b60068190555061267f8160075461253490919063ffffffff16565b6007819055505050565b6000806000806126b560646126a7888a6127a890919063ffffffff16565b61215790919063ffffffff16565b905060006126df60646126d1888b6127a890919063ffffffff16565b61215790919063ffffffff16565b90506000612708826126fa858c6124ea90919063ffffffff16565b6124ea90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061273885896127a890919063ffffffff16565b9050600061274f86896127a890919063ffffffff16565b9050600061276687896127a890919063ffffffff16565b9050600061278f8261278185876124ea90919063ffffffff16565b6124ea90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127bb576000905061281d565b600082846127c99190612f82565b90508284826127d89190613937565b14612818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280f90613a46565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285d578082015181840152602081019050612842565b8381111561286c576000848401525b50505050565b6000601f19601f8301169050919050565b600061288e82612823565b612898818561282e565b93506128a881856020860161283f565b6128b181612872565b840191505092915050565b600060208201905081810360008301526128d68184612883565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612913826128e8565b9050919050565b61292381612908565b811461292e57600080fd5b50565b6000813590506129408161291a565b92915050565b6000819050919050565b61295981612946565b811461296457600080fd5b50565b60008135905061297681612950565b92915050565b60008060408385031215612993576129926128de565b5b60006129a185828601612931565b92505060206129b285828601612967565b9150509250929050565b60008115159050919050565b6129d1816129bc565b82525050565b60006020820190506129ec60008301846129c8565b92915050565b6000819050919050565b6000612a17612a12612a0d846128e8565b6129f2565b6128e8565b9050919050565b6000612a29826129fc565b9050919050565b6000612a3b82612a1e565b9050919050565b612a4b81612a30565b82525050565b6000602082019050612a666000830184612a42565b92915050565b612a7581612946565b82525050565b6000602082019050612a906000830184612a6c565b92915050565b600080600060608486031215612aaf57612aae6128de565b5b6000612abd86828701612931565b9350506020612ace86828701612931565b9250506040612adf86828701612967565b9150509250925092565b600060ff82169050919050565b612aff81612ae9565b82525050565b6000602082019050612b1a6000830184612af6565b92915050565b612b2981612908565b82525050565b6000602082019050612b446000830184612b20565b92915050565b612b53816129bc565b8114612b5e57600080fd5b50565b600081359050612b7081612b4a565b92915050565b600060208284031215612b8c57612b8b6128de565b5b6000612b9a84828501612b61565b91505092915050565b600060208284031215612bb957612bb86128de565b5b6000612bc784828501612931565b91505092915050565b600060208284031215612be657612be56128de565b5b6000612bf484828501612967565b91505092915050565b60008060008060808587031215612c1757612c166128de565b5b6000612c2587828801612967565b9450506020612c3687828801612967565b9350506040612c4787828801612967565b9250506060612c5887828801612967565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612c8957612c88612c64565b5b8235905067ffffffffffffffff811115612ca657612ca5612c69565b5b602083019150836020820283011115612cc257612cc1612c6e565b5b9250929050565b600080600060408486031215612ce257612ce16128de565b5b600084013567ffffffffffffffff811115612d0057612cff6128e3565b5b612d0c86828701612c73565b93509350506020612d1f86828701612b61565b9150509250925092565b60008060408385031215612d4057612d3f6128de565b5b6000612d4e85828601612931565b9250506020612d5f85828601612931565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d9f60208361282e565b9150612daa82612d69565b602082019050919050565b60006020820190508181036000830152612dce81612d92565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e5b57808604811115612e3757612e36612dd5565b5b6001851615612e465780820291505b8081029050612e5485612e04565b9450612e1b565b94509492505050565b600082612e745760019050612f30565b81612e825760009050612f30565b8160018114612e985760028114612ea257612ed1565b6001915050612f30565b60ff841115612eb457612eb3612dd5565b5b8360020a915084821115612ecb57612eca612dd5565b5b50612f30565b5060208310610133831016604e8410600b8410161715612f065782820a905083811115612f0157612f00612dd5565b5b612f30565b612f138484846001612e11565b92509050818404811115612f2a57612f29612dd5565b5b81810290505b9392505050565b6000612f4282612946565b9150612f4d83612ae9565b9250612f7a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e64565b905092915050565b6000612f8d82612946565b9150612f9883612946565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fd157612fd0612dd5565b5b828202905092915050565b6000612fe782612946565b9150612ff283612946565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561302757613026612dd5565b5b828201905092915050565b7f62757920666565732062656c6f77203130000000000000000000000000000000600082015250565b600061306860118361282e565b915061307382613032565b602082019050919050565b600060208201905081810360008301526130978161305b565b9050919050565b7f73656c6c20666565732062656c6f772031300000000000000000000000000000600082015250565b60006130d460128361282e565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061314482612946565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561317757613176612dd5565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131de60268361282e565b91506131e982613182565b604082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061327060248361282e565b915061327b82613214565b604082019050919050565b6000602082019050818103600083015261329f81613263565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061330260228361282e565b915061330d826132a6565b604082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061339460258361282e565b915061339f82613338565b604082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061342660238361282e565b9150613431826133ca565b604082019050919050565b6000602082019050818103600083015261345581613419565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006134b860298361282e565b91506134c38261345c565b604082019050919050565b600060208201905081810360008301526134e7816134ab565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061354a603f8361282e565b9150613555826134ee565b604082019050919050565b600060208201905081810360008301526135798161353d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006135b6601c8361282e565b91506135c182613580565b602082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061364860238361282e565b9150613653826135ec565b604082019050919050565b600060208201905081810360008301526136778161363b565b9050919050565b600061368982612946565b915061369483612946565b9250828210156136a7576136a6612dd5565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061370e602a8361282e565b9150613719826136b2565b604082019050919050565b6000602082019050818103600083015261373d81613701565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506137828161291a565b92915050565b60006020828403121561379e5761379d6128de565b5b60006137ac84828501613773565b91505092915050565b6000819050919050565b60006137da6137d56137d0846137b5565b6129f2565b612946565b9050919050565b6137ea816137bf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382581612908565b82525050565b6000613837838361381c565b60208301905092915050565b6000602082019050919050565b600061385b826137f0565b61386581856137fb565b93506138708361380c565b8060005b838110156138a1578151613888888261382b565b975061389383613843565b925050600181019050613874565b5085935050505092915050565b600060a0820190506138c36000830188612a6c565b6138d060208301876137e1565b81810360408301526138e28186613850565b90506138f16060830185612b20565b6138fe6080830184612a6c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394282612946565b915061394d83612946565b92508261395d5761395c613908565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061399e601b8361282e565b91506139a982613968565b602082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3060218361282e565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203716577ebf46dbf8139d86b041aa029389857b83f39227ffd6e9ec6c06e1e29464736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610545578063dd62ed3e1461056e578063ea1644d5146105ab578063f2fde38b146105d45761018c565b8063a2a957bb146104c8578063a9059cbb146104f1578063c3c8cd801461052e5761018c565b80637d1db4a5146103ca5780638da5cb5b146103f55780638f70ccf7146104205780638f9a55c01461044957806395d89b411461047457806398a5c3151461049f5761018c565b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec1461033657806370a082311461034d578063715018a61461038a57806374010ece146103a15761018c565b8063313ce567146102b757806349bd5a5e146102e25780636d8aa8f81461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b391906128bc565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de919061297c565b61063a565b6040516101f091906129d7565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612a51565b60405180910390f35b34801561023057600080fd5b5061023961067e565b6040516102469190612a7b565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612a96565b61068d565b60405161028391906129d7565b60405180910390f35b34801561029857600080fd5b506102a1610766565b6040516102ae9190612a7b565b60405180910390f35b3480156102c357600080fd5b506102cc61076c565b6040516102d99190612b05565b60405180910390f35b3480156102ee57600080fd5b506102f7610775565b6040516103049190612b2f565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612b76565b61079b565b005b34801561034257600080fd5b5061034b61084d565b005b34801561035957600080fd5b50610374600480360381019061036f9190612ba3565b61091e565b6040516103819190612a7b565b60405180910390f35b34801561039657600080fd5b5061039f61096f565b005b3480156103ad57600080fd5b506103c860048036038101906103c39190612bd0565b610ac2565b005b3480156103d657600080fd5b506103df610b79565b6040516103ec9190612a7b565b60405180910390f35b34801561040157600080fd5b5061040a610b7f565b6040516104179190612b2f565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612b76565b610ba8565b005b34801561045557600080fd5b5061045e610c5a565b60405161046b9190612a7b565b60405180910390f35b34801561048057600080fd5b50610489610c60565b60405161049691906128bc565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612bd0565b610c9d565b005b3480156104d457600080fd5b506104ef60048036038101906104ea9190612bfd565b610d3c565b005b3480156104fd57600080fd5b506105186004803603810190610513919061297c565b610e91565b60405161052591906129d7565b60405180910390f35b34801561053a57600080fd5b50610543610eaf565b005b34801561055157600080fd5b5061056c60048036038101906105679190612cc9565b610f88565b005b34801561057a57600080fd5b5061059560048036038101906105909190612d29565b6110c2565b6040516105a29190612a7b565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612bd0565b611149565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612ba3565b611200565b005b60606040518060400160405280600981526020017f416c7068614c65616b0000000000000000000000000000000000000000000000815250905090565b600061064e6106476113c2565b84846113ca565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b600061069a848484611595565b61075b846106a66113c2565b61075685604051806060016040528060288152602001613a6760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070c6113c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d399092919063ffffffff16565b6113ca565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a36113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082790612db5565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088e6113c2565b73ffffffffffffffffffffffffffffffffffffffff1614806109045750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ec6113c2565b73ffffffffffffffffffffffffffffffffffffffff16145b61090d57600080fd5b600047905061091b81611d9d565b50565b6000610968600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e09565b9050919050565b6109776113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90612db5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aca6113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e90612db5565b60405180910390fd5b6009600a610b659190612f37565b81610b709190612f82565b60148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bb06113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612db5565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600481526020017f4c45414b00000000000000000000000000000000000000000000000000000000815250905090565b610ca56113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990612db5565b60405180910390fd5b8060168190555050565b610d446113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890612db5565b60405180910390fd5b600f8285610ddf9190612fdc565b1115610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e179061307e565b60405180910390fd5b600f8184610e2e9190612fdc565b1115610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906130ea565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610ea5610e9e6113c2565b8484611595565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef06113c2565b73ffffffffffffffffffffffffffffffffffffffff161480610f665750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4e6113c2565b73ffffffffffffffffffffffffffffffffffffffff16145b610f6f57600080fd5b6000610f7a3061091e565b9050610f8581611e77565b50565b610f906113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490612db5565b60405180910390fd5b60005b838390508110156110bc5781600560008686858181106110435761104261310a565b5b90506020020160208101906110589190612ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b490613139565b915050611020565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111516113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590612db5565b60405180910390fd5b6009600a6111ec9190612f37565b816111f79190612f82565b60158190555050565b6112086113c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90612db5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc906131f4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190613286565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190613318565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115889190612a7b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc906133aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c9061343c565b60405180910390fd5b600081116116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af906134ce565b60405180910390fd5b6116c0610b7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561172e57506116fe610b7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a3857601360149054906101000a900460ff166117bd5761174f610b7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b390613560565b60405180910390fd5b5b601454811115611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f9906135cc565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118af57601554816118648461091e565b61186e9190612fdc565b106118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a59061365e565b60405180910390fd5b5b60006118ba3061091e565b90506000601654821015905060145482106118d55760145491505b8080156118ef5750601360159054906101000a900460ff16155b80156119495750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119615750601360169054906101000a900460ff165b80156119b75750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a0d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a3557611a1b82611e77565b60004790506000811115611a3357611a3247611d9d565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611adf5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b925750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b915750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ba05760009050611d27565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c4b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c6357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d0e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d2657600a54600c81905550600b54600d819055505b5b611d33848484846120ff565b50505050565b6000838311158290611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7891906128bc565b60405180910390fd5b5060008385611d90919061367e565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e05573d6000803e3d6000fd5b5050565b6000600654821115611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613724565b60405180910390fd5b6000611e5a61212c565b9050611e6f818461215790919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eaf57611eae613744565b5b604051908082528060200260200182016040528015611edd5781602001602082028036833780820191505090505b5090503081600081518110611ef557611ef461310a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf9190613788565b81600181518110611fe357611fe261310a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ca565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120ae9594939291906138ae565b600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061210d5761210c6121a1565b5b6121188484846121e4565b80612126576121256123af565b5b50505050565b60008060006121396123c3565b91509150612150818361215790919063ffffffff16565b9250505090565b600061219983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061241f565b905092915050565b6000600c541480156121b557506000600d54145b156121bf576121e2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806121f687612482565b95509550955095509550955061225486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ea90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061233581612592565b61233f848361264f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161239c9190612a7b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506123f566038d7ea4c6800060065461215790919063ffffffff16565b8210156124125760065466038d7ea4c6800093509350505061241b565b81819350935050505b9091565b60008083118290612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d91906128bc565b60405180910390fd5b50600083856124759190613937565b9050809150509392505050565b600080600080600080600080600061249f8a600c54600d54612689565b92509250925060006124af61212c565b905060008060006124c28e87878761271f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061252c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d39565b905092915050565b60008082846125439190612fdc565b905083811015612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f906139b4565b60405180910390fd5b8091505092915050565b600061259c61212c565b905060006125b382846127a890919063ffffffff16565b905061260781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612664826006546124ea90919063ffffffff16565b60068190555061267f8160075461253490919063ffffffff16565b6007819055505050565b6000806000806126b560646126a7888a6127a890919063ffffffff16565b61215790919063ffffffff16565b905060006126df60646126d1888b6127a890919063ffffffff16565b61215790919063ffffffff16565b90506000612708826126fa858c6124ea90919063ffffffff16565b6124ea90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061273885896127a890919063ffffffff16565b9050600061274f86896127a890919063ffffffff16565b9050600061276687896127a890919063ffffffff16565b9050600061278f8261278185876124ea90919063ffffffff16565b6124ea90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127bb576000905061281d565b600082846127c99190612f82565b90508284826127d89190613937565b14612818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280f90613a46565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285d578082015181840152602081019050612842565b8381111561286c576000848401525b50505050565b6000601f19601f8301169050919050565b600061288e82612823565b612898818561282e565b93506128a881856020860161283f565b6128b181612872565b840191505092915050565b600060208201905081810360008301526128d68184612883565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612913826128e8565b9050919050565b61292381612908565b811461292e57600080fd5b50565b6000813590506129408161291a565b92915050565b6000819050919050565b61295981612946565b811461296457600080fd5b50565b60008135905061297681612950565b92915050565b60008060408385031215612993576129926128de565b5b60006129a185828601612931565b92505060206129b285828601612967565b9150509250929050565b60008115159050919050565b6129d1816129bc565b82525050565b60006020820190506129ec60008301846129c8565b92915050565b6000819050919050565b6000612a17612a12612a0d846128e8565b6129f2565b6128e8565b9050919050565b6000612a29826129fc565b9050919050565b6000612a3b82612a1e565b9050919050565b612a4b81612a30565b82525050565b6000602082019050612a666000830184612a42565b92915050565b612a7581612946565b82525050565b6000602082019050612a906000830184612a6c565b92915050565b600080600060608486031215612aaf57612aae6128de565b5b6000612abd86828701612931565b9350506020612ace86828701612931565b9250506040612adf86828701612967565b9150509250925092565b600060ff82169050919050565b612aff81612ae9565b82525050565b6000602082019050612b1a6000830184612af6565b92915050565b612b2981612908565b82525050565b6000602082019050612b446000830184612b20565b92915050565b612b53816129bc565b8114612b5e57600080fd5b50565b600081359050612b7081612b4a565b92915050565b600060208284031215612b8c57612b8b6128de565b5b6000612b9a84828501612b61565b91505092915050565b600060208284031215612bb957612bb86128de565b5b6000612bc784828501612931565b91505092915050565b600060208284031215612be657612be56128de565b5b6000612bf484828501612967565b91505092915050565b60008060008060808587031215612c1757612c166128de565b5b6000612c2587828801612967565b9450506020612c3687828801612967565b9350506040612c4787828801612967565b9250506060612c5887828801612967565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612c8957612c88612c64565b5b8235905067ffffffffffffffff811115612ca657612ca5612c69565b5b602083019150836020820283011115612cc257612cc1612c6e565b5b9250929050565b600080600060408486031215612ce257612ce16128de565b5b600084013567ffffffffffffffff811115612d0057612cff6128e3565b5b612d0c86828701612c73565b93509350506020612d1f86828701612b61565b9150509250925092565b60008060408385031215612d4057612d3f6128de565b5b6000612d4e85828601612931565b9250506020612d5f85828601612931565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d9f60208361282e565b9150612daa82612d69565b602082019050919050565b60006020820190508181036000830152612dce81612d92565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e5b57808604811115612e3757612e36612dd5565b5b6001851615612e465780820291505b8081029050612e5485612e04565b9450612e1b565b94509492505050565b600082612e745760019050612f30565b81612e825760009050612f30565b8160018114612e985760028114612ea257612ed1565b6001915050612f30565b60ff841115612eb457612eb3612dd5565b5b8360020a915084821115612ecb57612eca612dd5565b5b50612f30565b5060208310610133831016604e8410600b8410161715612f065782820a905083811115612f0157612f00612dd5565b5b612f30565b612f138484846001612e11565b92509050818404811115612f2a57612f29612dd5565b5b81810290505b9392505050565b6000612f4282612946565b9150612f4d83612ae9565b9250612f7a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e64565b905092915050565b6000612f8d82612946565b9150612f9883612946565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fd157612fd0612dd5565b5b828202905092915050565b6000612fe782612946565b9150612ff283612946565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561302757613026612dd5565b5b828201905092915050565b7f62757920666565732062656c6f77203130000000000000000000000000000000600082015250565b600061306860118361282e565b915061307382613032565b602082019050919050565b600060208201905081810360008301526130978161305b565b9050919050565b7f73656c6c20666565732062656c6f772031300000000000000000000000000000600082015250565b60006130d460128361282e565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061314482612946565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561317757613176612dd5565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131de60268361282e565b91506131e982613182565b604082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061327060248361282e565b915061327b82613214565b604082019050919050565b6000602082019050818103600083015261329f81613263565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061330260228361282e565b915061330d826132a6565b604082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061339460258361282e565b915061339f82613338565b604082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061342660238361282e565b9150613431826133ca565b604082019050919050565b6000602082019050818103600083015261345581613419565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006134b860298361282e565b91506134c38261345c565b604082019050919050565b600060208201905081810360008301526134e7816134ab565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061354a603f8361282e565b9150613555826134ee565b604082019050919050565b600060208201905081810360008301526135798161353d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006135b6601c8361282e565b91506135c182613580565b602082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061364860238361282e565b9150613653826135ec565b604082019050919050565b600060208201905081810360008301526136778161363b565b9050919050565b600061368982612946565b915061369483612946565b9250828210156136a7576136a6612dd5565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061370e602a8361282e565b9150613719826136b2565b604082019050919050565b6000602082019050818103600083015261373d81613701565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506137828161291a565b92915050565b60006020828403121561379e5761379d6128de565b5b60006137ac84828501613773565b91505092915050565b6000819050919050565b60006137da6137d56137d0846137b5565b6129f2565b612946565b9050919050565b6137ea816137bf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382581612908565b82525050565b6000613837838361381c565b60208301905092915050565b6000602082019050919050565b600061385b826137f0565b61386581856137fb565b93506138708361380c565b8060005b838110156138a1578151613888888261382b565b975061389383613843565b925050600181019050613874565b5085935050505092915050565b600060a0820190506138c36000830188612a6c565b6138d060208301876137e1565b81810360408301526138e28186613850565b90506138f16060830185612b20565b6138fe6080830184612a6c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394282612946565b915061394d83612946565b92508261395d5761395c613908565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061399e601b8361282e565b91506139a982613968565b602082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3060218361282e565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203716577ebf46dbf8139d86b041aa029389857b83f39227ffd6e9ec6c06e1e29464736f6c63430008090033

Deployed Bytecode Sourcemap

4287:13215:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6684:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7609:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5534:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6961:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5833:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6870:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5582:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16852:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12526:235;;;;;;;;;;;;;:::i;:::-;;7064:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1774:148;;;;;;;;;;;;;:::i;:::-;;16992:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5724:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1560:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12173:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5778:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6775:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16661:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16167:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7210:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12282:236;;;;;;;;;;;;;:::i;:::-;;17263:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7417:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17124:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1930:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6684:83;6721:13;6754:5;;;;;;;;;;;;;;;;;6747:12;;6684:83;:::o;7609:193::-;7711:4;7733:39;7742:12;:10;:12::i;:::-;7756:7;7765:6;7733:8;:39::i;:::-;7790:4;7783:11;;7609:193;;;;:::o;5534:41::-;;;;;;;;;;;;;:::o;6961:95::-;7014:7;4831:15;7034:14;;6961:95;:::o;7810:446::-;7942:4;7959:36;7969:6;7977:9;7988:6;7959:9;:36::i;:::-;8006:220;8029:6;8050:12;:10;:12::i;:::-;8077:138;8133:6;8077:138;;;;;;;;;;;;;;;;;:11;:19;8089:6;8077:19;;;;;;;;;;;;;;;:33;8097:12;:10;:12::i;:::-;8077:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8006:8;:220::i;:::-;8244:4;8237:11;;7810:446;;;;;:::o;5833:49::-;;;;:::o;6870:83::-;6911:5;4505:1;6929:16;;6870:83;:::o;5582:28::-;;;;;;;;;;;;;:::o;16852:101::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16933:12:::1;16919:11;;:26;;;;;;;;;;;;;;;;;;16852:101:::0;:::o;12526:235::-;12592:19;;;;;;;;;;;12576:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12631:17;;;;;;;;;;;12615:33;;:12;:10;:12::i;:::-;:33;;;12576:72;12568:81;;;;;;12660:26;12689:21;12660:50;;12721:32;12734:18;12721:12;:32::i;:::-;12557:204;12526:235::o;7064:138::-;7130:7;7157:37;7177:7;:16;7185:7;7177:16;;;;;;;;;;;;;;;;7157:19;:37::i;:::-;7150:44;;7064:138;;;:::o;1774:148::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1881:1:::1;1844:40;;1865:6;::::0;::::1;;;;;;;;1844:40;;;;;;;;;;;;1912:1;1895:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1774:148::o:0;16992:124::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4505:1:::1;17095:2;:13;;;;:::i;:::-;17081:11;:27;;;;:::i;:::-;17066:12;:42;;;;16992:124:::0;:::o;5724:47::-;;;;:::o;1560:79::-;1598:7;1625:6;;;;;;;;;;;1618:13;;1560:79;:::o;12173:101::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12254:12:::1;12240:11;;:26;;;;;;;;;;;;;;;;;;12173:101:::0;:::o;5778:48::-;;;;:::o;6775:87::-;6814:13;6847:7;;;;;;;;;;;;;;;;;6840:14;;6775:87;:::o;16661:139::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16774:18:::1;16752:19;:40;;;;16661:139:::0;:::o;16167:442::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16340:2:::1;16325:11;16309:13;:27;;;;:::i;:::-;:33;;16301:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16416:2;16400:12;16383:14;:29;;;;:::i;:::-;:35;;16375:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16469:13;16452:14;:30;;;;16511:14;16493:15;:32;;;;16551:11;16536:12;:26;;;;16589:12;16573:13;:28;;;;16167:442:::0;;;;:::o;7210:199::-;7315:4;7337:42;7347:12;:10;:12::i;:::-;7361:9;7372:6;7337:9;:42::i;:::-;7397:4;7390:11;;7210:199;;;;:::o;12282:236::-;12348:19;;;;;;;;;;;12332:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12387:17;;;;;;;;;;;12371:33;;:12;:10;:12::i;:::-;:33;;;12332:72;12324:81;;;;;;12416:23;12442:24;12460:4;12442:9;:24::i;:::-;12416:50;;12477:33;12494:15;12477:16;:33::i;:::-;12313:205;12282:236::o;17263:234::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17380:9:::1;17376:114;17399:8;;:15;;17395:1;:19;17376:114;;;17470:8;17436:18;:31;17455:8;;17464:1;17455:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17436:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17416:3;;;;;:::i;:::-;;;;17376:114;;;;17263:234:::0;;;:::o;7417:184::-;7534:7;7566:11;:18;7578:5;7566:18;;;;;;;;;;;;;;;:27;7585:7;7566:27;;;;;;;;;;;;;;;;7559:34;;7417:184;;;;:::o;17124:131::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4505:1:::1;17234:2;:13;;;;:::i;:::-;17218;:29;;;;:::i;:::-;17201:14;:46;;;;17124:131:::0;:::o;1930:244::-;1697:12;:10;:12::i;:::-;1687:22;;:6;;;;;;;;;;:22;;;1679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2039:1:::1;2019:22;;:8;:22;;;;2011:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2129:8;2100:38;;2121:6;::::0;::::1;;;;;;;;2100:38;;;;;;;;;;;;2158:8;2149:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1930:244:::0;:::o;319:98::-;372:7;399:10;392:17;;319:98;:::o;8947:369::-;9091:1;9074:19;;:5;:19;;;;9066:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9172:1;9153:21;;:7;:21;;;;9145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9254:6;9224:11;:18;9236:5;9224:18;;;;;;;;;;;;;;;:27;9243:7;9224:27;;;;;;;;;;;;;;;:36;;;;9292:7;9276:32;;9285:5;9276:32;;;9301:6;9276:32;;;;;;:::i;:::-;;;;;;;;8947:369;;;:::o;9324:2243::-;9462:1;9446:18;;:4;:18;;;;9438:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9539:1;9525:16;;:2;:16;;;;9517:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9609:1;9600:6;:10;9592:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9681:7;:5;:7::i;:::-;9673:15;;:4;:15;;;;:32;;;;;9698:7;:5;:7::i;:::-;9692:13;;:2;:13;;;;9673:32;9669:1172;;;9762:11;;;;;;;;;;;9757:144;;9810:7;:5;:7::i;:::-;9802:15;;:4;:15;;;9794:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9757:144;9935:12;;9925:6;:22;;9917:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10006:13;;;;;;;;;;;10000:19;;:2;:19;;;9997:146;;10073:14;;10064:6;10048:13;10058:2;10048:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10040:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9997:146;10159:28;10190:24;10208:4;10190:9;:24::i;:::-;10159:55;;10229:12;10268:19;;10244:20;:43;;10229:58;;10331:12;;10307:20;:36;10304:124;;10400:12;;10377:35;;10304:124;10448:7;:18;;;;;10460:6;;;;;;;;;;;10459:7;10448:18;:43;;;;;10478:13;;;;;;;;;;;10470:21;;:4;:21;;;;10448:43;:58;;;;;10495:11;;;;;;;;;;;10448:58;:87;;;;;10511:18;:24;10530:4;10511:24;;;;;;;;;;;;;;;;;;;;;;;;;10510:25;10448:87;:114;;;;;10540:18;:22;10559:2;10540:22;;;;;;;;;;;;;;;;;;;;;;;;;10539:23;10448:114;10444:386;;;10583:38;10600:20;10583:16;:38::i;:::-;10640:26;10669:21;10640:50;;10734:1;10713:18;:22;10709:106;;;10760:35;10773:21;10760:12;:35::i;:::-;10709:106;10564:266;10444:386;9707:1134;;9669:1172;10853:12;10868:4;10853:19;;10917:18;:24;10936:4;10917:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10945:18;:22;10964:2;10945:22;;;;;;;;;;;;;;;;;;;;;;;;;10917:50;10916:102;;;;10981:13;;;;;;;;;;;10973:21;;:4;:21;;;;:44;;;;;11004:13;;;;;;;;;;;10998:19;;:2;:19;;;;10973:44;10916:102;10912:594;;;11045:5;11035:15;;10912:594;;;11128:13;;;;;;;;;;;11120:21;;:4;:21;;;:55;;;;;11159:15;;;;;;;;;;;11145:30;;:2;:30;;;;11120:55;11117:162;;;11208:14;;11196:9;:26;;;;11251:12;;11241:7;:22;;;;11117:162;11338:13;;;;;;;;;;;11332:19;;:2;:19;;;:55;;;;;11371:15;;;;;;;;;;;11355:32;;:4;:32;;;;11332:55;11328:165;;;11420:15;;11408:9;:27;;;;11464:13;;11454:7;:23;;;;11328:165;10912:594;11518:41;11533:4;11539:2;11543:6;11551:7;11518:14;:41::i;:::-;9427:2140;9324:2243;;;:::o;2538:224::-;2658:7;2691:1;2686;:6;;2694:12;2678:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2718:9;2734:1;2730;:5;;;;:::i;:::-;2718:17;;2753:1;2746:8;;;2538:224;;;;;:::o;12066:99::-;12123:17;;;;;;;;;;;:26;;:34;12150:6;12123:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12066:99;:::o;8264:323::-;8359:7;8417;;8406;:18;;8384:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8505:19;8527:10;:8;:10::i;:::-;8505:32;;8555:24;8567:11;8555:7;:11;;:24;;;;:::i;:::-;8548:31;;;8264:323;;;:::o;11575:483::-;5985:4;5976:6;;:13;;;;;;;;;;;;;;;;;;11653:21:::1;11691:1;11677:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11653:40;;11722:4;11704;11709:1;11704:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11748:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11738:4;11743:1;11738:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11781:62;11798:4;11813:15;;;;;;;;;;;11831:11;11781:8;:62::i;:::-;11854:15;;;;;;;;;;;:66;;;11935:11;11961:1;11977:4;12004;12024:15;11854:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11642:416;6021:5:::0;6012:6;;:14;;;;;;;;;;;;;;;;;;11575:483;:::o;12769:282::-;12925:7;12920:28;;12934:14;:12;:14::i;:::-;12920:28;12959:44;12977:6;12985:9;12996:6;12959:17;:44::i;:::-;13019:7;13014:29;;13028:15;:13;:15::i;:::-;13014:29;12769:282;;;;:::o;15730:164::-;15772:7;15793:15;15810;15829:19;:17;:19::i;:::-;15792:56;;;;15866:20;15878:7;15866;:11;;:20;;;;:::i;:::-;15859:27;;;;15730:164;:::o;3024:132::-;3082:7;3109:39;3113:1;3116;3109:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3102:46;;3024:132;;;;:::o;8595:219::-;8655:1;8642:9;;:14;:30;;;;;8671:1;8660:7;;:12;8642:30;8638:43;;;8674:7;;8638:43;8713:9;;8693:17;:29;;;;8751:7;;8733:15;:25;;;;8783:1;8771:9;:13;;;;8805:1;8795:7;:11;;;;8595:219;:::o;13059:610::-;13206:15;13236:23;13274:12;13301:23;13339:12;13366:13;13393:19;13404:7;13393:10;:19::i;:::-;13191:221;;;;;;;;;;;;13441:28;13461:7;13441;:15;13449:6;13441:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13423:7;:15;13431:6;13423:15;;;;;;;;;;;;;;;:46;;;;13501:39;13524:15;13501:7;:18;13509:9;13501:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13480:7;:18;13488:9;13480:18;;;;;;;;;;;;;;;:60;;;;13551:16;13561:5;13551:9;:16::i;:::-;13578:23;13590:4;13596;13578:11;:23::i;:::-;13634:9;13617:44;;13626:6;13617:44;;;13645:15;13617:44;;;;;;:::i;:::-;;;;;;;;13180:489;;;;;;13059:610;;;:::o;8822:117::-;8878:17;;8866:9;:29;;;;8916:15;;8906:7;:25;;;;8822:117::o;15902:257::-;15953:7;15962;15982:15;16000:7;;15982:25;;16018:15;4831;16018:25;;16068:20;4831:15;16068:7;;:11;;:20;;;;:::i;:::-;16058:7;:30;16054:61;;;16098:7;;4831:15;16090:25;;;;;;;;16054:61;16134:7;16143;16126:25;;;;;;15902:257;;;:::o;3164:223::-;3284:7;3316:1;3312;:5;3319:12;3304:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3343:9;3359:1;3355;:5;;;;:::i;:::-;3343:17;;3378:1;3371:8;;;3164:223;;;;;:::o;14088:615::-;14188:7;14210;14232;14254;14276;14298;14334:23;14359:12;14373:13;14403:40;14415:7;14424:9;;14435:7;;14403:11;:40::i;:::-;14333:110;;;;;;14454:19;14476:10;:8;:10::i;:::-;14454:32;;14498:15;14515:23;14540:12;14569:46;14581:7;14590:4;14596:5;14603:11;14569;:46::i;:::-;14497:118;;;;;;14634:7;14643:15;14660:4;14666:15;14683:4;14689:5;14626:69;;;;;;;;;;;;;;;;;;;14088:615;;;;;;;:::o;2394:136::-;2452:7;2479:43;2483:1;2486;2479:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2472:50;;2394:136;;;;:::o;2207:179::-;2265:7;2285:9;2301:1;2297;:5;;;;:::i;:::-;2285:17;;2326:1;2321;:6;;2313:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2377:1;2370:8;;;2207:179;;;;:::o;13677:211::-;13730:19;13752:10;:8;:10::i;:::-;13730:32;;13773:13;13789:22;13799:11;13789:5;:9;;:22;;;;:::i;:::-;13773:38;;13847:33;13874:5;13847:7;:22;13863:4;13847:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13822:7;:22;13838:4;13822:22;;;;;;;;;;;;;;;:58;;;;13719:169;;13677:211;:::o;13896:147::-;13974:17;13986:4;13974:7;;:11;;:17;;;;:::i;:::-;13964:7;:27;;;;14015:20;14030:4;14015:10;;:14;;:20;;;;:::i;:::-;14002:10;:33;;;;13896:147;;:::o;14711:469::-;14880:7;14902;14924;14959:12;14974:30;15000:3;14974:21;14986:8;14974:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14959:45;;15015:13;15031:28;15055:3;15031:19;15043:6;15031:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15015:44;;15070:23;15096:28;15118:5;15096:17;15108:4;15096:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15070:54;;15143:15;15160:4;15166:5;15135:37;;;;;;;;;14711:469;;;;;;;:::o;15188:534::-;15382:7;15404;15426;15461:15;15479:24;15491:11;15479:7;:11;;:24;;;;:::i;:::-;15461:42;;15514:12;15529:21;15538:11;15529:4;:8;;:21;;;;:::i;:::-;15514:36;;15561:13;15577:22;15587:11;15577:5;:9;;:22;;;;:::i;:::-;15561:38;;15610:23;15636:28;15658:5;15636:17;15648:4;15636:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15610:54;;15683:7;15692:15;15709:4;15675:39;;;;;;;;;;15188:534;;;;;;;;:::o;2770:246::-;2828:7;2857:1;2852;:6;2848:47;;;2882:1;2875:8;;;;2848:47;2905:9;2921:1;2917;:5;;;;:::i;:::-;2905:17;;2950:1;2945;2941;:5;;;;:::i;:::-;:10;2933:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3007:1;3000:8;;;2770:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:117;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8643:568;8716:8;8726:6;8776:3;8769:4;8761:6;8757:17;8753:27;8743:122;;8784:79;;:::i;:::-;8743:122;8897:6;8884:20;8874:30;;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9063:4;9055:6;9051:17;9039:29;;9117:3;9109:4;9101:6;9097:17;9087:8;9083:32;9080:41;9077:128;;;9124:79;;:::i;:::-;9077:128;8643:568;;;;;:::o;9217:698::-;9309:6;9317;9325;9374:2;9362:9;9353:7;9349:23;9345:32;9342:119;;;9380:79;;:::i;:::-;9342:119;9528:1;9517:9;9513:17;9500:31;9558:18;9550:6;9547:30;9544:117;;;9580:79;;:::i;:::-;9544:117;9693:80;9765:7;9756:6;9745:9;9741:22;9693:80;:::i;:::-;9675:98;;;;9471:312;9822:2;9848:50;9890:7;9881:6;9870:9;9866:22;9848:50;:::i;:::-;9838:60;;9793:115;9217:698;;;;;:::o;9921:474::-;9989:6;9997;10046:2;10034:9;10025:7;10021:23;10017:32;10014:119;;;10052:79;;:::i;:::-;10014:119;10172:1;10197:53;10242:7;10233:6;10222:9;10218:22;10197:53;:::i;:::-;10187:63;;10143:117;10299:2;10325:53;10370:7;10361:6;10350:9;10346:22;10325:53;:::i;:::-;10315:63;;10270:118;9921:474;;;;;:::o;10401:182::-;10541:34;10537:1;10529:6;10525:14;10518:58;10401:182;:::o;10589:366::-;10731:3;10752:67;10816:2;10811:3;10752:67;:::i;:::-;10745:74;;10828:93;10917:3;10828:93;:::i;:::-;10946:2;10941:3;10937:12;10930:19;;10589:366;;;:::o;10961:419::-;11127:4;11165:2;11154:9;11150:18;11142:26;;11214:9;11208:4;11204:20;11200:1;11189:9;11185:17;11178:47;11242:131;11368:4;11242:131;:::i;:::-;11234:139;;10961:419;;;:::o;11386:180::-;11434:77;11431:1;11424:88;11531:4;11528:1;11521:15;11555:4;11552:1;11545:15;11572:102;11614:8;11661:5;11658:1;11654:13;11633:34;;11572:102;;;:::o;11680:848::-;11741:5;11748:4;11772:6;11763:15;;11796:5;11787:14;;11810:712;11831:1;11821:8;11818:15;11810:712;;;11926:4;11921:3;11917:14;11911:4;11908:24;11905:50;;;11935:18;;:::i;:::-;11905:50;11985:1;11975:8;11971:16;11968:451;;;12400:4;12393:5;12389:16;12380:25;;11968:451;12450:4;12444;12440:15;12432:23;;12480:32;12503:8;12480:32;:::i;:::-;12468:44;;11810:712;;;11680:848;;;;;;;:::o;12534:1073::-;12588:5;12779:8;12769:40;;12800:1;12791:10;;12802:5;;12769:40;12828:4;12818:36;;12845:1;12836:10;;12847:5;;12818:36;12914:4;12962:1;12957:27;;;;12998:1;12993:191;;;;12907:277;;12957:27;12975:1;12966:10;;12977:5;;;12993:191;13038:3;13028:8;13025:17;13022:43;;;13045:18;;:::i;:::-;13022:43;13094:8;13091:1;13087:16;13078:25;;13129:3;13122:5;13119:14;13116:40;;;13136:18;;:::i;:::-;13116:40;13169:5;;;12907:277;;13293:2;13283:8;13280:16;13274:3;13268:4;13265:13;13261:36;13243:2;13233:8;13230:16;13225:2;13219:4;13216:12;13212:35;13196:111;13193:246;;;13349:8;13343:4;13339:19;13330:28;;13384:3;13377:5;13374:14;13371:40;;;13391:18;;:::i;:::-;13371:40;13424:5;;13193:246;13464:42;13502:3;13492:8;13486:4;13483:1;13464:42;:::i;:::-;13449:57;;;;13538:4;13533:3;13529:14;13522:5;13519:25;13516:51;;;13547:18;;:::i;:::-;13516:51;13596:4;13589:5;13585:16;13576:25;;12534:1073;;;;;;:::o;13613:281::-;13671:5;13695:23;13713:4;13695:23;:::i;:::-;13687:31;;13739:25;13755:8;13739:25;:::i;:::-;13727:37;;13783:104;13820:66;13810:8;13804:4;13783:104;:::i;:::-;13774:113;;13613:281;;;;:::o;13900:348::-;13940:7;13963:20;13981:1;13963:20;:::i;:::-;13958:25;;13997:20;14015:1;13997:20;:::i;:::-;13992:25;;14185:1;14117:66;14113:74;14110:1;14107:81;14102:1;14095:9;14088:17;14084:105;14081:131;;;14192:18;;:::i;:::-;14081:131;14240:1;14237;14233:9;14222:20;;13900:348;;;;:::o;14254:305::-;14294:3;14313:20;14331:1;14313:20;:::i;:::-;14308:25;;14347:20;14365:1;14347:20;:::i;:::-;14342:25;;14501:1;14433:66;14429:74;14426:1;14423:81;14420:107;;;14507:18;;:::i;:::-;14420:107;14551:1;14548;14544:9;14537:16;;14254:305;;;;:::o;14565:167::-;14705:19;14701:1;14693:6;14689:14;14682:43;14565:167;:::o;14738:366::-;14880:3;14901:67;14965:2;14960:3;14901:67;:::i;:::-;14894:74;;14977:93;15066:3;14977:93;:::i;:::-;15095:2;15090:3;15086:12;15079:19;;14738:366;;;:::o;15110:419::-;15276:4;15314:2;15303:9;15299:18;15291:26;;15363:9;15357:4;15353:20;15349:1;15338:9;15334:17;15327:47;15391:131;15517:4;15391:131;:::i;:::-;15383:139;;15110:419;;;:::o;15535:168::-;15675:20;15671:1;15663:6;15659:14;15652:44;15535:168;:::o;15709:366::-;15851:3;15872:67;15936:2;15931:3;15872:67;:::i;:::-;15865:74;;15948:93;16037:3;15948:93;:::i;:::-;16066:2;16061:3;16057:12;16050:19;;15709:366;;;:::o;16081:419::-;16247:4;16285:2;16274:9;16270:18;16262:26;;16334:9;16328:4;16324:20;16320:1;16309:9;16305:17;16298:47;16362:131;16488:4;16362:131;:::i;:::-;16354:139;;16081:419;;;:::o;16506:180::-;16554:77;16551:1;16544:88;16651:4;16648:1;16641:15;16675:4;16672:1;16665:15;16692:233;16731:3;16754:24;16772:5;16754:24;:::i;:::-;16745:33;;16800:66;16793:5;16790:77;16787:103;;;16870:18;;:::i;:::-;16787:103;16917:1;16910:5;16906:13;16899:20;;16692:233;;;:::o;16931:225::-;17071:34;17067:1;17059:6;17055:14;17048:58;17140:8;17135:2;17127:6;17123:15;17116:33;16931:225;:::o;17162:366::-;17304:3;17325:67;17389:2;17384:3;17325:67;:::i;:::-;17318:74;;17401:93;17490:3;17401:93;:::i;:::-;17519:2;17514:3;17510:12;17503:19;;17162:366;;;:::o;17534:419::-;17700:4;17738:2;17727:9;17723:18;17715:26;;17787:9;17781:4;17777:20;17773:1;17762:9;17758:17;17751:47;17815:131;17941:4;17815:131;:::i;:::-;17807:139;;17534:419;;;:::o;17959:223::-;18099:34;18095:1;18087:6;18083:14;18076:58;18168:6;18163:2;18155:6;18151:15;18144:31;17959:223;:::o;18188:366::-;18330:3;18351:67;18415:2;18410:3;18351:67;:::i;:::-;18344:74;;18427:93;18516:3;18427:93;:::i;:::-;18545:2;18540:3;18536:12;18529:19;;18188:366;;;:::o;18560:419::-;18726:4;18764:2;18753:9;18749:18;18741:26;;18813:9;18807:4;18803:20;18799:1;18788:9;18784:17;18777:47;18841:131;18967:4;18841:131;:::i;:::-;18833:139;;18560:419;;;:::o;18985:221::-;19125:34;19121:1;19113:6;19109:14;19102:58;19194:4;19189:2;19181:6;19177:15;19170:29;18985:221;:::o;19212:366::-;19354:3;19375:67;19439:2;19434:3;19375:67;:::i;:::-;19368:74;;19451:93;19540:3;19451:93;:::i;:::-;19569:2;19564:3;19560:12;19553:19;;19212:366;;;:::o;19584:419::-;19750:4;19788:2;19777:9;19773:18;19765:26;;19837:9;19831:4;19827:20;19823:1;19812:9;19808:17;19801:47;19865:131;19991:4;19865:131;:::i;:::-;19857:139;;19584:419;;;:::o;20009:224::-;20149:34;20145:1;20137:6;20133:14;20126:58;20218:7;20213:2;20205:6;20201:15;20194:32;20009:224;:::o;20239:366::-;20381:3;20402:67;20466:2;20461:3;20402:67;:::i;:::-;20395:74;;20478:93;20567:3;20478:93;:::i;:::-;20596:2;20591:3;20587:12;20580:19;;20239:366;;;:::o;20611:419::-;20777:4;20815:2;20804:9;20800:18;20792:26;;20864:9;20858:4;20854:20;20850:1;20839:9;20835:17;20828:47;20892:131;21018:4;20892:131;:::i;:::-;20884:139;;20611:419;;;:::o;21036:222::-;21176:34;21172:1;21164:6;21160:14;21153:58;21245:5;21240:2;21232:6;21228:15;21221:30;21036:222;:::o;21264:366::-;21406:3;21427:67;21491:2;21486:3;21427:67;:::i;:::-;21420:74;;21503:93;21592:3;21503:93;:::i;:::-;21621:2;21616:3;21612:12;21605:19;;21264:366;;;:::o;21636:419::-;21802:4;21840:2;21829:9;21825:18;21817:26;;21889:9;21883:4;21879:20;21875:1;21864:9;21860:17;21853:47;21917:131;22043:4;21917:131;:::i;:::-;21909:139;;21636:419;;;:::o;22061:228::-;22201:34;22197:1;22189:6;22185:14;22178:58;22270:11;22265:2;22257:6;22253:15;22246:36;22061:228;:::o;22295:366::-;22437:3;22458:67;22522:2;22517:3;22458:67;:::i;:::-;22451:74;;22534:93;22623:3;22534:93;:::i;:::-;22652:2;22647:3;22643:12;22636:19;;22295:366;;;:::o;22667:419::-;22833:4;22871:2;22860:9;22856:18;22848:26;;22920:9;22914:4;22910:20;22906:1;22895:9;22891:17;22884:47;22948:131;23074:4;22948:131;:::i;:::-;22940:139;;22667:419;;;:::o;23092:250::-;23232:34;23228:1;23220:6;23216:14;23209:58;23301:33;23296:2;23288:6;23284:15;23277:58;23092:250;:::o;23348:366::-;23490:3;23511:67;23575:2;23570:3;23511:67;:::i;:::-;23504:74;;23587:93;23676:3;23587:93;:::i;:::-;23705:2;23700:3;23696:12;23689:19;;23348:366;;;:::o;23720:419::-;23886:4;23924:2;23913:9;23909:18;23901:26;;23973:9;23967:4;23963:20;23959:1;23948:9;23944:17;23937:47;24001:131;24127:4;24001:131;:::i;:::-;23993:139;;23720:419;;;:::o;24145:178::-;24285:30;24281:1;24273:6;24269:14;24262:54;24145:178;:::o;24329:366::-;24471:3;24492:67;24556:2;24551:3;24492:67;:::i;:::-;24485:74;;24568:93;24657:3;24568:93;:::i;:::-;24686:2;24681:3;24677:12;24670:19;;24329:366;;;:::o;24701:419::-;24867:4;24905:2;24894:9;24890:18;24882:26;;24954:9;24948:4;24944:20;24940:1;24929:9;24925:17;24918:47;24982:131;25108:4;24982:131;:::i;:::-;24974:139;;24701:419;;;:::o;25126:222::-;25266:34;25262:1;25254:6;25250:14;25243:58;25335:5;25330:2;25322:6;25318:15;25311:30;25126:222;:::o;25354:366::-;25496:3;25517:67;25581:2;25576:3;25517:67;:::i;:::-;25510:74;;25593:93;25682:3;25593:93;:::i;:::-;25711:2;25706:3;25702:12;25695:19;;25354:366;;;:::o;25726:419::-;25892:4;25930:2;25919:9;25915:18;25907:26;;25979:9;25973:4;25969:20;25965:1;25954:9;25950:17;25943:47;26007:131;26133:4;26007:131;:::i;:::-;25999:139;;25726:419;;;:::o;26151:191::-;26191:4;26211:20;26229:1;26211:20;:::i;:::-;26206:25;;26245:20;26263:1;26245:20;:::i;:::-;26240:25;;26284:1;26281;26278:8;26275:34;;;26289:18;;:::i;:::-;26275:34;26334:1;26331;26327:9;26319:17;;26151:191;;;;:::o;26348:229::-;26488:34;26484:1;26476:6;26472:14;26465:58;26557:12;26552:2;26544:6;26540:15;26533:37;26348:229;:::o;26583:366::-;26725:3;26746:67;26810:2;26805:3;26746:67;:::i;:::-;26739:74;;26822:93;26911:3;26822:93;:::i;:::-;26940:2;26935:3;26931:12;26924:19;;26583:366;;;:::o;26955:419::-;27121:4;27159:2;27148:9;27144:18;27136:26;;27208:9;27202:4;27198:20;27194:1;27183:9;27179:17;27172:47;27236:131;27362:4;27236:131;:::i;:::-;27228:139;;26955:419;;;:::o;27380:180::-;27428:77;27425:1;27418:88;27525:4;27522:1;27515:15;27549:4;27546:1;27539:15;27566:143;27623:5;27654:6;27648:13;27639:22;;27670:33;27697:5;27670:33;:::i;:::-;27566:143;;;;:::o;27715:351::-;27785:6;27834:2;27822:9;27813:7;27809:23;27805:32;27802:119;;;27840:79;;:::i;:::-;27802:119;27960:1;27985:64;28041:7;28032:6;28021:9;28017:22;27985:64;:::i;:::-;27975:74;;27931:128;27715:351;;;;:::o;28072:85::-;28117:7;28146:5;28135:16;;28072:85;;;:::o;28163:158::-;28221:9;28254:61;28272:42;28281:32;28307:5;28281:32;:::i;:::-;28272:42;:::i;:::-;28254:61;:::i;:::-;28241:74;;28163:158;;;:::o;28327:147::-;28422:45;28461:5;28422:45;:::i;:::-;28417:3;28410:58;28327:147;;:::o;28480:114::-;28547:6;28581:5;28575:12;28565:22;;28480:114;;;:::o;28600:184::-;28699:11;28733:6;28728:3;28721:19;28773:4;28768:3;28764:14;28749:29;;28600:184;;;;:::o;28790:132::-;28857:4;28880:3;28872:11;;28910:4;28905:3;28901:14;28893:22;;28790:132;;;:::o;28928:108::-;29005:24;29023:5;29005:24;:::i;:::-;29000:3;28993:37;28928:108;;:::o;29042:179::-;29111:10;29132:46;29174:3;29166:6;29132:46;:::i;:::-;29210:4;29205:3;29201:14;29187:28;;29042:179;;;;:::o;29227:113::-;29297:4;29329;29324:3;29320:14;29312:22;;29227:113;;;:::o;29376:732::-;29495:3;29524:54;29572:5;29524:54;:::i;:::-;29594:86;29673:6;29668:3;29594:86;:::i;:::-;29587:93;;29704:56;29754:5;29704:56;:::i;:::-;29783:7;29814:1;29799:284;29824:6;29821:1;29818:13;29799:284;;;29900:6;29894:13;29927:63;29986:3;29971:13;29927:63;:::i;:::-;29920:70;;30013:60;30066:6;30013:60;:::i;:::-;30003:70;;29859:224;29846:1;29843;29839:9;29834:14;;29799:284;;;29803:14;30099:3;30092:10;;29500:608;;;29376:732;;;;:::o;30114:831::-;30377:4;30415:3;30404:9;30400:19;30392:27;;30429:71;30497:1;30486:9;30482:17;30473:6;30429:71;:::i;:::-;30510:80;30586:2;30575:9;30571:18;30562:6;30510:80;:::i;:::-;30637:9;30631:4;30627:20;30622:2;30611:9;30607:18;30600:48;30665:108;30768:4;30759:6;30665:108;:::i;:::-;30657:116;;30783:72;30851:2;30840:9;30836:18;30827:6;30783:72;:::i;:::-;30865:73;30933:3;30922:9;30918:19;30909:6;30865:73;:::i;:::-;30114:831;;;;;;;;:::o;30951:180::-;30999:77;30996:1;30989:88;31096:4;31093:1;31086:15;31120:4;31117:1;31110:15;31137:185;31177:1;31194:20;31212:1;31194:20;:::i;:::-;31189:25;;31228:20;31246:1;31228:20;:::i;:::-;31223:25;;31267:1;31257:35;;31272:18;;:::i;:::-;31257:35;31314:1;31311;31307:9;31302:14;;31137:185;;;;:::o;31328:177::-;31468:29;31464:1;31456:6;31452:14;31445:53;31328:177;:::o;31511:366::-;31653:3;31674:67;31738:2;31733:3;31674:67;:::i;:::-;31667:74;;31750:93;31839:3;31750:93;:::i;:::-;31868:2;31863:3;31859:12;31852:19;;31511:366;;;:::o;31883:419::-;32049:4;32087:2;32076:9;32072:18;32064:26;;32136:9;32130:4;32126:20;32122:1;32111:9;32107:17;32100:47;32164:131;32290:4;32164:131;:::i;:::-;32156:139;;31883:419;;;:::o;32308:220::-;32448:34;32444:1;32436:6;32432:14;32425:58;32517:3;32512:2;32504:6;32500:15;32493:28;32308:220;:::o;32534:366::-;32676:3;32697:67;32761:2;32756:3;32697:67;:::i;:::-;32690:74;;32773:93;32862:3;32773:93;:::i;:::-;32891:2;32886:3;32882:12;32875:19;;32534:366;;;:::o;32906:419::-;33072:4;33110:2;33099:9;33095:18;33087:26;;33159:9;33153:4;33149:20;33145:1;33134:9;33130:17;33123:47;33187:131;33313:4;33187:131;:::i;:::-;33179:139;;32906:419;;;:::o

Swarm Source

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