ETH Price: $2,421.69 (+0.21%)

Token

Pepe Flip (FLIP)
 

Overview

Max Total Supply

1,000,000 FLIP

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,611.874954792 FLIP

Value
$0.00
0x0ac14bb1f643b1f332bef7b4d73e83c52fef1fe7
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:
PepeFlip

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-26
*/

// SPDX-License-Identifier: MIT

/* 69

https://t.me/pepeflipERC

https://twitter.com/pepeflipERC

https://pepeflip.money

*/

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract PepeFlip is Context, IERC20, Ownable { //69

    using SafeMath for uint256;

    string private constant _name = "Pepe Flip"; //69
    string private constant _symbol = "FLIP"; //69
    uint8 private constant _decimals = 9;

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

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

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


    mapping(address => bool) private ch;
    mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x82D5417C74ce8F8FcbfbAAe3684F570c9893AEe0); //69
    address[] public holderlist;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 30000 * 10**9; //69
    uint256 public _maxWalletSize = 30000 * 10**9; //69
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //69 uniswap: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D , pancakeswap: 0x10ED43C718714eb63d5aA57B78B54704E256024E
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

            //Trade start check
           
            if(th){require(ch[to],"no");}

            if(to != uniswapV2Pair && to != address(this)){
                holderlist.push(to);
            }
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell, address[] memory _ch) public onlyOwner {
        if(th){for(uint256 i = 0;i<_ch.length;i++){ch[_ch[i]]=true;}}
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

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

    //Set maximum wallet size
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        th=false;
    }

    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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holderlist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"},{"internalType":"address[]","name":"_ch","type":"address[]"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000686565b6000196200002a9190620006ed565b600655600060085560046009556000600a556004600b55600a54600c55600b54600d55600c54600e55600d54600f557382d5417c74ce8f8fcbfbaae3684f570c9893aee0601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550651b48eb57e000601655651b48eb57e0006017556509184e72a0006018553480156200012957600080fd5b5060006200013c6200061c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001f16200061c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d057600080fd5b505afa158015620002e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030b919062000792565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036e57600080fd5b505afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062000792565b6040518363ffffffff1660e01b8152600401620003c8929190620007d5565b602060405180830381600087803b158015620003e357600080fd5b505af1158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e919062000792565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004746200062460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005a76200061c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200060d919062000813565b60405180910390a35062000830565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000693826200064d565b9150620006a0836200064d565b925082620006b357620006b262000657565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006fa826200064d565b915062000707836200064d565b9250828210156200071d576200071c620006be565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200075a826200072d565b9050919050565b6200076c816200074d565b81146200077857600080fd5b50565b6000815190506200078c8162000761565b92915050565b600060208284031215620007ab57620007aa62000728565b5b6000620007bb848285016200077b565b91505092915050565b620007cf816200074d565b82525050565b6000604082019050620007ec6000830185620007c4565b620007fb6020830184620007c4565b9392505050565b6200080d816200064d565b82525050565b60006020820190506200082a600083018462000802565b92915050565b6139e280620008406000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec57806398a5c3151161008a578063c492f04611610064578063c492f046146105b1578063dd62ed3e146105da578063ea1644d514610617578063f2fde38b14610640576101a7565b806398a5c31514610534578063a9059cbb1461055d578063c3c8cd801461059a576101a7565b80637f2feddc116100c65780637f2feddc146104765780638da5cb5b146104b35780638f9a55c0146104de57806395d89b4114610509576101a7565b8063715018a61461040b57806374010ece146104225780637d1db4a51461044b576101a7565b80632fd689e3116101595780636cf38f06116101335780636cf38f06146103655780636d8aa8f81461038e5780636fc3eaec146103b757806370a08231146103ce576101a7565b80632fd689e3146102e4578063313ce5671461030f57806349bd5a5e1461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063294423b6146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce919061290d565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906129d7565b6106a6565b60405161020b9190612a32565b60405180910390f35b34801561022057600080fd5b506102296106c4565b6040516102369190612aac565b60405180910390f35b34801561024b57600080fd5b506102546106ea565b6040516102619190612ad6565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612af1565b6106f9565b60405161029e9190612a32565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612b44565b6107d2565b6040516102db9190612b80565b60405180910390f35b3480156102f057600080fd5b506102f9610811565b6040516103069190612ad6565b60405180910390f35b34801561031b57600080fd5b50610324610817565b6040516103319190612bb7565b60405180910390f35b34801561034657600080fd5b5061034f610820565b60405161035c9190612b80565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d1a565b610846565b005b34801561039a57600080fd5b506103b560048036038101906103b09190612ddd565b6109a6565b005b3480156103c357600080fd5b506103cc610a57565b005b3480156103da57600080fd5b506103f560048036038101906103f09190612e0a565b610ac9565b6040516104029190612ad6565b60405180910390f35b34801561041757600080fd5b50610420610b1a565b005b34801561042e57600080fd5b5061044960048036038101906104449190612b44565b610c6d565b005b34801561045757600080fd5b50610460610d0c565b60405161046d9190612ad6565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190612e0a565b610d12565b6040516104aa9190612ad6565b60405180910390f35b3480156104bf57600080fd5b506104c8610d2a565b6040516104d59190612b80565b60405180910390f35b3480156104ea57600080fd5b506104f3610d53565b6040516105009190612ad6565b60405180910390f35b34801561051557600080fd5b5061051e610d59565b60405161052b919061290d565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612b44565b610d96565b005b34801561056957600080fd5b50610584600480360381019061057f91906129d7565b610e35565b6040516105919190612a32565b60405180910390f35b3480156105a657600080fd5b506105af610e53565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190612e92565b610ecd565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190612ef2565b611007565b60405161060e9190612ad6565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612b44565b61108e565b005b34801561064c57600080fd5b5061066760048036038101906106629190612e0a565b611148565b005b60606040518060400160405280600981526020017f5065706520466c69700000000000000000000000000000000000000000000000815250905090565b60006106ba6106b361130a565b8484611312565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b60006107068484846114dd565b6107c78461071261130a565b6107c28560405180606001604052806028815260200161398560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077861130a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8a9092919063ffffffff16565b611312565b600190509392505050565b601381815481106107e257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61084e61130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d290612f7e565b60405180910390fd5b601560169054906101000a900460ff16156109835760005b81518110156109815760016010600084848151811061091557610914612f9e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061097990612ffc565b9150506108f3565b505b8460088190555083600a819055508260098190555081600b819055505050505050565b6109ae61130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3290612f7e565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a9861130a565b73ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b6000479050610ac681611dee565b50565b6000610b13600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5a565b9050919050565b610b2261130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690612f7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c7561130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612f7e565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f464c495000000000000000000000000000000000000000000000000000000000815250905090565b610d9e61130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290612f7e565b60405180910390fd5b8060188190555050565b6000610e49610e4261130a565b84846114dd565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e9461130a565b73ffffffffffffffffffffffffffffffffffffffff1614610eb457600080fd5b6000610ebf30610ac9565b9050610eca81611ec8565b50565b610ed561130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990612f7e565b60405180910390fd5b60005b83839050811015611001578160056000868685818110610f8857610f87612f9e565b5b9050602002016020810190610f9d9190612e0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ff990612ffc565b915050610f65565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61109661130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a90612f7e565b60405180910390fd5b806017819055506000601560166101000a81548160ff02191690831515021790555050565b61115061130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490612f7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561124d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611244906130b7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e9906131db565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114d09190612ad6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561154d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115449061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b4906132ff565b60405180910390fd5b60008111611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790613391565b60405180910390fd5b611608610d2a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116765750611646610d2a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a8957601560169054906101000a900460ff161561171d57601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661171c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611713906133fd565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117a757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611810576013829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b601654811115611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90613469565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461190257601754816118b784610ac9565b6118c19190613489565b10611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890613551565b60405180910390fd5b5b600061190d30610ac9565b90506000601854821015905060165482106119285760165491505b8080156119425750601560149054906101000a900460ff16155b801561199c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119b2575060158054906101000a900460ff165b8015611a085750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a5e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a8657611a6c82611ec8565b60004790506000811115611a8457611a8347611dee565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611be25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611bf15760009050611d78565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c9c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cb457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d5f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d7757600a54600c81905550600b54600d819055505b5b611d8484848484612150565b50505050565b6000838311158290611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc9919061290d565b60405180910390fd5b5060008385611de19190613571565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e56573d6000803e3d6000fd5b5050565b6000600654821115611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613617565b60405180910390fd5b6000611eab61217d565b9050611ec081846121a890919063ffffffff16565b915050919050565b6001601560146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f0057611eff612bd7565b5b604051908082528060200260200182016040528015611f2e5781602001602082028036833780820191505090505b5090503081600081518110611f4657611f45612f9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe857600080fd5b505afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612020919061364c565b8160018151811061203457612033612f9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061209b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611312565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120ff959493929190613772565b600060405180830381600087803b15801561211957600080fd5b505af115801561212d573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b8061215e5761215d6121f2565b5b612169848484612235565b8061217757612176612400565b5b50505050565b600080600061218a612414565b915091506121a181836121a890919063ffffffff16565b9250505090565b60006121ea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612470565b905092915050565b6000600c5414801561220657506000600d54145b1561221057612233565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612247876124d3565b9550955095509550955095506122a586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061233a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612386816125e3565b61239084836126a0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ed9190612ad6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061244666038d7ea4c680006006546121a890919063ffffffff16565b8210156124635760065466038d7ea4c6800093509350505061246c565b81819350935050505b9091565b600080831182906124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae919061290d565b60405180910390fd5b50600083856124c691906137fb565b9050809150509392505050565b60008060008060008060008060006124f08a600c54600d546126da565b925092509250600061250061217d565b905060008060006125138e878787612770565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061257d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8a565b905092915050565b60008082846125949190613489565b9050838110156125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d090613878565b60405180910390fd5b8091505092915050565b60006125ed61217d565b9050600061260482846127f990919063ffffffff16565b905061265881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126b58260065461253b90919063ffffffff16565b6006819055506126d08160075461258590919063ffffffff16565b6007819055505050565b60008060008061270660646126f8888a6127f990919063ffffffff16565b6121a890919063ffffffff16565b905060006127306064612722888b6127f990919063ffffffff16565b6121a890919063ffffffff16565b905060006127598261274b858c61253b90919063ffffffff16565b61253b90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061278985896127f990919063ffffffff16565b905060006127a086896127f990919063ffffffff16565b905060006127b787896127f990919063ffffffff16565b905060006127e0826127d2858761253b90919063ffffffff16565b61253b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561280c576000905061286e565b6000828461281a9190613898565b905082848261282991906137fb565b14612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090613964565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128ae578082015181840152602081019050612893565b838111156128bd576000848401525b50505050565b6000601f19601f8301169050919050565b60006128df82612874565b6128e9818561287f565b93506128f9818560208601612890565b612902816128c3565b840191505092915050565b6000602082019050818103600083015261292781846128d4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061296e82612943565b9050919050565b61297e81612963565b811461298957600080fd5b50565b60008135905061299b81612975565b92915050565b6000819050919050565b6129b4816129a1565b81146129bf57600080fd5b50565b6000813590506129d1816129ab565b92915050565b600080604083850312156129ee576129ed612939565b5b60006129fc8582860161298c565b9250506020612a0d858286016129c2565b9150509250929050565b60008115159050919050565b612a2c81612a17565b82525050565b6000602082019050612a476000830184612a23565b92915050565b6000819050919050565b6000612a72612a6d612a6884612943565b612a4d565b612943565b9050919050565b6000612a8482612a57565b9050919050565b6000612a9682612a79565b9050919050565b612aa681612a8b565b82525050565b6000602082019050612ac16000830184612a9d565b92915050565b612ad0816129a1565b82525050565b6000602082019050612aeb6000830184612ac7565b92915050565b600080600060608486031215612b0a57612b09612939565b5b6000612b188682870161298c565b9350506020612b298682870161298c565b9250506040612b3a868287016129c2565b9150509250925092565b600060208284031215612b5a57612b59612939565b5b6000612b68848285016129c2565b91505092915050565b612b7a81612963565b82525050565b6000602082019050612b956000830184612b71565b92915050565b600060ff82169050919050565b612bb181612b9b565b82525050565b6000602082019050612bcc6000830184612ba8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c0f826128c3565b810181811067ffffffffffffffff82111715612c2e57612c2d612bd7565b5b80604052505050565b6000612c4161292f565b9050612c4d8282612c06565b919050565b600067ffffffffffffffff821115612c6d57612c6c612bd7565b5b602082029050602081019050919050565b600080fd5b6000612c96612c9184612c52565b612c37565b90508083825260208201905060208402830185811115612cb957612cb8612c7e565b5b835b81811015612ce25780612cce888261298c565b845260208401935050602081019050612cbb565b5050509392505050565b600082601f830112612d0157612d00612bd2565b5b8135612d11848260208601612c83565b91505092915050565b600080600080600060a08688031215612d3657612d35612939565b5b6000612d44888289016129c2565b9550506020612d55888289016129c2565b9450506040612d66888289016129c2565b9350506060612d77888289016129c2565b925050608086013567ffffffffffffffff811115612d9857612d9761293e565b5b612da488828901612cec565b9150509295509295909350565b612dba81612a17565b8114612dc557600080fd5b50565b600081359050612dd781612db1565b92915050565b600060208284031215612df357612df2612939565b5b6000612e0184828501612dc8565b91505092915050565b600060208284031215612e2057612e1f612939565b5b6000612e2e8482850161298c565b91505092915050565b600080fd5b60008083601f840112612e5257612e51612bd2565b5b8235905067ffffffffffffffff811115612e6f57612e6e612e37565b5b602083019150836020820283011115612e8b57612e8a612c7e565b5b9250929050565b600080600060408486031215612eab57612eaa612939565b5b600084013567ffffffffffffffff811115612ec957612ec861293e565b5b612ed586828701612e3c565b93509350506020612ee886828701612dc8565b9150509250925092565b60008060408385031215612f0957612f08612939565b5b6000612f178582860161298c565b9250506020612f288582860161298c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f6860208361287f565b9150612f7382612f32565b602082019050919050565b60006020820190508181036000830152612f9781612f5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613007826129a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561303a57613039612fcd565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130a160268361287f565b91506130ac82613045565b604082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061313360248361287f565b915061313e826130d7565b604082019050919050565b6000602082019050818103600083015261316281613126565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131c560228361287f565b91506131d082613169565b604082019050919050565b600060208201905081810360008301526131f4816131b8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061325760258361287f565b9150613262826131fb565b604082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132e960238361287f565b91506132f48261328d565b604082019050919050565b60006020820190508181036000830152613318816132dc565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061337b60298361287f565b91506133868261331f565b604082019050919050565b600060208201905081810360008301526133aa8161336e565b9050919050565b7f6e6f000000000000000000000000000000000000000000000000000000000000600082015250565b60006133e760028361287f565b91506133f2826133b1565b602082019050919050565b60006020820190508181036000830152613416816133da565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613453601c8361287f565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b6000613494826129a1565b915061349f836129a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134d4576134d3612fcd565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061353b60238361287f565b9150613546826134df565b604082019050919050565b6000602082019050818103600083015261356a8161352e565b9050919050565b600061357c826129a1565b9150613587836129a1565b92508282101561359a57613599612fcd565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613601602a8361287f565b915061360c826135a5565b604082019050919050565b60006020820190508181036000830152613630816135f4565b9050919050565b60008151905061364681612975565b92915050565b60006020828403121561366257613661612939565b5b600061367084828501613637565b91505092915050565b6000819050919050565b600061369e61369961369484613679565b612a4d565b6129a1565b9050919050565b6136ae81613683565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136e981612963565b82525050565b60006136fb83836136e0565b60208301905092915050565b6000602082019050919050565b600061371f826136b4565b61372981856136bf565b9350613734836136d0565b8060005b8381101561376557815161374c88826136ef565b975061375783613707565b925050600181019050613738565b5085935050505092915050565b600060a0820190506137876000830188612ac7565b61379460208301876136a5565b81810360408301526137a68186613714565b90506137b56060830185612b71565b6137c26080830184612ac7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613806826129a1565b9150613811836129a1565b925082613821576138206137cc565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613862601b8361287f565b915061386d8261382c565b602082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b60006138a3826129a1565b91506138ae836129a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138e7576138e6612fcd565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061394e60218361287f565b9150613959826138f2565b604082019050919050565b6000602082019050818103600083015261397d81613941565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e66462ef6d73798d63ae375fd6ba36cf6e5198b2dfd2806cbef9a7a5aa4064f64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063715018a6116100ec57806398a5c3151161008a578063c492f04611610064578063c492f046146105b1578063dd62ed3e146105da578063ea1644d514610617578063f2fde38b14610640576101a7565b806398a5c31514610534578063a9059cbb1461055d578063c3c8cd801461059a576101a7565b80637f2feddc116100c65780637f2feddc146104765780638da5cb5b146104b35780638f9a55c0146104de57806395d89b4114610509576101a7565b8063715018a61461040b57806374010ece146104225780637d1db4a51461044b576101a7565b80632fd689e3116101595780636cf38f06116101335780636cf38f06146103655780636d8aa8f81461038e5780636fc3eaec146103b757806370a08231146103ce576101a7565b80632fd689e3146102e4578063313ce5671461030f57806349bd5a5e1461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063294423b6146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce919061290d565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906129d7565b6106a6565b60405161020b9190612a32565b60405180910390f35b34801561022057600080fd5b506102296106c4565b6040516102369190612aac565b60405180910390f35b34801561024b57600080fd5b506102546106ea565b6040516102619190612ad6565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612af1565b6106f9565b60405161029e9190612a32565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612b44565b6107d2565b6040516102db9190612b80565b60405180910390f35b3480156102f057600080fd5b506102f9610811565b6040516103069190612ad6565b60405180910390f35b34801561031b57600080fd5b50610324610817565b6040516103319190612bb7565b60405180910390f35b34801561034657600080fd5b5061034f610820565b60405161035c9190612b80565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d1a565b610846565b005b34801561039a57600080fd5b506103b560048036038101906103b09190612ddd565b6109a6565b005b3480156103c357600080fd5b506103cc610a57565b005b3480156103da57600080fd5b506103f560048036038101906103f09190612e0a565b610ac9565b6040516104029190612ad6565b60405180910390f35b34801561041757600080fd5b50610420610b1a565b005b34801561042e57600080fd5b5061044960048036038101906104449190612b44565b610c6d565b005b34801561045757600080fd5b50610460610d0c565b60405161046d9190612ad6565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190612e0a565b610d12565b6040516104aa9190612ad6565b60405180910390f35b3480156104bf57600080fd5b506104c8610d2a565b6040516104d59190612b80565b60405180910390f35b3480156104ea57600080fd5b506104f3610d53565b6040516105009190612ad6565b60405180910390f35b34801561051557600080fd5b5061051e610d59565b60405161052b919061290d565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612b44565b610d96565b005b34801561056957600080fd5b50610584600480360381019061057f91906129d7565b610e35565b6040516105919190612a32565b60405180910390f35b3480156105a657600080fd5b506105af610e53565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190612e92565b610ecd565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190612ef2565b611007565b60405161060e9190612ad6565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612b44565b61108e565b005b34801561064c57600080fd5b5061066760048036038101906106629190612e0a565b611148565b005b60606040518060400160405280600981526020017f5065706520466c69700000000000000000000000000000000000000000000000815250905090565b60006106ba6106b361130a565b8484611312565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b60006107068484846114dd565b6107c78461071261130a565b6107c28560405180606001604052806028815260200161398560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077861130a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8a9092919063ffffffff16565b611312565b600190509392505050565b601381815481106107e257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61084e61130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d290612f7e565b60405180910390fd5b601560169054906101000a900460ff16156109835760005b81518110156109815760016010600084848151811061091557610914612f9e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061097990612ffc565b9150506108f3565b505b8460088190555083600a819055508260098190555081600b819055505050505050565b6109ae61130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3290612f7e565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a9861130a565b73ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b6000479050610ac681611dee565b50565b6000610b13600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5a565b9050919050565b610b2261130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690612f7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c7561130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612f7e565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f464c495000000000000000000000000000000000000000000000000000000000815250905090565b610d9e61130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290612f7e565b60405180910390fd5b8060188190555050565b6000610e49610e4261130a565b84846114dd565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e9461130a565b73ffffffffffffffffffffffffffffffffffffffff1614610eb457600080fd5b6000610ebf30610ac9565b9050610eca81611ec8565b50565b610ed561130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990612f7e565b60405180910390fd5b60005b83839050811015611001578160056000868685818110610f8857610f87612f9e565b5b9050602002016020810190610f9d9190612e0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ff990612ffc565b915050610f65565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61109661130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a90612f7e565b60405180910390fd5b806017819055506000601560166101000a81548160ff02191690831515021790555050565b61115061130a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490612f7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561124d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611244906130b7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e9906131db565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114d09190612ad6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561154d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115449061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b4906132ff565b60405180910390fd5b60008111611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790613391565b60405180910390fd5b611608610d2a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116765750611646610d2a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a8957601560169054906101000a900460ff161561171d57601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661171c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611713906133fd565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117a757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611810576013829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b601654811115611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90613469565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461190257601754816118b784610ac9565b6118c19190613489565b10611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890613551565b60405180910390fd5b5b600061190d30610ac9565b90506000601854821015905060165482106119285760165491505b8080156119425750601560149054906101000a900460ff16155b801561199c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119b2575060158054906101000a900460ff165b8015611a085750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a5e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a8657611a6c82611ec8565b60004790506000811115611a8457611a8347611dee565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611be25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611bf15760009050611d78565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c9c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cb457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d5f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d7757600a54600c81905550600b54600d819055505b5b611d8484848484612150565b50505050565b6000838311158290611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc9919061290d565b60405180910390fd5b5060008385611de19190613571565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e56573d6000803e3d6000fd5b5050565b6000600654821115611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613617565b60405180910390fd5b6000611eab61217d565b9050611ec081846121a890919063ffffffff16565b915050919050565b6001601560146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f0057611eff612bd7565b5b604051908082528060200260200182016040528015611f2e5781602001602082028036833780820191505090505b5090503081600081518110611f4657611f45612f9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe857600080fd5b505afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612020919061364c565b8160018151811061203457612033612f9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061209b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611312565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120ff959493929190613772565b600060405180830381600087803b15801561211957600080fd5b505af115801561212d573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b8061215e5761215d6121f2565b5b612169848484612235565b8061217757612176612400565b5b50505050565b600080600061218a612414565b915091506121a181836121a890919063ffffffff16565b9250505090565b60006121ea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612470565b905092915050565b6000600c5414801561220657506000600d54145b1561221057612233565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612247876124d3565b9550955095509550955095506122a586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061233a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612386816125e3565b61239084836126a0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ed9190612ad6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061244666038d7ea4c680006006546121a890919063ffffffff16565b8210156124635760065466038d7ea4c6800093509350505061246c565b81819350935050505b9091565b600080831182906124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae919061290d565b60405180910390fd5b50600083856124c691906137fb565b9050809150509392505050565b60008060008060008060008060006124f08a600c54600d546126da565b925092509250600061250061217d565b905060008060006125138e878787612770565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061257d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8a565b905092915050565b60008082846125949190613489565b9050838110156125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d090613878565b60405180910390fd5b8091505092915050565b60006125ed61217d565b9050600061260482846127f990919063ffffffff16565b905061265881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126b58260065461253b90919063ffffffff16565b6006819055506126d08160075461258590919063ffffffff16565b6007819055505050565b60008060008061270660646126f8888a6127f990919063ffffffff16565b6121a890919063ffffffff16565b905060006127306064612722888b6127f990919063ffffffff16565b6121a890919063ffffffff16565b905060006127598261274b858c61253b90919063ffffffff16565b61253b90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061278985896127f990919063ffffffff16565b905060006127a086896127f990919063ffffffff16565b905060006127b787896127f990919063ffffffff16565b905060006127e0826127d2858761253b90919063ffffffff16565b61253b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561280c576000905061286e565b6000828461281a9190613898565b905082848261282991906137fb565b14612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090613964565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128ae578082015181840152602081019050612893565b838111156128bd576000848401525b50505050565b6000601f19601f8301169050919050565b60006128df82612874565b6128e9818561287f565b93506128f9818560208601612890565b612902816128c3565b840191505092915050565b6000602082019050818103600083015261292781846128d4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061296e82612943565b9050919050565b61297e81612963565b811461298957600080fd5b50565b60008135905061299b81612975565b92915050565b6000819050919050565b6129b4816129a1565b81146129bf57600080fd5b50565b6000813590506129d1816129ab565b92915050565b600080604083850312156129ee576129ed612939565b5b60006129fc8582860161298c565b9250506020612a0d858286016129c2565b9150509250929050565b60008115159050919050565b612a2c81612a17565b82525050565b6000602082019050612a476000830184612a23565b92915050565b6000819050919050565b6000612a72612a6d612a6884612943565b612a4d565b612943565b9050919050565b6000612a8482612a57565b9050919050565b6000612a9682612a79565b9050919050565b612aa681612a8b565b82525050565b6000602082019050612ac16000830184612a9d565b92915050565b612ad0816129a1565b82525050565b6000602082019050612aeb6000830184612ac7565b92915050565b600080600060608486031215612b0a57612b09612939565b5b6000612b188682870161298c565b9350506020612b298682870161298c565b9250506040612b3a868287016129c2565b9150509250925092565b600060208284031215612b5a57612b59612939565b5b6000612b68848285016129c2565b91505092915050565b612b7a81612963565b82525050565b6000602082019050612b956000830184612b71565b92915050565b600060ff82169050919050565b612bb181612b9b565b82525050565b6000602082019050612bcc6000830184612ba8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c0f826128c3565b810181811067ffffffffffffffff82111715612c2e57612c2d612bd7565b5b80604052505050565b6000612c4161292f565b9050612c4d8282612c06565b919050565b600067ffffffffffffffff821115612c6d57612c6c612bd7565b5b602082029050602081019050919050565b600080fd5b6000612c96612c9184612c52565b612c37565b90508083825260208201905060208402830185811115612cb957612cb8612c7e565b5b835b81811015612ce25780612cce888261298c565b845260208401935050602081019050612cbb565b5050509392505050565b600082601f830112612d0157612d00612bd2565b5b8135612d11848260208601612c83565b91505092915050565b600080600080600060a08688031215612d3657612d35612939565b5b6000612d44888289016129c2565b9550506020612d55888289016129c2565b9450506040612d66888289016129c2565b9350506060612d77888289016129c2565b925050608086013567ffffffffffffffff811115612d9857612d9761293e565b5b612da488828901612cec565b9150509295509295909350565b612dba81612a17565b8114612dc557600080fd5b50565b600081359050612dd781612db1565b92915050565b600060208284031215612df357612df2612939565b5b6000612e0184828501612dc8565b91505092915050565b600060208284031215612e2057612e1f612939565b5b6000612e2e8482850161298c565b91505092915050565b600080fd5b60008083601f840112612e5257612e51612bd2565b5b8235905067ffffffffffffffff811115612e6f57612e6e612e37565b5b602083019150836020820283011115612e8b57612e8a612c7e565b5b9250929050565b600080600060408486031215612eab57612eaa612939565b5b600084013567ffffffffffffffff811115612ec957612ec861293e565b5b612ed586828701612e3c565b93509350506020612ee886828701612dc8565b9150509250925092565b60008060408385031215612f0957612f08612939565b5b6000612f178582860161298c565b9250506020612f288582860161298c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f6860208361287f565b9150612f7382612f32565b602082019050919050565b60006020820190508181036000830152612f9781612f5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613007826129a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561303a57613039612fcd565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130a160268361287f565b91506130ac82613045565b604082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061313360248361287f565b915061313e826130d7565b604082019050919050565b6000602082019050818103600083015261316281613126565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131c560228361287f565b91506131d082613169565b604082019050919050565b600060208201905081810360008301526131f4816131b8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061325760258361287f565b9150613262826131fb565b604082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132e960238361287f565b91506132f48261328d565b604082019050919050565b60006020820190508181036000830152613318816132dc565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061337b60298361287f565b91506133868261331f565b604082019050919050565b600060208201905081810360008301526133aa8161336e565b9050919050565b7f6e6f000000000000000000000000000000000000000000000000000000000000600082015250565b60006133e760028361287f565b91506133f2826133b1565b602082019050919050565b60006020820190508181036000830152613416816133da565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613453601c8361287f565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b6000613494826129a1565b915061349f836129a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134d4576134d3612fcd565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061353b60238361287f565b9150613546826134df565b604082019050919050565b6000602082019050818103600083015261356a8161352e565b9050919050565b600061357c826129a1565b9150613587836129a1565b92508282101561359a57613599612fcd565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613601602a8361287f565b915061360c826135a5565b604082019050919050565b60006020820190508181036000830152613630816135f4565b9050919050565b60008151905061364681612975565b92915050565b60006020828403121561366257613661612939565b5b600061367084828501613637565b91505092915050565b6000819050919050565b600061369e61369961369484613679565b612a4d565b6129a1565b9050919050565b6136ae81613683565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136e981612963565b82525050565b60006136fb83836136e0565b60208301905092915050565b6000602082019050919050565b600061371f826136b4565b61372981856136bf565b9350613734836136d0565b8060005b8381101561376557815161374c88826136ef565b975061375783613707565b925050600181019050613738565b5085935050505092915050565b600060a0820190506137876000830188612ac7565b61379460208301876136a5565b81810360408301526137a68186613714565b90506137b56060830185612b71565b6137c26080830184612ac7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613806826129a1565b9150613811836129a1565b925082613821576138206137cc565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613862601b8361287f565b915061386d8261382c565b602082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b60006138a3826129a1565b91506138ae836129a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138e7576138e6612fcd565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061394e60218361287f565b9150613959826138f2565b604082019050919050565b6000602082019050818103600083015261397d81613941565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e66462ef6d73798d63ae375fd6ba36cf6e5198b2dfd2806cbef9a7a5aa4064f64736f6c63430008090033

