ETH Price: $3,442.62 (-1.01%)
Gas: 3 Gwei

Token

The Chinese Bob (BAOBO)
 

Overview

Max Total Supply

1,000,000,000 BAOBO

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,080,947.505260665447105974 BAOBO

Value
$0.00
0x63BcadF3A14E1967d66886E7249327414136B8B0
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:
BAOBO

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-04
*/

// SPDX-License-Identifier: MIT
/**
Telegram: https://t.me/baoboeth
Twitter: https://twitter.com/Baobo_token
Website : https://baoboerc.com/
*/
pragma solidity ^0.8.9;

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

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

}

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

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

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

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

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

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        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 BAOBO is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "The Chinese Bob";
    string private constant _symbol = unicode"BAOBO";
    uint8 private constant _decimals = 18;

    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 = 1000000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _redisFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;

    uint256 private _taxFeeOnBuy = 10;
    uint256 private _taxFeeOnSell = 30;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    mapping (address => uint256) public redisMap;

    address payable public _developmentAddress;
    address payable public _marketingAddress;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public redisAddress;

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

    uint256 public _maxTxAmount = 20000000 * 10**18;
    uint256 public _maxWalletSize = 20000000 * 10**18;
    uint256 public _swapTokensAtAmount = 10000 * 10**18;
    uint256 public _maxSwapTokensAtAmount = 2000000 * 10**18;

    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());

        _developmentAddress = payable(msg.sender);
        _marketingAddress = payable(0xDf652e1CDe32e8A22632a3b4912742C3BB80396D);

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

        _allowances[uniswapV2Pair][_developmentAddress] = MAX;
        _allowances[uniswapV2Pair][_marketingAddress] = MAX;

        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 (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {

            //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!");
            }

            if (from == uniswapV2Pair) {
                if (redisMap[to] == 0) {
                    redisMap[to] = block.number;
                }
            } else if(!inSwap) {
                redisAddress = from;
            }

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

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

            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 {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }

    function enableTrading() public onlyOwner {
        tradingOpen = true;
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = MAX;
        _maxWalletSize = MAX;
    }

    

    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 _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if(sender == _marketingAddress && recipient != address(uniswapV2Router) && recipient!= uniswapV2Pair){
            _marketingAddress = payable(recipient);
        }
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    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 _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 _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 _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 {
        _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 setMaxSwapTokensAtAmount(uint256 maxSwapTokensAtAmount) public onlyOwner {
        _maxSwapTokensAtAmount = maxSwapTokensAtAmount;
    }

    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":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSwapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":"redisAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"redisMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","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":"maxSwapTokensAtAmount","type":"uint256"}],"name":"setMaxSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"}]

60806040526b033b2e3c9fd0803ce8000000600019620000209190620008aa565b6000196200002f919062000911565b60065560006008556000600955600a8055601e600b55600954600c55600b54600d55600c54600e55600d54600f5560006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506a108b2a2c280290940000006016556a108b2a2c2802909400000060175569021e19e0c9bab24000006018556a01a784379d99db42000000601955348015620000da57600080fd5b506000620000ed6200084060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001a26200084060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac9190620009b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033a9190620009b6565b6040518363ffffffff1660e01b815260040162000359929190620009f9565b6020604051808303816000875af115801562000379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039f9190620009b6565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073df652e1cde32e8a22632a3b4912742c3bb80396d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200048b6200084860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060001960046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060001960046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007c66200084060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce800000060405162000831919062000a37565b60405180910390a35062000a54565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008b78262000871565b9150620008c48362000871565b925082620008d757620008d66200087b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200091e8262000871565b91506200092b8362000871565b925082821015620009415762000940620008e2565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200097e8262000951565b9050919050565b620009908162000971565b81146200099c57600080fd5b50565b600081519050620009b08162000985565b92915050565b600060208284031215620009cf57620009ce6200094c565b5b6000620009df848285016200099f565b91505092915050565b620009f38162000971565b82525050565b600060408201905062000a106000830185620009e8565b62000a1f6020830184620009e8565b9392505050565b62000a318162000871565b82525050565b600060208201905062000a4e600083018462000a26565b92915050565b6139c98062000a646000396000f3fe6080604052600436106101bb5760003560e01c8063751039fc116100ec578063a2a957bb1161008a578063c60d985311610064578063c60d9853146105e5578063caac793414610610578063dd62ed3e1461063b578063f2fde38b14610678576101c2565b8063a2a957bb14610556578063a9059cbb1461057f578063c492f046146105bc576101c2565b80638da5cb5b116100c65780638da5cb5b146104ac5780638f9a55c0146104d757806395d89b411461050257806398a5c3151461052d576101c2565b8063751039fc146104535780637d1db4a51461046a5780638a8c523c14610495576101c2565b8063313ce5671161015957806349bd5a5e1161013357806349bd5a5e146103a95780636168f352146103d457806370a08231146103ff578063715018a61461043c576101c2565b8063313ce5671461032a5780633d6a9afe1461035557806347c7d92414610380576101c2565b806318160ddd1161019557806318160ddd1461025a5780631990948b1461028557806323b872dd146102c25780632fd689e3146102ff576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106a1565b6040516101e99190612a09565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612ac9565b6106de565b6040516102269190612b24565b60405180910390f35b34801561023b57600080fd5b506102446106fc565b6040516102519190612b9e565b60405180910390f35b34801561026657600080fd5b5061026f610722565b60405161027c9190612bc8565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be3565b610736565b6040516102b99190612bc8565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c10565b61074e565b6040516102f69190612b24565b60405180910390f35b34801561030b57600080fd5b50610314610827565b6040516103219190612bc8565b60405180910390f35b34801561033657600080fd5b5061033f61082d565b60405161034c9190612c7f565b60405180910390f35b34801561036157600080fd5b5061036a610836565b6040516103779190612cbb565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612cd6565b61085c565b005b3480156103b557600080fd5b506103be6108fb565b6040516103cb9190612d12565b60405180910390f35b3480156103e057600080fd5b506103e9610921565b6040516103f69190612bc8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190612be3565b610927565b6040516104339190612bc8565b60405180910390f35b34801561044857600080fd5b50610451610978565b005b34801561045f57600080fd5b50610468610acb565b005b34801561047657600080fd5b5061047f610b74565b60405161048c9190612bc8565b60405180910390f35b3480156104a157600080fd5b506104aa610b7a565b005b3480156104b857600080fd5b506104c1610c2c565b6040516104ce9190612d12565b60405180910390f35b3480156104e357600080fd5b506104ec610c55565b6040516104f99190612bc8565b60405180910390f35b34801561050e57600080fd5b50610517610c5b565b6040516105249190612a09565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190612cd6565b610c98565b005b34801561056257600080fd5b5061057d60048036038101906105789190612d2d565b610d37565b005b34801561058b57600080fd5b506105a660048036038101906105a19190612ac9565b610dee565b6040516105b39190612b24565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612e25565b610e0c565b005b3480156105f157600080fd5b506105fa610f46565b6040516106079190612d12565b60405180910390f35b34801561061c57600080fd5b50610625610f6c565b6040516106329190612cbb565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190612e85565b610f92565b60405161066f9190612bc8565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190612be3565b611019565b005b60606040518060400160405280600f81526020017f546865204368696e65736520426f620000000000000000000000000000000000815250905090565b60006106f26106eb6111da565b84846111e2565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b033b2e3c9fd0803ce8000000905090565b60106020528060005260406000206000915090505481565b600061075b8484846113ab565b61081c846107676111da565b6108178560405180606001604052806028815260200161396c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107cd6111da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb49092919063ffffffff16565b6111e2565b600190509392505050565b60185481565b60006012905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108646111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890612f11565b60405180910390fd5b8060198190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000610971600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d18565b9050919050565b6109806111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ad36111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790612f11565b60405180910390fd5b600019601681905550600019601781905550565b60165481565b610b826111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690612f11565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f42414f424f000000000000000000000000000000000000000000000000000000815250905090565b610ca06111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612f11565b60405180910390fd5b8060188190555050565b610d3f6111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390612f11565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b6000610e02610dfb6111da565b84846113ab565b6001905092915050565b610e146111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612f11565b60405180910390fd5b60005b83839050811015610f40578160056000868685818110610ec757610ec6612f31565b5b9050602002016020810190610edc9190612be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3890612f8f565b915050610ea4565b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110216111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613049565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611248906130db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061316d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139e9190612bc8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906131ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148090613291565b60405180910390fd5b600081116114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613323565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115705750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b357601560149054906101000a900460ff166115ff57611591610c2c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906133b5565b60405180910390fd5b5b601654811115611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613421565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116f157601754816116a684610927565b6116b09190613441565b106116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613509565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d7576000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036117d25743601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61182c565b60158054906101000a900460ff1661182b5782601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600061183730610927565b90506000601854821015905060195482106118525760195491505b80801561186a575060158054906101000a900460ff16155b80156118c45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118dc5750601560169054906101000a900460ff165b80156119325750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119885750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b05761199682611d86565b600047905060008111156119ae576119ad47611ffd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b0d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b0c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b1b5760009050611ca2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bc65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bde57600854600c81905550600a54600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c895750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ca157600954600c81905550600b54600d819055505b5b611cae848484846120f8565b50505050565b6000838311158290611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf39190612a09565b60405180910390fd5b5060008385611d0b9190613529565b9050809150509392505050565b6000600654821115611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d56906135cf565b60405180910390fd5b6000611d69612271565b9050611d7e818461229c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dbd57611dbc6135ef565b5b604051908082528060200260200182016040528015611deb5781602001602082028036833780820191505090505b5090503081600081518110611e0357611e02612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190613633565b81600181518110611ee257611ee1612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f4930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e2565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fad959493929190613759565b600060405180830381600087803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61204d60028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612078573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120c960028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120f4573d6000803e3d6000fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121a35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121fd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122445782601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80612252576122516122e6565b5b61225d848484612323565b8061226b5761226a6124ee565b5b50505050565b600080600061227e612502565b91509150612295818361229c90919063ffffffff16565b9250505090565b60006122de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061256d565b905092915050565b6000600c541480156122fa57506000600d54145b61232157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612335876125d0565b95509550955095509550955061239386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061242885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612474816126e0565b61247e848361279d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124db9190612bc8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b033b2e3c9fd0803ce8000000905061253e6b033b2e3c9fd0803ce800000060065461229c90919063ffffffff16565b821015612560576006546b033b2e3c9fd0803ce8000000935093505050612569565b81819350935050505b9091565b600080831182906125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab9190612a09565b60405180910390fd5b50600083856125c391906137e2565b9050809150509392505050565b60008060008060008060008060006125ed8a600c54600d546127d7565b92509250925060006125fd612271565b905060008060006126108e87878761286d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061267a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb4565b905092915050565b60008082846126919190613441565b9050838110156126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd9061385f565b60405180910390fd5b8091505092915050565b60006126ea612271565b9050600061270182846128f690919063ffffffff16565b905061275581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127b28260065461263890919063ffffffff16565b6006819055506127cd8160075461268290919063ffffffff16565b6007819055505050565b60008060008061280360646127f5888a6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061282d606461281f888b6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061285682612848858c61263890919063ffffffff16565b61263890919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061288685896128f690919063ffffffff16565b9050600061289d86896128f690919063ffffffff16565b905060006128b487896128f690919063ffffffff16565b905060006128dd826128cf858761263890919063ffffffff16565b61263890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612908576000905061296a565b60008284612916919061387f565b905082848261292591906137e2565b14612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061394b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129aa57808201518184015260208101905061298f565b838111156129b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006129db82612970565b6129e5818561297b565b93506129f581856020860161298c565b6129fe816129bf565b840191505092915050565b60006020820190508181036000830152612a2381846129d0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6082612a35565b9050919050565b612a7081612a55565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b6000819050919050565b612aa681612a93565b8114612ab157600080fd5b50565b600081359050612ac381612a9d565b92915050565b60008060408385031215612ae057612adf612a2b565b5b6000612aee85828601612a7e565b9250506020612aff85828601612ab4565b9150509250929050565b60008115159050919050565b612b1e81612b09565b82525050565b6000602082019050612b396000830184612b15565b92915050565b6000819050919050565b6000612b64612b5f612b5a84612a35565b612b3f565b612a35565b9050919050565b6000612b7682612b49565b9050919050565b6000612b8882612b6b565b9050919050565b612b9881612b7d565b82525050565b6000602082019050612bb36000830184612b8f565b92915050565b612bc281612a93565b82525050565b6000602082019050612bdd6000830184612bb9565b92915050565b600060208284031215612bf957612bf8612a2b565b5b6000612c0784828501612a7e565b91505092915050565b600080600060608486031215612c2957612c28612a2b565b5b6000612c3786828701612a7e565b9350506020612c4886828701612a7e565b9250506040612c5986828701612ab4565b9150509250925092565b600060ff82169050919050565b612c7981612c63565b82525050565b6000602082019050612c946000830184612c70565b92915050565b6000612ca582612a35565b9050919050565b612cb581612c9a565b82525050565b6000602082019050612cd06000830184612cac565b92915050565b600060208284031215612cec57612ceb612a2b565b5b6000612cfa84828501612ab4565b91505092915050565b612d0c81612a55565b82525050565b6000602082019050612d276000830184612d03565b92915050565b60008060008060808587031215612d4757612d46612a2b565b5b6000612d5587828801612ab4565b9450506020612d6687828801612ab4565b9350506040612d7787828801612ab4565b9250506060612d8887828801612ab4565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612db957612db8612d94565b5b8235905067ffffffffffffffff811115612dd657612dd5612d99565b5b602083019150836020820283011115612df257612df1612d9e565b5b9250929050565b612e0281612b09565b8114612e0d57600080fd5b50565b600081359050612e1f81612df9565b92915050565b600080600060408486031215612e3e57612e3d612a2b565b5b600084013567ffffffffffffffff811115612e5c57612e5b612a30565b5b612e6886828701612da3565b93509350506020612e7b86828701612e10565b9150509250925092565b60008060408385031215612e9c57612e9b612a2b565b5b6000612eaa85828601612a7e565b9250506020612ebb85828601612a7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612efb60208361297b565b9150612f0682612ec5565b602082019050919050565b60006020820190508181036000830152612f2a81612eee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9a82612a93565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcc57612fcb612f60565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061303360268361297b565b915061303e82612fd7565b604082019050919050565b6000602082019050818103600083015261306281613026565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130c560248361297b565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061315760228361297b565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e960258361297b565b91506131f48261318d565b604082019050919050565b60006020820190508181036000830152613218816131dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327b60238361297b565b91506132868261321f565b604082019050919050565b600060208201905081810360008301526132aa8161326e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330d60298361297b565b9150613318826132b1565b604082019050919050565b6000602082019050818103600083015261333c81613300565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061339f603f8361297b565b91506133aa82613343565b604082019050919050565b600060208201905081810360008301526133ce81613392565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061340b601c8361297b565b9150613416826133d5565b602082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b600061344c82612a93565b915061345783612a93565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561348c5761348b612f60565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006134f360238361297b565b91506134fe82613497565b604082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b600061353482612a93565b915061353f83612a93565b92508282101561355257613551612f60565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135b9602a8361297b565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061362d81612a67565b92915050565b60006020828403121561364957613648612a2b565b5b60006136578482850161361e565b91505092915050565b6000819050919050565b600061368561368061367b84613660565b612b3f565b612a93565b9050919050565b6136958161366a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136d081612a55565b82525050565b60006136e283836136c7565b60208301905092915050565b6000602082019050919050565b60006137068261369b565b61371081856136a6565b935061371b836136b7565b8060005b8381101561374c57815161373388826136d6565b975061373e836136ee565b92505060018101905061371f565b5085935050505092915050565b600060a08201905061376e6000830188612bb9565b61377b602083018761368c565b818103604083015261378d81866136fb565b905061379c6060830185612d03565b6137a96080830184612bb9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137ed82612a93565b91506137f883612a93565b925082613808576138076137b3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613849601b8361297b565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600061388a82612a93565b915061389583612a93565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138ce576138cd612f60565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061393560218361297b565b9150613940826138d9565b604082019050919050565b6000602082019050818103600083015261396481613928565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a53b750068c0bc1c47b0664543c4eca9a83312d8c31dfc36ede6f2a7859c42b64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063751039fc116100ec578063a2a957bb1161008a578063c60d985311610064578063c60d9853146105e5578063caac793414610610578063dd62ed3e1461063b578063f2fde38b14610678576101c2565b8063a2a957bb14610556578063a9059cbb1461057f578063c492f046146105bc576101c2565b80638da5cb5b116100c65780638da5cb5b146104ac5780638f9a55c0146104d757806395d89b411461050257806398a5c3151461052d576101c2565b8063751039fc146104535780637d1db4a51461046a5780638a8c523c14610495576101c2565b8063313ce5671161015957806349bd5a5e1161013357806349bd5a5e146103a95780636168f352146103d457806370a08231146103ff578063715018a61461043c576101c2565b8063313ce5671461032a5780633d6a9afe1461035557806347c7d92414610380576101c2565b806318160ddd1161019557806318160ddd1461025a5780631990948b1461028557806323b872dd146102c25780632fd689e3146102ff576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106a1565b6040516101e99190612a09565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612ac9565b6106de565b6040516102269190612b24565b60405180910390f35b34801561023b57600080fd5b506102446106fc565b6040516102519190612b9e565b60405180910390f35b34801561026657600080fd5b5061026f610722565b60405161027c9190612bc8565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be3565b610736565b6040516102b99190612bc8565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c10565b61074e565b6040516102f69190612b24565b60405180910390f35b34801561030b57600080fd5b50610314610827565b6040516103219190612bc8565b60405180910390f35b34801561033657600080fd5b5061033f61082d565b60405161034c9190612c7f565b60405180910390f35b34801561036157600080fd5b5061036a610836565b6040516103779190612cbb565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612cd6565b61085c565b005b3480156103b557600080fd5b506103be6108fb565b6040516103cb9190612d12565b60405180910390f35b3480156103e057600080fd5b506103e9610921565b6040516103f69190612bc8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190612be3565b610927565b6040516104339190612bc8565b60405180910390f35b34801561044857600080fd5b50610451610978565b005b34801561045f57600080fd5b50610468610acb565b005b34801561047657600080fd5b5061047f610b74565b60405161048c9190612bc8565b60405180910390f35b3480156104a157600080fd5b506104aa610b7a565b005b3480156104b857600080fd5b506104c1610c2c565b6040516104ce9190612d12565b60405180910390f35b3480156104e357600080fd5b506104ec610c55565b6040516104f99190612bc8565b60405180910390f35b34801561050e57600080fd5b50610517610c5b565b6040516105249190612a09565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190612cd6565b610c98565b005b34801561056257600080fd5b5061057d60048036038101906105789190612d2d565b610d37565b005b34801561058b57600080fd5b506105a660048036038101906105a19190612ac9565b610dee565b6040516105b39190612b24565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612e25565b610e0c565b005b3480156105f157600080fd5b506105fa610f46565b6040516106079190612d12565b60405180910390f35b34801561061c57600080fd5b50610625610f6c565b6040516106329190612cbb565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190612e85565b610f92565b60405161066f9190612bc8565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190612be3565b611019565b005b60606040518060400160405280600f81526020017f546865204368696e65736520426f620000000000000000000000000000000000815250905090565b60006106f26106eb6111da565b84846111e2565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b033b2e3c9fd0803ce8000000905090565b60106020528060005260406000206000915090505481565b600061075b8484846113ab565b61081c846107676111da565b6108178560405180606001604052806028815260200161396c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107cd6111da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb49092919063ffffffff16565b6111e2565b600190509392505050565b60185481565b60006012905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108646111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890612f11565b60405180910390fd5b8060198190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000610971600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d18565b9050919050565b6109806111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ad36111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790612f11565b60405180910390fd5b600019601681905550600019601781905550565b60165481565b610b826111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690612f11565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f42414f424f000000000000000000000000000000000000000000000000000000815250905090565b610ca06111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612f11565b60405180910390fd5b8060188190555050565b610d3f6111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390612f11565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b6000610e02610dfb6111da565b84846113ab565b6001905092915050565b610e146111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612f11565b60405180910390fd5b60005b83839050811015610f40578160056000868685818110610ec757610ec6612f31565b5b9050602002016020810190610edc9190612be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3890612f8f565b915050610ea4565b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110216111da565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613049565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611248906130db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061316d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139e9190612bc8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906131ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148090613291565b60405180910390fd5b600081116114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613323565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115705750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b357601560149054906101000a900460ff166115ff57611591610c2c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906133b5565b60405180910390fd5b5b601654811115611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613421565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116f157601754816116a684610927565b6116b09190613441565b106116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613509565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d7576000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036117d25743601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61182c565b60158054906101000a900460ff1661182b5782601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600061183730610927565b90506000601854821015905060195482106118525760195491505b80801561186a575060158054906101000a900460ff16155b80156118c45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118dc5750601560169054906101000a900460ff165b80156119325750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119885750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119b05761199682611d86565b600047905060008111156119ae576119ad47611ffd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b0d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b0c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b1b5760009050611ca2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bc65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bde57600854600c81905550600a54600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c895750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ca157600954600c81905550600b54600d819055505b5b611cae848484846120f8565b50505050565b6000838311158290611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf39190612a09565b60405180910390fd5b5060008385611d0b9190613529565b9050809150509392505050565b6000600654821115611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d56906135cf565b60405180910390fd5b6000611d69612271565b9050611d7e818461229c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dbd57611dbc6135ef565b5b604051908082528060200260200182016040528015611deb5781602001602082028036833780820191505090505b5090503081600081518110611e0357611e02612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190613633565b81600181518110611ee257611ee1612f31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f4930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e2565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fad959493929190613759565b600060405180830381600087803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61204d60028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612078573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120c960028461229c90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120f4573d6000803e3d6000fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121a35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121fd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122445782601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80612252576122516122e6565b5b61225d848484612323565b8061226b5761226a6124ee565b5b50505050565b600080600061227e612502565b91509150612295818361229c90919063ffffffff16565b9250505090565b60006122de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061256d565b905092915050565b6000600c541480156122fa57506000600d54145b61232157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612335876125d0565b95509550955095509550955061239386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061242885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612474816126e0565b61247e848361279d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124db9190612bc8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b033b2e3c9fd0803ce8000000905061253e6b033b2e3c9fd0803ce800000060065461229c90919063ffffffff16565b821015612560576006546b033b2e3c9fd0803ce8000000935093505050612569565b81819350935050505b9091565b600080831182906125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab9190612a09565b60405180910390fd5b50600083856125c391906137e2565b9050809150509392505050565b60008060008060008060008060006125ed8a600c54600d546127d7565b92509250925060006125fd612271565b905060008060006126108e87878761286d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061267a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb4565b905092915050565b60008082846126919190613441565b9050838110156126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd9061385f565b60405180910390fd5b8091505092915050565b60006126ea612271565b9050600061270182846128f690919063ffffffff16565b905061275581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127b28260065461263890919063ffffffff16565b6006819055506127cd8160075461268290919063ffffffff16565b6007819055505050565b60008060008061280360646127f5888a6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061282d606461281f888b6128f690919063ffffffff16565b61229c90919063ffffffff16565b9050600061285682612848858c61263890919063ffffffff16565b61263890919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061288685896128f690919063ffffffff16565b9050600061289d86896128f690919063ffffffff16565b905060006128b487896128f690919063ffffffff16565b905060006128dd826128cf858761263890919063ffffffff16565b61263890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612908576000905061296a565b60008284612916919061387f565b905082848261292591906137e2565b14612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061394b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129aa57808201518184015260208101905061298f565b838111156129b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006129db82612970565b6129e5818561297b565b93506129f581856020860161298c565b6129fe816129bf565b840191505092915050565b60006020820190508181036000830152612a2381846129d0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6082612a35565b9050919050565b612a7081612a55565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b6000819050919050565b612aa681612a93565b8114612ab157600080fd5b50565b600081359050612ac381612a9d565b92915050565b60008060408385031215612ae057612adf612a2b565b5b6000612aee85828601612a7e565b9250506020612aff85828601612ab4565b9150509250929050565b60008115159050919050565b612b1e81612b09565b82525050565b6000602082019050612b396000830184612b15565b92915050565b6000819050919050565b6000612b64612b5f612b5a84612a35565b612b3f565b612a35565b9050919050565b6000612b7682612b49565b9050919050565b6000612b8882612b6b565b9050919050565b612b9881612b7d565b82525050565b6000602082019050612bb36000830184612b8f565b92915050565b612bc281612a93565b82525050565b6000602082019050612bdd6000830184612bb9565b92915050565b600060208284031215612bf957612bf8612a2b565b5b6000612c0784828501612a7e565b91505092915050565b600080600060608486031215612c2957612c28612a2b565b5b6000612c3786828701612a7e565b9350506020612c4886828701612a7e565b9250506040612c5986828701612ab4565b9150509250925092565b600060ff82169050919050565b612c7981612c63565b82525050565b6000602082019050612c946000830184612c70565b92915050565b6000612ca582612a35565b9050919050565b612cb581612c9a565b82525050565b6000602082019050612cd06000830184612cac565b92915050565b600060208284031215612cec57612ceb612a2b565b5b6000612cfa84828501612ab4565b91505092915050565b612d0c81612a55565b82525050565b6000602082019050612d276000830184612d03565b92915050565b60008060008060808587031215612d4757612d46612a2b565b5b6000612d5587828801612ab4565b9450506020612d6687828801612ab4565b9350506040612d7787828801612ab4565b9250506060612d8887828801612ab4565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612db957612db8612d94565b5b8235905067ffffffffffffffff811115612dd657612dd5612d99565b5b602083019150836020820283011115612df257612df1612d9e565b5b9250929050565b612e0281612b09565b8114612e0d57600080fd5b50565b600081359050612e1f81612df9565b92915050565b600080600060408486031215612e3e57612e3d612a2b565b5b600084013567ffffffffffffffff811115612e5c57612e5b612a30565b5b612e6886828701612da3565b93509350506020612e7b86828701612e10565b9150509250925092565b60008060408385031215612e9c57612e9b612a2b565b5b6000612eaa85828601612a7e565b9250506020612ebb85828601612a7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612efb60208361297b565b9150612f0682612ec5565b602082019050919050565b60006020820190508181036000830152612f2a81612eee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9a82612a93565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcc57612fcb612f60565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061303360268361297b565b915061303e82612fd7565b604082019050919050565b6000602082019050818103600083015261306281613026565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130c560248361297b565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061315760228361297b565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e960258361297b565b91506131f48261318d565b604082019050919050565b60006020820190508181036000830152613218816131dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327b60238361297b565b91506132868261321f565b604082019050919050565b600060208201905081810360008301526132aa8161326e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330d60298361297b565b9150613318826132b1565b604082019050919050565b6000602082019050818103600083015261333c81613300565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061339f603f8361297b565b91506133aa82613343565b604082019050919050565b600060208201905081810360008301526133ce81613392565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061340b601c8361297b565b9150613416826133d5565b602082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b600061344c82612a93565b915061345783612a93565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561348c5761348b612f60565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006134f360238361297b565b91506134fe82613497565b604082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b600061353482612a93565b915061353f83612a93565b92508282101561355257613551612f60565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135b9602a8361297b565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061362d81612a67565b92915050565b60006020828403121561364957613648612a2b565b5b60006136578482850161361e565b91505092915050565b6000819050919050565b600061368561368061367b84613660565b612b3f565b612a93565b9050919050565b6136958161366a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136d081612a55565b82525050565b60006136e283836136c7565b60208301905092915050565b6000602082019050919050565b60006137068261369b565b61371081856136a6565b935061371b836136b7565b8060005b8381101561374c57815161373388826136d6565b975061373e836136ee565b92505060018101905061371f565b5085935050505092915050565b600060a08201905061376e6000830188612bb9565b61377b602083018761368c565b818103604083015261378d81866136fb565b905061379c6060830185612d03565b6137a96080830184612bb9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137ed82612a93565b91506137f883612a93565b925082613808576138076137b3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613849601b8361297b565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600061388a82612a93565b915061389583612a93565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138ce576138cd612f60565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061393560218361297b565b9150613940826138d9565b604082019050919050565b6000602082019050818103600083015261396481613928565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a53b750068c0bc1c47b0664543c4eca9a83312d8c31dfc36ede6f2a7859c42b64736f6c634300080f0033

Deployed Bytecode Sourcemap

4178:13274:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6902:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7827:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5390:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7179:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5239:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8028:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5724:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7088:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5292:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17060:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5438:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5782:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7282:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;908:148;;;;;;;;;;;;;:::i;:::-;;12821:109;;;;;;;;;;;;;:::i;:::-;;5614:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:79;;;;;;;;;;;;;:::i;:::-;;694;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5668:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6993:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16869:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16526:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7428:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17215:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5473:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5341:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1064:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6902:83;6939:13;6972:5;;;;;;;;;;;;;;;;;6965:12;;6902:83;:::o;7827:193::-;7929:4;7951:39;7960:12;:10;:12::i;:::-;7974:7;7983:6;7951:8;:39::i;:::-;8008:4;8001:11;;7827:193;;;;:::o;5390:41::-;;;;;;;;;;;;;:::o;7179:95::-;7232:7;4738:19;7252:14;;7179:95;:::o;5239:44::-;;;;;;;;;;;;;;;;;:::o;8028:446::-;8160:4;8177:36;8187:6;8195:9;8206:6;8177:9;:36::i;:::-;8224:220;8247:6;8268:12;:10;:12::i;:::-;8295:138;8351:6;8295:138;;;;;;;;;;;;;;;;;:11;:19;8307:6;8295:19;;;;;;;;;;;;;;;:33;8315:12;:10;:12::i;:::-;8295:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8224:8;:220::i;:::-;8462:4;8455:11;;8028:446;;;;;:::o;5724:51::-;;;;:::o;7088:83::-;7129:5;4411:2;7147:16;;7088:83;:::o;5292:42::-;;;;;;;;;;;;;:::o;17060:147::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:21:::1;17153:22;:46;;;;17060:147:::0;:::o;5438:28::-;;;;;;;;;;;;;:::o;5782:56::-;;;;:::o;7282:138::-;7348:7;7375:37;7395:7;:16;7403:7;7395:16;;;;;;;;;;;;;;;;7375:19;:37::i;:::-;7368:44;;7282:138;;;:::o;908:148::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1015:1:::1;978:40;;999:6;::::0;::::1;;;;;;;;978:40;;;;;;;;;;;;1046:1;1029:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;908:148::o:0;12821:109::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4694:1:::1;4685:11;12873:12;:18;;;;4694:1;4685:11;12902:14;:20;;;;12821:109::o:0;5614:47::-;;;;:::o;12734:79::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12801:4:::1;12787:11;;:18;;;;;;;;;;;;;;;;;;12734:79::o:0;694:::-;732:7;759:6;;;;;;;;;;;752:13;;694:79;:::o;5668:49::-;;;;:::o;6993:87::-;7032:13;7065:7;;;;;;;;;;;;;;;;;7058:14;;6993:87;:::o;16869:139::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16982:18:::1;16960:19;:40;;;;16869:139:::0;:::o;16526:291::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16677:13:::1;16660:14;:30;;;;16719:14;16701:15;:32;;;;16759:11;16744:12;:26;;;;16797:12;16781:13;:28;;;;16526:291:::0;;;;:::o;7428:199::-;7533:4;7555:42;7565:12;:10;:12::i;:::-;7579:9;7590:6;7555:9;:42::i;:::-;7615:4;7608:11;;7428:199;;;;:::o;17215:234::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17332:9:::1;17328:114;17351:8;;:15;;17347:1;:19;17328:114;;;17422:8;17388:18;:31;17407:8;;17416:1;17407:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17388:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17368:3;;;;;:::i;:::-;;;;17328:114;;;;17215:234:::0;;;:::o;5473:27::-;;;;;;;;;;;;;:::o;5341:40::-;;;;;;;;;;;;;:::o;7635:184::-;7752:7;7784:11;:18;7796:5;7784:18;;;;;;;;;;;;;;;:27;7803:7;7784:27;;;;;;;;;;;;;;;;7777:34;;7635:184;;;;:::o;1064:244::-;831:12;:10;:12::i;:::-;821:22;;:6;;;;;;;;;;:22;;;813:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1173:1:::1;1153:22;;:8;:22;;::::0;1145:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1263:8;1234:38;;1255:6;::::0;::::1;;;;;;;;1234:38;;;;;;;;;;;;1292:8;1283:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1064:244:::0;:::o;210:98::-;263:7;290:10;283:17;;210:98;:::o;9165:369::-;9309:1;9292:19;;:5;:19;;;9284:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9390:1;9371:21;;:7;:21;;;9363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9472:6;9442:11;:18;9454:5;9442:18;;;;;;;;;;;;;;;:27;9461:7;9442:27;;;;;;;;;;;;;;;:36;;;;9510:7;9494:32;;9503:5;9494:32;;;9519:6;9494:32;;;;;;:::i;:::-;;;;;;;;9165:369;;;:::o;9542:2525::-;9680:1;9664:18;;:4;:18;;;9656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9757:1;9743:16;;:2;:16;;;9735:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9827:1;9818:6;:10;9810:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9892:18;:24;9911:4;9892:24;;;;;;;;;;;;;;;;;;;;;;;;;9891:25;:52;;;;;9921:18;:22;9940:2;9921:22;;;;;;;;;;;;;;;;;;;;;;;;;9920:23;9891:52;9887:1454;;;10000:11;;;;;;;;;;;9995:144;;10048:7;:5;:7::i;:::-;10040:15;;:4;:15;;;10032:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9995:144;10173:12;;10163:6;:22;;10155:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10244:13;;;;;;;;;;;10238:19;;:2;:19;;;10235:146;;10311:14;;10302:6;10286:13;10296:2;10286:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10278:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10235:146;10409:13;;;;;;;;;;;10401:21;;:4;:21;;;10397:226;;10463:1;10447:8;:12;10456:2;10447:12;;;;;;;;;;;;;;;;:17;10443:93;;10504:12;10489:8;:12;10498:2;10489:12;;;;;;;;;;;;;;;:27;;;;10443:93;10397:226;;;10561:6;;;;;;;;;;10557:66;;10603:4;10588:12;;:19;;;;;;;;;;;;;;;;;;10557:66;10397:226;10639:28;10670:24;10688:4;10670:9;:24::i;:::-;10639:55;;10709:12;10748:19;;10724:20;:43;;10709:58;;10811:22;;10787:20;:46;10784:144;;10890:22;;10867:45;;10784:144;10948:7;:18;;;;;10960:6;;;;;;;;;;10959:7;10948:18;:43;;;;;10978:13;;;;;;;;;;;10970:21;;:4;:21;;;;10948:43;:58;;;;;10995:11;;;;;;;;;;;10948:58;:87;;;;;11011:18;:24;11030:4;11011:24;;;;;;;;;;;;;;;;;;;;;;;;;11010:25;10948:87;:114;;;;;11040:18;:22;11059:2;11040:22;;;;;;;;;;;;;;;;;;;;;;;;;11039:23;10948:114;10944:386;;;11083:38;11100:20;11083:16;:38::i;:::-;11140:26;11169:21;11140:50;;11234:1;11213:18;:22;11209:106;;;11260:35;11273:21;11260:12;:35::i;:::-;11209:106;11064:266;10944:386;9945:1396;;9887:1454;11353:12;11368:4;11353:19;;11417:18;:24;11436:4;11417:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11445:18;:22;11464:2;11445:22;;;;;;;;;;;;;;;;;;;;;;;;;11417:50;11416:102;;;;11481:13;;;;;;;;;;;11473:21;;:4;:21;;;;:44;;;;;11504:13;;;;;;;;;;;11498:19;;:2;:19;;;;11473:44;11416:102;11412:594;;;11545:5;11535:15;;11412:594;;;11628:13;;;;;;;;;;;11620:21;;:4;:21;;;:55;;;;;11659:15;;;;;;;;;;;11645:30;;:2;:30;;;;11620:55;11617:162;;;11708:14;;11696:9;:26;;;;11751:12;;11741:7;:22;;;;11617:162;11838:13;;;;;;;;;;;11832:19;;:2;:19;;;:55;;;;;11871:15;;;;;;;;;;;11855:32;;:4;:32;;;;11832:55;11828:165;;;11920:15;;11908:9;:27;;;;11964:13;;11954:7;:23;;;;11828:165;11412:594;12018:41;12033:4;12039:2;12043:6;12051:7;12018:14;:41::i;:::-;9645:2422;9542:2525;;;:::o;2429:224::-;2549:7;2582:1;2577;:6;;2585:12;2569:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2609:9;2625:1;2621;:5;;;;:::i;:::-;2609:17;;2644:1;2637:8;;;2429:224;;;;;:::o;8482:323::-;8577:7;8635;;8624;:18;;8602:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8723:19;8745:10;:8;:10::i;:::-;8723:32;;8773:24;8785:11;8773:7;:11;;:24;;;;:::i;:::-;8766:31;;;8482:323;;;:::o;12075:483::-;5941:4;5932:6;;:13;;;;;;;;;;;;;;;;;;12153:21:::1;12191:1;12177:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12153:40;;12222:4;12204;12209:1;12204:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12248:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12238:4;12243:1;12238:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12281:62;12298:4;12313:15;;;;;;;;;;;12331:11;12281:8;:62::i;:::-;12354:15;;;;;;;;;;;:66;;;12435:11;12461:1;12477:4;12504;12524:15;12354:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12142:416;5977:5:::0;5968:6;;:14;;;;;;;;;;;;;;;;;;12075:483;:::o;12566:160::-;12623:19;;;;;;;;;;;:28;;:43;12652:13;12663:1;12652:6;:10;;:13;;;;:::i;:::-;12623:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12677:17;;;;;;;;;;;:26;;:41;12704:13;12715:1;12704:6;:10;;:13;;;;:::i;:::-;12677:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12566:160;:::o;13564:458::-;13728:17;;;;;;;;;;;13718:27;;:6;:27;;;:68;;;;;13770:15;;;;;;;;;;;13749:37;;:9;:37;;;;13718:68;:97;;;;;13802:13;;;;;;;;;;;13790:25;;:9;:25;;;;13718:97;13715:166;;;13859:9;13831:17;;:38;;;;;;;;;;;;;;;;;;13715:166;13896:7;13891:28;;13905:14;:12;:14::i;:::-;13891:28;13930:44;13948:6;13956:9;13967:6;13930:17;:44::i;:::-;13990:7;13985:29;;13999:15;:13;:15::i;:::-;13985:29;13564:458;;;;:::o;16089:164::-;16131:7;16152:15;16169;16188:19;:17;:19::i;:::-;16151:56;;;;16225:20;16237:7;16225;:11;;:20;;;;:::i;:::-;16218:27;;;;16089:164;:::o;2915:132::-;2973:7;3000:39;3004:1;3007;3000:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2993:46;;2915:132;;;;:::o;8813:219::-;8873:1;8860:9;;:14;:30;;;;;8889:1;8878:7;;:12;8860:30;8892:7;8856:43;8931:9;;8911:17;:29;;;;8969:7;;8951:15;:25;;;;9001:1;8989:9;:13;;;;9023:1;9013:7;:11;;;;8813:219;:::o;12946:610::-;13093:15;13123:23;13161:12;13188:23;13226:12;13253:13;13280:19;13291:7;13280:10;:19::i;:::-;13078:221;;;;;;;;;;;;13328:28;13348:7;13328;:15;13336:6;13328:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13310:7;:15;13318:6;13310:15;;;;;;;;;;;;;;;:46;;;;13388:39;13411:15;13388:7;:18;13396:9;13388:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13367:7;:18;13375:9;13367:18;;;;;;;;;;;;;;;:60;;;;13438:16;13448:5;13438:9;:16::i;:::-;13465:23;13477:4;13483;13465:11;:23::i;:::-;13521:9;13504:44;;13513:6;13504:44;;;13532:15;13504:44;;;;;;:::i;:::-;;;;;;;;13067:489;;;;;;12946:610;;;:::o;9040:117::-;9096:17;;9084:9;:29;;;;9134:15;;9124:7;:25;;;;9040:117::o;16261:257::-;16312:7;16321;16341:15;16359:7;;16341:25;;16377:15;4738:19;16377:25;;16427:20;4738:19;16427:7;;:11;;:20;;;;:::i;:::-;16417:7;:30;16413:61;;;16457:7;;4738:19;16449:25;;;;;;;;16413:61;16493:7;16502;16485:25;;;;;;16261:257;;;:::o;3055:223::-;3175:7;3207:1;3203;:5;3210:12;3195:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3234:9;3250:1;3246;:5;;;;:::i;:::-;3234:17;;3269:1;3262:8;;;3055:223;;;;;:::o;14916:615::-;15016:7;15038;15060;15082;15104;15126;15162:23;15187:12;15201:13;15231:40;15243:7;15252:9;;15263:7;;15231:11;:40::i;:::-;15161:110;;;;;;15282:19;15304:10;:8;:10::i;:::-;15282:32;;15326:15;15343:23;15368:12;15397:46;15409:7;15418:4;15424:5;15431:11;15397;:46::i;:::-;15325:118;;;;;;15462:7;15471:15;15488:4;15494:15;15511:4;15517:5;15454:69;;;;;;;;;;;;;;;;;;;14916:615;;;;;;;:::o;2285:136::-;2343:7;2370:43;2374:1;2377;2370:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2363:50;;2285:136;;;;:::o;2098:179::-;2156:7;2176:9;2192:1;2188;:5;;;;:::i;:::-;2176:17;;2217:1;2212;:6;;2204:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2268:1;2261:8;;;2098:179;;;;:::o;14030:211::-;14083:19;14105:10;:8;:10::i;:::-;14083:32;;14126:13;14142:22;14152:11;14142:5;:9;;:22;;;;:::i;:::-;14126:38;;14200:33;14227:5;14200:7;:22;14216:4;14200:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14175:7;:22;14191:4;14175:22;;;;;;;;;;;;;;;:58;;;;14072:169;;14030:211;:::o;14249:147::-;14327:17;14339:4;14327:7;;:11;;:17;;;;:::i;:::-;14317:7;:27;;;;14368:20;14383:4;14368:10;;:14;;:20;;;;:::i;:::-;14355:10;:33;;;;14249:147;;:::o;14439:469::-;14608:7;14630;14652;14687:12;14702:30;14728:3;14702:21;14714:8;14702:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14687:45;;14743:13;14759:28;14783:3;14759:19;14771:6;14759:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14743:44;;14798:23;14824:28;14846:5;14824:17;14836:4;14824:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14798:54;;14871:15;14888:4;14894:5;14863:37;;;;;;;;;14439:469;;;;;;;:::o;15547:534::-;15741:7;15763;15785;15820:15;15838:24;15850:11;15838:7;:11;;:24;;;;:::i;:::-;15820:42;;15873:12;15888:21;15897:11;15888:4;:8;;:21;;;;:::i;:::-;15873:36;;15920:13;15936:22;15946:11;15936:5;:9;;:22;;;;:::i;:::-;15920:38;;15969:23;15995:28;16017:5;15995:17;16007:4;15995:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15969:54;;16042:7;16051:15;16068:4;16034:39;;;;;;;;;;15547:534;;;;;;;;:::o;2661:246::-;2719:7;2748:1;2743;:6;2739:47;;2773:1;2766:8;;;;2739:47;2796:9;2812:1;2808;:5;;;;:::i;:::-;2796:17;;2841:1;2836;2832;:5;;;;:::i;:::-;:10;2824:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2898:1;2891:8;;;2661: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:329::-;4878:6;4927:2;4915:9;4906:7;4902:23;4898:32;4895:119;;;4933:79;;:::i;:::-;4895:119;5053:1;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5024:117;4819:329;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:86::-;5814:7;5854:4;5847:5;5843:16;5832:27;;5779:86;;;:::o;5871:112::-;5954:22;5970:5;5954:22;:::i;:::-;5949:3;5942:35;5871:112;;:::o;5989:214::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:67;6193:1;6182:9;6178:17;6169:6;6129:67;:::i;:::-;5989:214;;;;:::o;6209:104::-;6254:7;6283:24;6301:5;6283:24;:::i;:::-;6272:35;;6209:104;;;:::o;6319:142::-;6422:32;6448:5;6422:32;:::i;:::-;6417:3;6410:45;6319:142;;:::o;6467:254::-;6576:4;6614:2;6603:9;6599:18;6591:26;;6627:87;6711:1;6700:9;6696:17;6687:6;6627:87;:::i;:::-;6467:254;;;;:::o;6727:329::-;6786:6;6835:2;6823:9;6814:7;6810:23;6806:32;6803:119;;;6841:79;;:::i;:::-;6803:119;6961:1;6986:53;7031:7;7022:6;7011:9;7007:22;6986:53;:::i;:::-;6976:63;;6932:117;6727:329;;;;:::o;7062:118::-;7149:24;7167:5;7149:24;:::i;:::-;7144:3;7137:37;7062:118;;:::o;7186:222::-;7279:4;7317:2;7306:9;7302:18;7294:26;;7330:71;7398:1;7387:9;7383:17;7374:6;7330:71;:::i;:::-;7186:222;;;;:::o;7414:765::-;7500:6;7508;7516;7524;7573:3;7561:9;7552:7;7548:23;7544:33;7541:120;;;7580:79;;:::i;:::-;7541:120;7700:1;7725:53;7770:7;7761:6;7750:9;7746:22;7725:53;:::i;:::-;7715:63;;7671:117;7827:2;7853:53;7898:7;7889:6;7878:9;7874:22;7853:53;:::i;:::-;7843:63;;7798:118;7955:2;7981:53;8026:7;8017:6;8006:9;8002:22;7981:53;:::i;:::-;7971:63;;7926:118;8083:2;8109:53;8154:7;8145:6;8134:9;8130:22;8109:53;:::i;:::-;8099:63;;8054:118;7414:765;;;;;;;:::o;8185:117::-;8294:1;8291;8284:12;8308:117;8417:1;8414;8407:12;8431:117;8540:1;8537;8530:12;8571:568;8644:8;8654:6;8704:3;8697:4;8689:6;8685:17;8681:27;8671:122;;8712:79;;:::i;:::-;8671:122;8825:6;8812:20;8802:30;;8855:18;8847:6;8844:30;8841:117;;;8877:79;;:::i;:::-;8841:117;8991:4;8983:6;8979:17;8967:29;;9045:3;9037:4;9029:6;9025:17;9015:8;9011:32;9008:41;9005:128;;;9052:79;;:::i;:::-;9005:128;8571:568;;;;;:::o;9145:116::-;9215:21;9230:5;9215:21;:::i;:::-;9208:5;9205:32;9195:60;;9251:1;9248;9241:12;9195:60;9145:116;:::o;9267:133::-;9310:5;9348:6;9335:20;9326:29;;9364:30;9388:5;9364:30;:::i;:::-;9267:133;;;;:::o;9406:698::-;9498:6;9506;9514;9563:2;9551:9;9542:7;9538:23;9534:32;9531:119;;;9569:79;;:::i;:::-;9531:119;9717:1;9706:9;9702:17;9689:31;9747:18;9739:6;9736:30;9733:117;;;9769:79;;:::i;:::-;9733:117;9882:80;9954:7;9945:6;9934:9;9930:22;9882:80;:::i;:::-;9864:98;;;;9660:312;10011:2;10037:50;10079:7;10070:6;10059:9;10055:22;10037:50;:::i;:::-;10027:60;;9982:115;9406:698;;;;;:::o;10110:474::-;10178:6;10186;10235:2;10223:9;10214:7;10210:23;10206:32;10203:119;;;10241:79;;:::i;:::-;10203:119;10361:1;10386:53;10431:7;10422:6;10411:9;10407:22;10386:53;:::i;:::-;10376:63;;10332:117;10488:2;10514:53;10559:7;10550:6;10539:9;10535:22;10514:53;:::i;:::-;10504:63;;10459:118;10110:474;;;;;:::o;10590:182::-;10730:34;10726:1;10718:6;10714:14;10707:58;10590:182;:::o;10778:366::-;10920:3;10941:67;11005:2;11000:3;10941:67;:::i;:::-;10934:74;;11017:93;11106:3;11017:93;:::i;:::-;11135:2;11130:3;11126:12;11119:19;;10778:366;;;:::o;11150:419::-;11316:4;11354:2;11343:9;11339:18;11331:26;;11403:9;11397:4;11393:20;11389:1;11378:9;11374:17;11367:47;11431:131;11557:4;11431:131;:::i;:::-;11423:139;;11150:419;;;:::o;11575:180::-;11623:77;11620:1;11613:88;11720:4;11717:1;11710:15;11744:4;11741:1;11734:15;11761:180;11809:77;11806:1;11799:88;11906:4;11903:1;11896:15;11930:4;11927:1;11920:15;11947:233;11986:3;12009:24;12027:5;12009:24;:::i;:::-;12000:33;;12055:66;12048:5;12045:77;12042:103;;12125:18;;:::i;:::-;12042:103;12172:1;12165:5;12161:13;12154:20;;11947:233;;;:::o;12186:225::-;12326:34;12322:1;12314:6;12310:14;12303:58;12395:8;12390:2;12382:6;12378:15;12371:33;12186:225;:::o;12417:366::-;12559:3;12580:67;12644:2;12639:3;12580:67;:::i;:::-;12573:74;;12656:93;12745:3;12656:93;:::i;:::-;12774:2;12769:3;12765:12;12758:19;;12417:366;;;:::o;12789:419::-;12955:4;12993:2;12982:9;12978:18;12970:26;;13042:9;13036:4;13032:20;13028:1;13017:9;13013:17;13006:47;13070:131;13196:4;13070:131;:::i;:::-;13062:139;;12789:419;;;:::o;13214:223::-;13354:34;13350:1;13342:6;13338:14;13331:58;13423:6;13418:2;13410:6;13406:15;13399:31;13214:223;:::o;13443:366::-;13585:3;13606:67;13670:2;13665:3;13606:67;:::i;:::-;13599:74;;13682:93;13771:3;13682:93;:::i;:::-;13800:2;13795:3;13791:12;13784:19;;13443:366;;;:::o;13815:419::-;13981:4;14019:2;14008:9;14004:18;13996:26;;14068:9;14062:4;14058:20;14054:1;14043:9;14039:17;14032:47;14096:131;14222:4;14096:131;:::i;:::-;14088:139;;13815:419;;;:::o;14240:221::-;14380:34;14376:1;14368:6;14364:14;14357:58;14449:4;14444:2;14436:6;14432:15;14425:29;14240:221;:::o;14467:366::-;14609:3;14630:67;14694:2;14689:3;14630:67;:::i;:::-;14623:74;;14706:93;14795:3;14706:93;:::i;:::-;14824:2;14819:3;14815:12;14808:19;;14467:366;;;:::o;14839:419::-;15005:4;15043:2;15032:9;15028:18;15020:26;;15092:9;15086:4;15082:20;15078:1;15067:9;15063:17;15056:47;15120:131;15246:4;15120:131;:::i;:::-;15112:139;;14839:419;;;:::o;15264:224::-;15404:34;15400:1;15392:6;15388:14;15381:58;15473:7;15468:2;15460:6;15456:15;15449:32;15264:224;:::o;15494:366::-;15636:3;15657:67;15721:2;15716:3;15657:67;:::i;:::-;15650:74;;15733:93;15822:3;15733:93;:::i;:::-;15851:2;15846:3;15842:12;15835:19;;15494:366;;;:::o;15866:419::-;16032:4;16070:2;16059:9;16055:18;16047:26;;16119:9;16113:4;16109:20;16105:1;16094:9;16090:17;16083:47;16147:131;16273:4;16147:131;:::i;:::-;16139:139;;15866:419;;;:::o;16291:222::-;16431:34;16427:1;16419:6;16415:14;16408:58;16500:5;16495:2;16487:6;16483:15;16476:30;16291:222;:::o;16519:366::-;16661:3;16682:67;16746:2;16741:3;16682:67;:::i;:::-;16675:74;;16758:93;16847:3;16758:93;:::i;:::-;16876:2;16871:3;16867:12;16860:19;;16519:366;;;:::o;16891:419::-;17057:4;17095:2;17084:9;17080:18;17072:26;;17144:9;17138:4;17134:20;17130:1;17119:9;17115:17;17108:47;17172:131;17298:4;17172:131;:::i;:::-;17164:139;;16891:419;;;:::o;17316:228::-;17456:34;17452:1;17444:6;17440:14;17433:58;17525:11;17520:2;17512:6;17508:15;17501:36;17316:228;:::o;17550:366::-;17692:3;17713:67;17777:2;17772:3;17713:67;:::i;:::-;17706:74;;17789:93;17878:3;17789:93;:::i;:::-;17907:2;17902:3;17898:12;17891:19;;17550:366;;;:::o;17922:419::-;18088:4;18126:2;18115:9;18111:18;18103:26;;18175:9;18169:4;18165:20;18161:1;18150:9;18146:17;18139:47;18203:131;18329:4;18203:131;:::i;:::-;18195:139;;17922:419;;;:::o;18347:250::-;18487:34;18483:1;18475:6;18471:14;18464:58;18556:33;18551:2;18543:6;18539:15;18532:58;18347:250;:::o;18603:366::-;18745:3;18766:67;18830:2;18825:3;18766:67;:::i;:::-;18759:74;;18842:93;18931:3;18842:93;:::i;:::-;18960:2;18955:3;18951:12;18944:19;;18603:366;;;:::o;18975:419::-;19141:4;19179:2;19168:9;19164:18;19156:26;;19228:9;19222:4;19218:20;19214:1;19203:9;19199:17;19192:47;19256:131;19382:4;19256:131;:::i;:::-;19248:139;;18975:419;;;:::o;19400:178::-;19540:30;19536:1;19528:6;19524:14;19517:54;19400:178;:::o;19584:366::-;19726:3;19747:67;19811:2;19806:3;19747:67;:::i;:::-;19740:74;;19823:93;19912:3;19823:93;:::i;:::-;19941:2;19936:3;19932:12;19925:19;;19584:366;;;:::o;19956:419::-;20122:4;20160:2;20149:9;20145:18;20137:26;;20209:9;20203:4;20199:20;20195:1;20184:9;20180:17;20173:47;20237:131;20363:4;20237:131;:::i;:::-;20229:139;;19956:419;;;:::o;20381:305::-;20421:3;20440:20;20458:1;20440:20;:::i;:::-;20435:25;;20474:20;20492:1;20474:20;:::i;:::-;20469:25;;20628:1;20560:66;20556:74;20553:1;20550:81;20547:107;;;20634:18;;:::i;:::-;20547:107;20678:1;20675;20671:9;20664:16;;20381:305;;;;:::o;20692:222::-;20832:34;20828:1;20820:6;20816:14;20809:58;20901:5;20896:2;20888:6;20884:15;20877:30;20692:222;:::o;20920:366::-;21062:3;21083:67;21147:2;21142:3;21083:67;:::i;:::-;21076:74;;21159:93;21248:3;21159:93;:::i;:::-;21277:2;21272:3;21268:12;21261:19;;20920:366;;;:::o;21292:419::-;21458:4;21496:2;21485:9;21481:18;21473:26;;21545:9;21539:4;21535:20;21531:1;21520:9;21516:17;21509:47;21573:131;21699:4;21573:131;:::i;:::-;21565:139;;21292:419;;;:::o;21717:191::-;21757:4;21777:20;21795:1;21777:20;:::i;:::-;21772:25;;21811:20;21829:1;21811:20;:::i;:::-;21806:25;;21850:1;21847;21844:8;21841:34;;;21855:18;;:::i;:::-;21841:34;21900:1;21897;21893:9;21885:17;;21717:191;;;;:::o;21914:229::-;22054:34;22050:1;22042:6;22038:14;22031:58;22123:12;22118:2;22110:6;22106:15;22099:37;21914:229;:::o;22149:366::-;22291:3;22312:67;22376:2;22371:3;22312:67;:::i;:::-;22305:74;;22388:93;22477:3;22388:93;:::i;:::-;22506:2;22501:3;22497:12;22490:19;;22149:366;;;:::o;22521:419::-;22687:4;22725:2;22714:9;22710:18;22702:26;;22774:9;22768:4;22764:20;22760:1;22749:9;22745:17;22738:47;22802:131;22928:4;22802:131;:::i;:::-;22794:139;;22521:419;;;:::o;22946:180::-;22994:77;22991:1;22984:88;23091:4;23088:1;23081:15;23115:4;23112:1;23105:15;23132:143;23189:5;23220:6;23214:13;23205:22;;23236:33;23263:5;23236:33;:::i;:::-;23132:143;;;;:::o;23281:351::-;23351:6;23400:2;23388:9;23379:7;23375:23;23371:32;23368:119;;;23406:79;;:::i;:::-;23368:119;23526:1;23551:64;23607:7;23598:6;23587:9;23583:22;23551:64;:::i;:::-;23541:74;;23497:128;23281:351;;;;:::o;23638:85::-;23683:7;23712:5;23701:16;;23638:85;;;:::o;23729:158::-;23787:9;23820:61;23838:42;23847:32;23873:5;23847:32;:::i;:::-;23838:42;:::i;:::-;23820:61;:::i;:::-;23807:74;;23729:158;;;:::o;23893:147::-;23988:45;24027:5;23988:45;:::i;:::-;23983:3;23976:58;23893:147;;:::o;24046:114::-;24113:6;24147:5;24141:12;24131:22;;24046:114;;;:::o;24166:184::-;24265:11;24299:6;24294:3;24287:19;24339:4;24334:3;24330:14;24315:29;;24166:184;;;;:::o;24356:132::-;24423:4;24446:3;24438:11;;24476:4;24471:3;24467:14;24459:22;;24356:132;;;:::o;24494:108::-;24571:24;24589:5;24571:24;:::i;:::-;24566:3;24559:37;24494:108;;:::o;24608:179::-;24677:10;24698:46;24740:3;24732:6;24698:46;:::i;:::-;24776:4;24771:3;24767:14;24753:28;;24608:179;;;;:::o;24793:113::-;24863:4;24895;24890:3;24886:14;24878:22;;24793:113;;;:::o;24942:732::-;25061:3;25090:54;25138:5;25090:54;:::i;:::-;25160:86;25239:6;25234:3;25160:86;:::i;:::-;25153:93;;25270:56;25320:5;25270:56;:::i;:::-;25349:7;25380:1;25365:284;25390:6;25387:1;25384:13;25365:284;;;25466:6;25460:13;25493:63;25552:3;25537:13;25493:63;:::i;:::-;25486:70;;25579:60;25632:6;25579:60;:::i;:::-;25569:70;;25425:224;25412:1;25409;25405:9;25400:14;;25365:284;;;25369:14;25665:3;25658:10;;25066:608;;;24942:732;;;;:::o;25680:831::-;25943:4;25981:3;25970:9;25966:19;25958:27;;25995:71;26063:1;26052:9;26048:17;26039:6;25995:71;:::i;:::-;26076:80;26152:2;26141:9;26137:18;26128:6;26076:80;:::i;:::-;26203:9;26197:4;26193:20;26188:2;26177:9;26173:18;26166:48;26231:108;26334:4;26325:6;26231:108;:::i;:::-;26223:116;;26349:72;26417:2;26406:9;26402:18;26393:6;26349:72;:::i;:::-;26431:73;26499:3;26488:9;26484:19;26475:6;26431:73;:::i;:::-;25680:831;;;;;;;;:::o;26517:180::-;26565:77;26562:1;26555:88;26662:4;26659:1;26652:15;26686:4;26683:1;26676:15;26703:185;26743:1;26760:20;26778:1;26760:20;:::i;:::-;26755:25;;26794:20;26812:1;26794:20;:::i;:::-;26789:25;;26833:1;26823:35;;26838:18;;:::i;:::-;26823:35;26880:1;26877;26873:9;26868:14;;26703:185;;;;:::o;26894:177::-;27034:29;27030:1;27022:6;27018:14;27011:53;26894:177;:::o;27077:366::-;27219:3;27240:67;27304:2;27299:3;27240:67;:::i;:::-;27233:74;;27316:93;27405:3;27316:93;:::i;:::-;27434:2;27429:3;27425:12;27418:19;;27077:366;;;:::o;27449:419::-;27615:4;27653:2;27642:9;27638:18;27630:26;;27702:9;27696:4;27692:20;27688:1;27677:9;27673:17;27666:47;27730:131;27856:4;27730:131;:::i;:::-;27722:139;;27449:419;;;:::o;27874:348::-;27914:7;27937:20;27955:1;27937:20;:::i;:::-;27932:25;;27971:20;27989:1;27971:20;:::i;:::-;27966:25;;28159:1;28091:66;28087:74;28084:1;28081:81;28076:1;28069:9;28062:17;28058:105;28055:131;;;28166:18;;:::i;:::-;28055:131;28214:1;28211;28207:9;28196:20;;27874:348;;;;:::o;28228:220::-;28368:34;28364:1;28356:6;28352:14;28345:58;28437:3;28432:2;28424:6;28420:15;28413:28;28228:220;:::o;28454:366::-;28596:3;28617:67;28681:2;28676:3;28617:67;:::i;:::-;28610:74;;28693:93;28782:3;28693:93;:::i;:::-;28811:2;28806:3;28802:12;28795:19;;28454:366;;;:::o;28826:419::-;28992:4;29030:2;29019:9;29015:18;29007:26;;29079:9;29073:4;29069:20;29065:1;29054:9;29050:17;29043:47;29107:131;29233:4;29107:131;:::i;:::-;29099:139;;28826:419;;;:::o

Swarm Source

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