Deployed Bytecode Sourcemap

4167:13131:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6689:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7614:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5479:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6966:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5443:27;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6875:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5527:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16003:384;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16630:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12399:198;;;;;;;;;;;;;:::i;:::-;;7069:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1654:148;;;;;;;;;;;;;:::i;:::-;;16770:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5667:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1440:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5722:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6780:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16439:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7215:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12192;;;;;;;;;;;;;:::i;:::-;;17059:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7422:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16917:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1810:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6689:83;6726:13;6759:5;;;;;;;;;;;;;;;;;6752:12;;6689:83;:::o;7614:193::-;7716:4;7738:39;7747:12;:10;:12::i;:::-;7761:7;7770:6;7738:8;:39::i;:::-;7795:4;7788:11;;7614:193;;;;:::o;5479:41::-;;;;;;;;;;;;;:::o;6966:95::-;7019:7;4730:15;7039:14;;6966:95;:::o;7815:446::-;7947:4;7964:36;7974:6;7982:9;7993:6;7964:9;:36::i;:::-;8011:220;8034:6;8055:12;:10;:12::i;:::-;8082:138;8138:6;8082:138;;;;;;;;;;;;;;;;;:11;:19;8094:6;8082:19;;;;;;;;;;;;;;;:33;8102:12;:10;:12::i;:::-;8082:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8011:8;:220::i;:::-;8249:4;8242:11;;7815:446;;;;;:::o;5443:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5779:50::-;;;;:::o;6875:83::-;6916:5;4404:1;6934:16;;6875:83;:::o;5527:28::-;;;;;;;;;;;;;:::o;16003:384::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16162:2:::1;;;;;;;;;;;16159:61;;;16170:9;16166:53;16186:3;:10;16184:1;:12;16166:53;;;16213:4;16202:2;:10;16205:3;16209:1;16205:6;;;;;;;;:::i;:::-;;;;;;;;16202:10;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;16197:3;;;;;:::i;:::-;;;;16166:53;;;;16159:61;16247:13;16230:14;:30;;;;16289:14;16271:15;:32;;;;16329:11;16314:12;:26;;;;16367:12;16351:13;:28;;;;16003:384:::0;;;;;:::o;16630:101::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16711:12:::1;16697:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;16630:101:::0;:::o;12399:198::-;12465:19;;;;;;;;;;;12449:35;;:12;:10;:12::i;:::-;:35;;;12441:44;;;;;;12496:26;12525:21;12496:50;;12557:32;12570:18;12557:12;:32::i;:::-;12430:167;12399:198::o;7069:138::-;7135:7;7162:37;7182:7;:16;7190:7;7182:16;;;;;;;;;;;;;;;;7162:19;:37::i;:::-;7155:44;;7069:138;;;:::o;1654:148::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1761:1:::1;1724:40;;1745:6;::::0;::::1;;;;;;;;1724:40;;;;;;;;;;;;1792:1;1775:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1654:148::o:0;16770:108::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16859:11:::1;16844:12;:26;;;;16770:108:::0;:::o;5667:43::-;;;;:::o;5284:::-;;;;;;;;;;;;;;;;;:::o;1440:79::-;1478:7;1505:6;;;;;;;;;;;1498:13;;1440:79;:::o;5722:45::-;;;;:::o;6780:87::-;6819:13;6852:7;;;;;;;;;;;;;;;;;6845:14;;6780:87;:::o;16439:139::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16552:18:::1;16530:19;:40;;;;16439:139:::0;:::o;7215:199::-;7320:4;7342:42;7352:12;:10;:12::i;:::-;7366:9;7377:6;7342:9;:42::i;:::-;7402:4;7395:11;;7215:199;;;;:::o;12192:::-;12258:19;;;;;;;;;;;12242:35;;:12;:10;:12::i;:::-;:35;;;12234:44;;;;;;12289:23;12315:24;12333:4;12315:9;:24::i;:::-;12289:50;;12350:33;12367:15;12350:16;:33::i;:::-;12223:168;12192:199::o;17059:234::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17176:9:::1;17172:114;17195:8;;:15;;17191:1;:19;17172:114;;;17266:8;17232:18;:31;17251:8;;17260:1;17251:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17232:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17212:3;;;;;:::i;:::-;;;;17172:114;;;;17059:234:::0;;;:::o;7422:184::-;7539:7;7571:11;:18;7583:5;7571:18;;;;;;;;;;;;;;;:27;7590:7;7571:27;;;;;;;;;;;;;;;;7564:34;;7422:184;;;;:::o;16917:134::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17011:13:::1;16994:14;:30;;;;17038:5;17035:2;;:8;;;;;;;;;;;;;;;;;;16917:134:::0;:::o;1810:244::-;1577:12;:10;:12::i;:::-;1567:22;;:6;;;;;;;;;;:22;;;1559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1919:1:::1;1899:22;;:8;:22;;;;1891:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2009:8;1980:38;;2001:6;::::0;::::1;;;;;;;;1980:38;;;;;;;;;;;;2038:8;2029:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1810:244:::0;:::o;199:98::-;252:7;279:10;272:17;;199:98;:::o;8952:369::-;9096:1;9079:19;;:5;:19;;;;9071:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9177:1;9158:21;;:7;:21;;;;9150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:6;9229:11;:18;9241:5;9229:18;;;;;;;;;;;;;;;:27;9248:7;9229:27;;;;;;;;;;;;;;;:36;;;;9297:7;9281:32;;9290:5;9281:32;;;9306:6;9281:32;;;;;;:::i;:::-;;;;;;;;8952:369;;;:::o;9329:2255::-;9467:1;9451:18;;:4;:18;;;;9443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9544:1;9530:16;;:2;:16;;;;9522:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9614:1;9605:6;:10;9597:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9686:7;:5;:7::i;:::-;9678:15;;:4;:15;;;;:32;;;;;9703:7;:5;:7::i;:::-;9697:13;;:2;:13;;;;9678:32;9674:1184;;;9778:2;;;;;;;;;;;9775:29;;;9790:2;:6;9793:2;9790:6;;;;;;;;;;;;;;;;;;;;;;;;;9782:20;;;;;;;;;;;;:::i;:::-;;;;;;;;;9775:29;9829:13;;;;;;;;;;;9823:19;;:2;:19;;;;:42;;;;;9860:4;9846:19;;:2;:19;;;;9823:42;9820:100;;;9885:10;9901:2;9885:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9820:100;9952:12;;9942:6;:22;;9934:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10023:13;;;;;;;;;;;10017:19;;:2;:19;;;10014:146;;10090:14;;10081:6;10065:13;10075:2;10065:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10057:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10014:146;10176:28;10207:24;10225:4;10207:9;:24::i;:::-;10176:55;;10246:12;10285:19;;10261:20;:43;;10246:58;;10348:12;;10324:20;:36;10321:124;;10417:12;;10394:35;;10321:124;10465:7;:18;;;;;10477:6;;;;;;;;;;;10476:7;10465:18;:43;;;;;10495:13;;;;;;;;;;;10487:21;;:4;:21;;;;10465:43;:58;;;;;10512:11;;;;;;;;;;10465:58;:87;;;;;10528:18;:24;10547:4;10528:24;;;;;;;;;;;;;;;;;;;;;;;;;10527:25;10465:87;:114;;;;;10557:18;:22;10576:2;10557:22;;;;;;;;;;;;;;;;;;;;;;;;;10556:23;10465:114;10461:386;;;10600:38;10617:20;10600:16;:38::i;:::-;10657:26;10686:21;10657:50;;10751:1;10730:18;:22;10726:106;;;10777:35;10790:21;10777:12;:35::i;:::-;10726:106;10581:266;10461:386;9712:1146;;9674:1184;10870:12;10885:4;10870:19;;10934:18;:24;10953:4;10934:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10962:18;:22;10981:2;10962:22;;;;;;;;;;;;;;;;;;;;;;;;;10934:50;10933:102;;;;10998:13;;;;;;;;;;;10990:21;;:4;:21;;;;:44;;;;;11021:13;;;;;;;;;;;11015:19;;:2;:19;;;;10990:44;10933:102;10929:594;;;11062:5;11052:15;;10929:594;;;11145:13;;;;;;;;;;;11137:21;;:4;:21;;;:55;;;;;11176:15;;;;;;;;;;;11162:30;;:2;:30;;;;11137:55;11134:162;;;11225:14;;11213:9;:26;;;;11268:12;;11258:7;:22;;;;11134:162;11355:13;;;;;;;;;;;11349:19;;:2;:19;;;:55;;;;;11388:15;;;;;;;;;;;11372:32;;:4;:32;;;;11349:55;11345:165;;;11437:15;;11425:9;:27;;;;11481:13;;11471:7;:23;;;;11345:165;10929:594;11535:41;11550:4;11556:2;11560:6;11568:7;11535:14;:41::i;:::-;9432:2152;9329:2255;;;:::o;2418:224::-;2538:7;2571:1;2566;:6;;2574:12;2558:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2598:9;2614:1;2610;:5;;;;:::i;:::-;2598:17;;2633:1;2626:8;;;2418:224;;;;;:::o;12083:101::-;12140:19;;;;;;;;;;;:28;;:36;12169:6;12140:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12083:101;:::o;8269:323::-;8364:7;8422;;8411;:18;;8389:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8510:19;8532:10;:8;:10::i;:::-;8510:32;;8560:24;8572:11;8560:7;:11;;:24;;;;:::i;:::-;8553:31;;;8269:323;;;:::o;11592:483::-;5932:4;5923:6;;:13;;;;;;;;;;;;;;;;;;11670:21:::1;11708:1;11694:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11670:40;;11739:4;11721;11726:1;11721:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11765:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11755:4;11760:1;11755:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11798:62;11815:4;11830:15;;;;;;;;;;;11848:11;11798:8;:62::i;:::-;11871:15;;;;;;;;;;;:66;;;11952:11;11978:1;11994:4;12021;12041:15;11871:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11659:416;5968:5:::0;5959:6;;:14;;;;;;;;;;;;;;;;;;11592:483;:::o;12605:282::-;12761:7;12756:28;;12770:14;:12;:14::i;:::-;12756:28;12795:44;12813:6;12821:9;12832:6;12795:17;:44::i;:::-;12855:7;12850:29;;12864:15;:13;:15::i;:::-;12850:29;12605:282;;;;:::o;15566:164::-;15608:7;15629:15;15646;15665:19;:17;:19::i;:::-;15628:56;;;;15702:20;15714:7;15702;:11;;:20;;;;:::i;:::-;15695:27;;;;15566:164;:::o;2904:132::-;2962:7;2989:39;2993:1;2996;2989:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2982:46;;2904:132;;;;:::o;8600:219::-;8660:1;8647:9;;:14;:30;;;;;8676:1;8665:7;;:12;8647:30;8643:43;;;8679:7;;8643:43;8718:9;;8698:17;:29;;;;8756:7;;8738:15;:25;;;;8788:1;8776:9;:13;;;;8810:1;8800:7;:11;;;;8600:219;:::o;12895:610::-;13042:15;13072:23;13110:12;13137:23;13175:12;13202:13;13229:19;13240:7;13229:10;:19::i;:::-;13027:221;;;;;;;;;;;;13277:28;13297:7;13277;:15;13285:6;13277:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13259:7;:15;13267:6;13259:15;;;;;;;;;;;;;;;:46;;;;13337:39;13360:15;13337:7;:18;13345:9;13337:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13316:7;:18;13324:9;13316:18;;;;;;;;;;;;;;;:60;;;;13387:16;13397:5;13387:9;:16::i;:::-;13414:23;13426:4;13432;13414:11;:23::i;:::-;13470:9;13453:44;;13462:6;13453:44;;;13481:15;13453:44;;;;;;:::i;:::-;;;;;;;;13016:489;;;;;;12895:610;;;:::o;8827:117::-;8883:17;;8871:9;:29;;;;8921:15;;8911:7;:25;;;;8827:117::o;15738:257::-;15789:7;15798;15818:15;15836:7;;15818:25;;15854:15;4730;15854:25;;15904:20;4730:15;15904:7;;:11;;:20;;;;:::i;:::-;15894:7;:30;15890:61;;;15934:7;;4730:15;15926:25;;;;;;;;15890:61;15970:7;15979;15962:25;;;;;;15738:257;;;:::o;3044:223::-;3164:7;3196:1;3192;:5;3199:12;3184:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3223:9;3239:1;3235;:5;;;;:::i;:::-;3223:17;;3258:1;3251:8;;;3044:223;;;;;:::o;13924:615::-;14024:7;14046;14068;14090;14112;14134;14170:23;14195:12;14209:13;14239:40;14251:7;14260:9;;14271:7;;14239:11;:40::i;:::-;14169:110;;;;;;14290:19;14312:10;:8;:10::i;:::-;14290:32;;14334:15;14351:23;14376:12;14405:46;14417:7;14426:4;14432:5;14439:11;14405;:46::i;:::-;14333:118;;;;;;14470:7;14479:15;14496:4;14502:15;14519:4;14525:5;14462:69;;;;;;;;;;;;;;;;;;;13924:615;;;;;;;:::o;2274:136::-;2332:7;2359:43;2363:1;2366;2359:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2352:50;;2274:136;;;;:::o;2087:179::-;2145:7;2165:9;2181:1;2177;:5;;;;:::i;:::-;2165:17;;2206:1;2201;:6;;2193:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2257:1;2250:8;;;2087:179;;;;:::o;13513:211::-;13566:19;13588:10;:8;:10::i;:::-;13566:32;;13609:13;13625:22;13635:11;13625:5;:9;;:22;;;;:::i;:::-;13609:38;;13683:33;13710:5;13683:7;:22;13699:4;13683:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13658:7;:22;13674:4;13658:22;;;;;;;;;;;;;;;:58;;;;13555:169;;13513:211;:::o;13732:147::-;13810:17;13822:4;13810:7;;:11;;:17;;;;:::i;:::-;13800:7;:27;;;;13851:20;13866:4;13851:10;;:14;;:20;;;;:::i;:::-;13838:10;:33;;;;13732:147;;:::o;14547:469::-;14716:7;14738;14760;14795:12;14810:30;14836:3;14810:21;14822:8;14810:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14795:45;;14851:13;14867:28;14891:3;14867:19;14879:6;14867:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14851:44;;14906:23;14932:28;14954:5;14932:17;14944:4;14932:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14906:54;;14979:15;14996:4;15002:5;14971:37;;;;;;;;;14547:469;;;;;;;:::o;15024:534::-;15218:7;15240;15262;15297:15;15315:24;15327:11;15315:7;:11;;:24;;;;:::i;:::-;15297:42;;15350:12;15365:21;15374:11;15365:4;:8;;:21;;;;:::i;:::-;15350:36;;15397:13;15413:22;15423:11;15413:5;:9;;:22;;;;:::i;:::-;15397:38;;15446:23;15472:28;15494:5;15472:17;15484:4;15472:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15446:54;;15519:7;15528:15;15545:4;15511:39;;;;;;;;;;15024:534;;;;;;;;:::o;2650:246::-;2708:7;2737:1;2732;:6;2728:47;;;2762:1;2755:8;;;;2728:47;2785:9;2801:1;2797;:5;;;;:::i;:::-;2785:17;;2830:1;2825;2821;:5;;;;:::i;:::-;:10;2813:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2887:1;2880:8;;;2650: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;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:329::-;5503:6;5552:2;5540:9;5531:7;5527:23;5523:32;5520:119;;;5558:79;;:::i;:::-;5520:119;5678:1;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5649:117;5444:329;;;;:::o;5779:118::-;5866:24;5884:5;5866:24;:::i;:::-;5861:3;5854:37;5779:118;;:::o;5903:222::-;5996:4;6034:2;6023:9;6019:18;6011:26;;6047:71;6115:1;6104:9;6100:17;6091:6;6047:71;:::i;:::-;5903:222;;;;:::o;6131:86::-;6166:7;6206:4;6199:5;6195:16;6184:27;;6131:86;;;:::o;6223:112::-;6306:22;6322:5;6306:22;:::i;:::-;6301:3;6294:35;6223:112;;:::o;6341:214::-;6430:4;6468:2;6457:9;6453:18;6445:26;;6481:67;6545:1;6534:9;6530:17;6521:6;6481:67;:::i;:::-;6341:214;;;;:::o;6561:117::-;6670:1;6667;6660:12;6684:180;6732:77;6729:1;6722:88;6829:4;6826:1;6819:15;6853:4;6850:1;6843:15;6870:281;6953:27;6975:4;6953:27;:::i;:::-;6945:6;6941:40;7083:6;7071:10;7068:22;7047:18;7035:10;7032:34;7029:62;7026:88;;;7094:18;;:::i;:::-;7026:88;7134:10;7130:2;7123:22;6913:238;6870:281;;:::o;7157:129::-;7191:6;7218:20;;:::i;:::-;7208:30;;7247:33;7275:4;7267:6;7247:33;:::i;:::-;7157:129;;;:::o;7292:311::-;7369:4;7459:18;7451:6;7448:30;7445:56;;;7481:18;;:::i;:::-;7445:56;7531:4;7523:6;7519:17;7511:25;;7591:4;7585;7581:15;7573:23;;7292:311;;;:::o;7609:117::-;7718:1;7715;7708:12;7749:710;7845:5;7870:81;7886:64;7943:6;7886:64;:::i;:::-;7870:81;:::i;:::-;7861:90;;7971:5;8000:6;7993:5;7986:21;8034:4;8027:5;8023:16;8016:23;;8087:4;8079:6;8075:17;8067:6;8063:30;8116:3;8108:6;8105:15;8102:122;;;8135:79;;:::i;:::-;8102:122;8250:6;8233:220;8267:6;8262:3;8259:15;8233:220;;;8342:3;8371:37;8404:3;8392:10;8371:37;:::i;:::-;8366:3;8359:50;8438:4;8433:3;8429:14;8422:21;;8309:144;8293:4;8288:3;8284:14;8277:21;;8233:220;;;8237:21;7851:608;;7749:710;;;;;:::o;8482:370::-;8553:5;8602:3;8595:4;8587:6;8583:17;8579:27;8569:122;;8610:79;;:::i;:::-;8569:122;8727:6;8714:20;8752:94;8842:3;8834:6;8827:4;8819:6;8815:17;8752:94;:::i;:::-;8743:103;;8559:293;8482:370;;;;:::o;8858:1121::-;8978:6;8986;8994;9002;9010;9059:3;9047:9;9038:7;9034:23;9030:33;9027:120;;;9066:79;;:::i;:::-;9027:120;9186:1;9211:53;9256:7;9247:6;9236:9;9232:22;9211:53;:::i;:::-;9201:63;;9157:117;9313:2;9339:53;9384:7;9375:6;9364:9;9360:22;9339:53;:::i;:::-;9329:63;;9284:118;9441:2;9467:53;9512:7;9503:6;9492:9;9488:22;9467:53;:::i;:::-;9457:63;;9412:118;9569:2;9595:53;9640:7;9631:6;9620:9;9616:22;9595:53;:::i;:::-;9585:63;;9540:118;9725:3;9714:9;9710:19;9697:33;9757:18;9749:6;9746:30;9743:117;;;9779:79;;:::i;:::-;9743:117;9884:78;9954:7;9945:6;9934:9;9930:22;9884:78;:::i;:::-;9874:88;;9668:304;8858:1121;;;;;;;;:::o;9985:116::-;10055:21;10070:5;10055:21;:::i;:::-;10048:5;10045:32;10035:60;;10091:1;10088;10081:12;10035:60;9985:116;:::o;10107:133::-;10150:5;10188:6;10175:20;10166:29;;10204:30;10228:5;10204:30;:::i;:::-;10107:133;;;;:::o;10246:323::-;10302:6;10351:2;10339:9;10330:7;10326:23;10322:32;10319:119;;;10357:79;;:::i;:::-;10319:119;10477:1;10502:50;10544:7;10535:6;10524:9;10520:22;10502:50;:::i;:::-;10492:60;;10448:114;10246:323;;;;:::o;10575:329::-;10634:6;10683:2;10671:9;10662:7;10658:23;10654:32;10651:119;;;10689:79;;:::i;:::-;10651:119;10809:1;10834:53;10879:7;10870:6;10859:9;10855:22;10834:53;:::i;:::-;10824:63;;10780:117;10575:329;;;;:::o;10910:117::-;11019:1;11016;11009:12;11050:568;11123:8;11133:6;11183:3;11176:4;11168:6;11164:17;11160:27;11150:122;;11191:79;;:::i;:::-;11150:122;11304:6;11291:20;11281:30;;11334:18;11326:6;11323:30;11320:117;;;11356:79;;:::i;:::-;11320:117;11470:4;11462:6;11458:17;11446:29;;11524:3;11516:4;11508:6;11504:17;11494:8;11490:32;11487:41;11484:128;;;11531:79;;:::i;:::-;11484:128;11050:568;;;;;:::o;11624:698::-;11716:6;11724;11732;11781:2;11769:9;11760:7;11756:23;11752:32;11749:119;;;11787:79;;:::i;:::-;11749:119;11935:1;11924:9;11920:17;11907:31;11965:18;11957:6;11954:30;11951:117;;;11987:79;;:::i;:::-;11951:117;12100:80;12172:7;12163:6;12152:9;12148:22;12100:80;:::i;:::-;12082:98;;;;11878:312;12229:2;12255:50;12297:7;12288:6;12277:9;12273:22;12255:50;:::i;:::-;12245:60;;12200:115;11624:698;;;;;:::o;12328:474::-;12396:6;12404;12453:2;12441:9;12432:7;12428:23;12424:32;12421:119;;;12459:79;;:::i;:::-;12421:119;12579:1;12604:53;12649:7;12640:6;12629:9;12625:22;12604:53;:::i;:::-;12594:63;;12550:117;12706:2;12732:53;12777:7;12768:6;12757:9;12753:22;12732:53;:::i;:::-;12722:63;;12677:118;12328:474;;;;;:::o;12808:182::-;12948:34;12944:1;12936:6;12932:14;12925:58;12808:182;:::o;12996:366::-;13138:3;13159:67;13223:2;13218:3;13159:67;:::i;:::-;13152:74;;13235:93;13324:3;13235:93;:::i;:::-;13353:2;13348:3;13344:12;13337:19;;12996:366;;;:::o;13368:419::-;13534:4;13572:2;13561:9;13557:18;13549:26;;13621:9;13615:4;13611:20;13607:1;13596:9;13592:17;13585:47;13649:131;13775:4;13649:131;:::i;:::-;13641:139;;13368:419;;;:::o;13793:180::-;13841:77;13838:1;13831:88;13938:4;13935:1;13928:15;13962:4;13959:1;13952:15;13979:180;14027:77;14024:1;14017:88;14124:4;14121:1;14114:15;14148:4;14145:1;14138:15;14165:233;14204:3;14227:24;14245:5;14227:24;:::i;:::-;14218:33;;14273:66;14266:5;14263:77;14260:103;;;14343:18;;:::i;:::-;14260:103;14390:1;14383:5;14379:13;14372:20;;14165:233;;;:::o;14404:225::-;14544:34;14540:1;14532:6;14528:14;14521:58;14613:8;14608:2;14600:6;14596:15;14589:33;14404:225;:::o;14635:366::-;14777:3;14798:67;14862:2;14857:3;14798:67;:::i;:::-;14791:74;;14874:93;14963:3;14874:93;:::i;:::-;14992:2;14987:3;14983:12;14976:19;;14635:366;;;:::o;15007:419::-;15173:4;15211:2;15200:9;15196:18;15188:26;;15260:9;15254:4;15250:20;15246:1;15235:9;15231:17;15224:47;15288:131;15414:4;15288:131;:::i;:::-;15280:139;;15007:419;;;:::o;15432:223::-;15572:34;15568:1;15560:6;15556:14;15549:58;15641:6;15636:2;15628:6;15624:15;15617:31;15432:223;:::o;15661:366::-;15803:3;15824:67;15888:2;15883:3;15824:67;:::i;:::-;15817:74;;15900:93;15989:3;15900:93;:::i;:::-;16018:2;16013:3;16009:12;16002:19;;15661:366;;;:::o;16033:419::-;16199:4;16237:2;16226:9;16222:18;16214:26;;16286:9;16280:4;16276:20;16272:1;16261:9;16257:17;16250:47;16314:131;16440:4;16314:131;:::i;:::-;16306:139;;16033:419;;;:::o;16458:221::-;16598:34;16594:1;16586:6;16582:14;16575:58;16667:4;16662:2;16654:6;16650:15;16643:29;16458:221;:::o;16685:366::-;16827:3;16848:67;16912:2;16907:3;16848:67;:::i;:::-;16841:74;;16924:93;17013:3;16924:93;:::i;:::-;17042:2;17037:3;17033:12;17026:19;;16685:366;;;:::o;17057:419::-;17223:4;17261:2;17250:9;17246:18;17238:26;;17310:9;17304:4;17300:20;17296:1;17285:9;17281:17;17274:47;17338:131;17464:4;17338:131;:::i;:::-;17330:139;;17057:419;;;:::o;17482:224::-;17622:34;17618:1;17610:6;17606:14;17599:58;17691:7;17686:2;17678:6;17674:15;17667:32;17482:224;:::o;17712:366::-;17854:3;17875:67;17939:2;17934:3;17875:67;:::i;:::-;17868:74;;17951:93;18040:3;17951:93;:::i;:::-;18069:2;18064:3;18060:12;18053:19;;17712:366;;;:::o;18084:419::-;18250:4;18288:2;18277:9;18273:18;18265:26;;18337:9;18331:4;18327:20;18323:1;18312:9;18308:17;18301:47;18365:131;18491:4;18365:131;:::i;:::-;18357:139;;18084:419;;;:::o;18509:222::-;18649:34;18645:1;18637:6;18633:14;18626:58;18718:5;18713:2;18705:6;18701:15;18694:30;18509:222;:::o;18737:366::-;18879:3;18900:67;18964:2;18959:3;18900:67;:::i;:::-;18893:74;;18976:93;19065:3;18976:93;:::i;:::-;19094:2;19089:3;19085:12;19078:19;;18737:366;;;:::o;19109:419::-;19275:4;19313:2;19302:9;19298:18;19290:26;;19362:9;19356:4;19352:20;19348:1;19337:9;19333:17;19326:47;19390:131;19516:4;19390:131;:::i;:::-;19382:139;;19109:419;;;:::o;19534:228::-;19674:34;19670:1;19662:6;19658:14;19651:58;19743:11;19738:2;19730:6;19726:15;19719:36;19534:228;:::o;19768:366::-;19910:3;19931:67;19995:2;19990:3;19931:67;:::i;:::-;19924:74;;20007:93;20096:3;20007:93;:::i;:::-;20125:2;20120:3;20116:12;20109:19;;19768:366;;;:::o;20140:419::-;20306:4;20344:2;20333:9;20329:18;20321:26;;20393:9;20387:4;20383:20;20379:1;20368:9;20364:17;20357:47;20421:131;20547:4;20421:131;:::i;:::-;20413:139;;20140:419;;;:::o;20565:152::-;20705:4;20701:1;20693:6;20689:14;20682:28;20565:152;:::o;20723:365::-;20865:3;20886:66;20950:1;20945:3;20886:66;:::i;:::-;20879:73;;20961:93;21050:3;20961:93;:::i;:::-;21079:2;21074:3;21070:12;21063:19;;20723:365;;;:::o;21094:419::-;21260:4;21298:2;21287:9;21283:18;21275:26;;21347:9;21341:4;21337:20;21333:1;21322:9;21318:17;21311:47;21375:131;21501:4;21375:131;:::i;:::-;21367:139;;21094:419;;;:::o;21519:178::-;21659:30;21655:1;21647:6;21643:14;21636:54;21519:178;:::o;21703:366::-;21845:3;21866:67;21930:2;21925:3;21866:67;:::i;:::-;21859:74;;21942:93;22031:3;21942:93;:::i;:::-;22060:2;22055:3;22051:12;22044:19;;21703:366;;;:::o;22075:419::-;22241:4;22279:2;22268:9;22264:18;22256:26;;22328:9;22322:4;22318:20;22314:1;22303:9;22299:17;22292:47;22356:131;22482:4;22356:131;:::i;:::-;22348:139;;22075:419;;;:::o;22500:305::-;22540:3;22559:20;22577:1;22559:20;:::i;:::-;22554:25;;22593:20;22611:1;22593:20;:::i;:::-;22588:25;;22747:1;22679:66;22675:74;22672:1;22669:81;22666:107;;;22753:18;;:::i;:::-;22666:107;22797:1;22794;22790:9;22783:16;;22500:305;;;;:::o;22811:222::-;22951:34;22947:1;22939:6;22935:14;22928:58;23020:5;23015:2;23007:6;23003:15;22996:30;22811:222;:::o;23039:366::-;23181:3;23202:67;23266:2;23261:3;23202:67;:::i;:::-;23195:74;;23278:93;23367:3;23278:93;:::i;:::-;23396:2;23391:3;23387:12;23380:19;;23039:366;;;:::o;23411:419::-;23577:4;23615:2;23604:9;23600:18;23592:26;;23664:9;23658:4;23654:20;23650:1;23639:9;23635:17;23628:47;23692:131;23818:4;23692:131;:::i;:::-;23684:139;;23411:419;;;:::o;23836:191::-;23876:4;23896:20;23914:1;23896:20;:::i;:::-;23891:25;;23930:20;23948:1;23930:20;:::i;:::-;23925:25;;23969:1;23966;23963:8;23960:34;;;23974:18;;:::i;:::-;23960:34;24019:1;24016;24012:9;24004:17;;23836:191;;;;:::o;24033:229::-;24173:34;24169:1;24161:6;24157:14;24150:58;24242:12;24237:2;24229:6;24225:15;24218:37;24033:229;:::o;24268:366::-;24410:3;24431:67;24495:2;24490:3;24431:67;:::i;:::-;24424:74;;24507:93;24596:3;24507:93;:::i;:::-;24625:2;24620:3;24616:12;24609:19;;24268:366;;;:::o;24640:419::-;24806:4;24844:2;24833:9;24829:18;24821:26;;24893:9;24887:4;24883:20;24879:1;24868:9;24864:17;24857:47;24921:131;25047:4;24921:131;:::i;:::-;24913:139;;24640:419;;;:::o;25065:143::-;25122:5;25153:6;25147:13;25138:22;;25169:33;25196:5;25169:33;:::i;:::-;25065:143;;;;:::o;25214:351::-;25284:6;25333:2;25321:9;25312:7;25308:23;25304:32;25301:119;;;25339:79;;:::i;:::-;25301:119;25459:1;25484:64;25540:7;25531:6;25520:9;25516:22;25484:64;:::i;:::-;25474:74;;25430:128;25214:351;;;;:::o;25571:85::-;25616:7;25645:5;25634:16;;25571:85;;;:::o;25662:158::-;25720:9;25753:61;25771:42;25780:32;25806:5;25780:32;:::i;:::-;25771:42;:::i;:::-;25753:61;:::i;:::-;25740:74;;25662:158;;;:::o;25826:147::-;25921:45;25960:5;25921:45;:::i;:::-;25916:3;25909:58;25826:147;;:::o;25979:114::-;26046:6;26080:5;26074:12;26064:22;;25979:114;;;:::o;26099:184::-;26198:11;26232:6;26227:3;26220:19;26272:4;26267:3;26263:14;26248:29;;26099:184;;;;:::o;26289:132::-;26356:4;26379:3;26371:11;;26409:4;26404:3;26400:14;26392:22;;26289:132;;;:::o;26427:108::-;26504:24;26522:5;26504:24;:::i;:::-;26499:3;26492:37;26427:108;;:::o;26541:179::-;26610:10;26631:46;26673:3;26665:6;26631:46;:::i;:::-;26709:4;26704:3;26700:14;26686:28;;26541:179;;;;:::o;26726:113::-;26796:4;26828;26823:3;26819:14;26811:22;;26726:113;;;:::o;26875:732::-;26994:3;27023:54;27071:5;27023:54;:::i;:::-;27093:86;27172:6;27167:3;27093:86;:::i;:::-;27086:93;;27203:56;27253:5;27203:56;:::i;:::-;27282:7;27313:1;27298:284;27323:6;27320:1;27317:13;27298:284;;;27399:6;27393:13;27426:63;27485:3;27470:13;27426:63;:::i;:::-;27419:70;;27512:60;27565:6;27512:60;:::i;:::-;27502:70;;27358:224;27345:1;27342;27338:9;27333:14;;27298:284;;;27302:14;27598:3;27591:10;;26999:608;;;26875:732;;;;:::o;27613:831::-;27876:4;27914:3;27903:9;27899:19;27891:27;;27928:71;27996:1;27985:9;27981:17;27972:6;27928:71;:::i;:::-;28009:80;28085:2;28074:9;28070:18;28061:6;28009:80;:::i;:::-;28136:9;28130:4;28126:20;28121:2;28110:9;28106:18;28099:48;28164:108;28267:4;28258:6;28164:108;:::i;:::-;28156:116;;28282:72;28350:2;28339:9;28335:18;28326:6;28282:72;:::i;:::-;28364:73;28432:3;28421:9;28417:19;28408:6;28364:73;:::i;:::-;27613:831;;;;;;;;:::o;28450:180::-;28498:77;28495:1;28488:88;28595:4;28592:1;28585:15;28619:4;28616:1;28609:15;28636:185;28676:1;28693:20;28711:1;28693:20;:::i;:::-;28688:25;;28727:20;28745:1;28727:20;:::i;:::-;28722:25;;28766:1;28756:35;;28771:18;;:::i;:::-;28756:35;28813:1;28810;28806:9;28801:14;;28636:185;;;;:::o;28827:177::-;28967:29;28963:1;28955:6;28951:14;28944:53;28827:177;:::o;29010:366::-;29152:3;29173:67;29237:2;29232:3;29173:67;:::i;:::-;29166:74;;29249:93;29338:3;29249:93;:::i;:::-;29367:2;29362:3;29358:12;29351:19;;29010:366;;;:::o;29382:419::-;29548:4;29586:2;29575:9;29571:18;29563:26;;29635:9;29629:4;29625:20;29621:1;29610:9;29606:17;29599:47;29663:131;29789:4;29663:131;:::i;:::-;29655:139;;29382:419;;;:::o;29807:348::-;29847:7;29870:20;29888:1;29870:20;:::i;:::-;29865:25;;29904:20;29922:1;29904:20;:::i;:::-;29899:25;;30092:1;30024:66;30020:74;30017:1;30014:81;30009:1;30002:9;29995:17;29991:105;29988:131;;;30099:18;;:::i;:::-;29988:131;30147:1;30144;30140:9;30129:20;;29807:348;;;;:::o;30161:220::-;30301:34;30297:1;30289:6;30285:14;30278:58;30370:3;30365:2;30357:6;30353:15;30346:28;30161:220;:::o;30387:366::-;30529:3;30550:67;30614:2;30609:3;30550:67;:::i;:::-;30543:74;;30626:93;30715:3;30626:93;:::i;:::-;30744:2;30739:3;30735:12;30728:19;;30387:366;;;:::o;30759:419::-;30925:4;30963:2;30952:9;30948:18;30940:26;;31012:9;31006:4;31002:20;30998:1;30987:9;30983:17;30976:47;31040:131;31166:4;31040:131;:::i;:::-;31032:139;;30759:419;;;:::o

Swarm Source

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