ETH Price: $2,524.62 (+0.30%)

Token

Pongo Inu (PONGO)
 

Overview

Max Total Supply

100,000,000,000,000 PONGO

Holders

639 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
rhyannguyn.eth
Balance
65,038,201.69862929 PONGO

Value
$0.00
0x2F730920f265FF855e604303B7Da713D50943DA9
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The idea behind our token is to create a treasury wallet that will be used to invest in safe yeld farming, stable coin APY with liquidity protocols Like AAve and other low market capital projects in the interest of the community.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PONGO

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2022-02-13
*/

/*
   PONGO INU token Official links:                                                                                                               
  
- Website: https://www.pongoinutoken.com
- Telegram: https://t.me/pongoinutoken
- Twitter: https://twitter.com/pongoinutoken

*/

//SPDX-License-Identifier: UNLICENSED

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

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

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

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 PONGO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private openBlock;
    uint256 public _swapTokensAtAmount = 100000000000 * 10**9; //0.1%
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Pongo Inu";
    string private constant _symbol = "PONGO";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeAddrWallet1 = payable(0x53651d97C17EB17BF6cF89DD61F04e3503ef3092);
        _feeAddrWallet2 = payable(0x2ABD93A991e8a7eC6ad1744A87F11c91E5CfBe50);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(
            address(0xF4d21606B870c619BE1D24A089130d6654B89704),
            _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 setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    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 _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");
        
       
        _feeAddr1 = 4;
        _feeAddr2 = 8;
        if (from != owner() && to != owner() && from != address(this)) {
            
            
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                
                // Not over max tx amount
                require(amount <= _maxTxAmount, "Over max transaction amount.");
                // Cooldown
                require(cooldown[to] < block.timestamp, "Cooldown enforced.");
                // Max wallet
                require(balanceOf(to) + amount <= _maxWalletAmount, "Over max wallet amount.");
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniswapV2Pair &&
                from != address(uniswapV2Router) &&
                !_isExcludedFromFee[from]
            ) {
                _feeAddr1 = 4;
                _feeAddr2 = 8;
            }

            if (openBlock + 3 >= block.number && from == uniswapV2Pair) {
                _feeAddr1 = 99;
                _feeAddr2 = 1;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        } else {
            // Only if it's not from or to owner or from contract address.
            _feeAddr1 = 0;
            _feeAddr2 = 0;
        }

        _tokenTransfer(from, to, amount);
    }

    function swapAndLiquifyEnabled(bool enabled) public onlyOwner {
        inSwap = enabled;
    }

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

    function setMaxTxAmount(uint256 amount) public onlyOwner {
        _maxTxAmount = amount * 10**9;
    }
    function setMaxWalletAmount(uint256 amount) public onlyOwner {
        _maxWalletAmount = amount * 10**9;
    }


    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        // .5% 
        _maxTxAmount = 1000000000001 * 10**9;
        _maxWalletAmount = 2000000000001 * 10**9;
        tradingOpen = true;
        openBlock = block.number;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

    function addBot(address theBot) public onlyOwner {
        bots[theBot] = true;
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

    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 manualSwap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        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 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"theBot","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","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":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269152d02c7e14af68000006000196200001e91906200051e565b6000196200002d919062000585565b60085569152d02c7e14af6800000600a5568056bc75e2d63100000600c5569152d02c7e14af6800000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff021916908315150217905550348015620000b757600080fd5b506000620000ca620004b460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507353651d97c17eb17bf6cf89dd61f04e3503ef3092601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732abd93a991e8a7ec6ad1744a87f11c91e5cfbe50601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546002600062000229620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200027d620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673f4d21606b870c619be1d24a089130d6654b8970473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004a69190620005d1565b60405180910390a3620005ee565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200052b82620004e5565b91506200053883620004e5565b9250826200054b576200054a620004ef565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200059282620004e5565b91506200059f83620004e5565b925082821015620005b557620005b462000556565b5b828203905092915050565b620005cb81620004e5565b82525050565b6000602082019050620005e86000830184620005c0565b92915050565b61379c80620005fe6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c91906128e9565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129a4565b6104fc565b60405161019991906129ff565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190612a29565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612a44565b61052c565b60405161020191906129ff565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c9190612a97565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612ac4565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190612a29565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a99190612b0d565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb9190612b54565b61082c565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612a97565b6108de565b6040516103269190612a29565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612b90565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b60405161039391906128e9565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129a4565b610ae8565b6040516103d091906129ff565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612bab565b61107b565b6040516104249190612a29565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612b54565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612ac4565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612a97565b6112d4565b005b60606040518060400160405280600981526020017f506f6e676f20496e750000000000000000000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161373f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612c37565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612c37565b60405180910390fd5b633b9aca008161079a9190612c86565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612c37565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612c37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f504f4e474f000000000000000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612c37565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612d2c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612d61565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190612d61565b6040518363ffffffff1660e01b8152600401610db1929190612d8e565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190612d61565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612dfc565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612e72565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc61a3aca00600a81905550686c6b935b8bf8daca00600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612ec5565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612f03565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612c37565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612c37565b60405180910390fd5b633b9aca00816112599190612c86565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612c37565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fa2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390613034565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190612a29565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe906130c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90613158565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906131ea565b60405180910390fd5b6004600e819055506008600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613256565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906132c2565b60405180910390fd5b600d5481611a1b846108de565b611a2591906132e2565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613384565b60405180910390fd5b601e42611a7391906132e2565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576004600e819055506008600f819055505b436003600b54611bde91906132e2565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8191906128e9565b60405180910390fd5b5060008385611d9991906133a4565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd6133d8565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe9190612d61565b81600181518110611f1257611f11613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd9594939291906134f4565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906135c0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190612a29565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a91906128e9565b60405180910390fd5b50600083856124a2919061360f565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b600080828461257091906132e2565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac9061368c565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f69190612c86565b9050828482612805919061360f565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c9061371e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561288a57808201518184015260208101905061286f565b83811115612899576000848401525b50505050565b6000601f19601f8301169050919050565b60006128bb82612850565b6128c5818561285b565b93506128d581856020860161286c565b6128de8161289f565b840191505092915050565b6000602082019050818103600083015261290381846128b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061293b82612910565b9050919050565b61294b81612930565b811461295657600080fd5b50565b60008135905061296881612942565b92915050565b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b600080604083850312156129bb576129ba61290b565b5b60006129c985828601612959565b92505060206129da8582860161298f565b9150509250929050565b60008115159050919050565b6129f9816129e4565b82525050565b6000602082019050612a1460008301846129f0565b92915050565b612a238161296e565b82525050565b6000602082019050612a3e6000830184612a1a565b92915050565b600080600060608486031215612a5d57612a5c61290b565b5b6000612a6b86828701612959565b9350506020612a7c86828701612959565b9250506040612a8d8682870161298f565b9150509250925092565b600060208284031215612aad57612aac61290b565b5b6000612abb84828501612959565b91505092915050565b600060208284031215612ada57612ad961290b565b5b6000612ae88482850161298f565b91505092915050565b600060ff82169050919050565b612b0781612af1565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b31816129e4565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600060208284031215612b6a57612b6961290b565b5b6000612b7884828501612b3f565b91505092915050565b612b8a81612930565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b60008060408385031215612bc257612bc161290b565b5b6000612bd085828601612959565b9250506020612be185828601612959565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c2160208361285b565b9150612c2c82612beb565b602082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c918261296e565b9150612c9c8361296e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cd557612cd4612c57565b5b828202905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d1660178361285b565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b600081519050612d5b81612942565b92915050565b600060208284031215612d7757612d7661290b565b5b6000612d8584828501612d4c565b91505092915050565b6000604082019050612da36000830185612b81565b612db06020830184612b81565b9392505050565b6000819050919050565b6000819050919050565b6000612de6612de1612ddc84612db7565b612dc1565b61296e565b9050919050565b612df681612dcb565b82525050565b600060c082019050612e116000830189612b81565b612e1e6020830188612a1a565b612e2b6040830187612ded565b612e386060830186612ded565b612e456080830185612b81565b612e5260a0830184612a1a565b979650505050505050565b600081519050612e6c81612978565b92915050565b600080600060608486031215612e8b57612e8a61290b565b5b6000612e9986828701612e5d565b9350506020612eaa86828701612e5d565b9250506040612ebb86828701612e5d565b9150509250925092565b6000604082019050612eda6000830185612b81565b612ee76020830184612a1a565b9392505050565b600081519050612efd81612b28565b92915050565b600060208284031215612f1957612f1861290b565b5b6000612f2784828501612eee565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f8c60248361285b565b9150612f9782612f30565b604082019050919050565b60006020820190508181036000830152612fbb81612f7f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061301e60228361285b565b915061302982612fc2565b604082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130b060258361285b565b91506130bb82613054565b604082019050919050565b600060208201905081810360008301526130df816130a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061314260238361285b565b915061314d826130e6565b604082019050919050565b6000602082019050818103600083015261317181613135565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131d460298361285b565b91506131df82613178565b604082019050919050565b60006020820190508181036000830152613203816131c7565b9050919050565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b6000613240601c8361285b565b915061324b8261320a565b602082019050919050565b6000602082019050818103600083015261326f81613233565b9050919050565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b60006132ac60128361285b565b91506132b782613276565b602082019050919050565b600060208201905081810360008301526132db8161329f565b9050919050565b60006132ed8261296e565b91506132f88361296e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332d5761332c612c57565b5b828201905092915050565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b600061336e60178361285b565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b60006133af8261296e565b91506133ba8361296e565b9250828210156133cd576133cc612c57565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61346b81612930565b82525050565b600061347d8383613462565b60208301905092915050565b6000602082019050919050565b60006134a182613436565b6134ab8185613441565b93506134b683613452565b8060005b838110156134e75781516134ce8882613471565b97506134d983613489565b9250506001810190506134ba565b5085935050505092915050565b600060a0820190506135096000830188612a1a565b6135166020830187612ded565b81810360408301526135288186613496565b90506135376060830185612b81565b6135446080830184612a1a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135aa602a8361285b565b91506135b58261354e565b604082019050919050565b600060208201905081810360008301526135d98161359d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061361a8261296e565b91506136258361296e565b925082613635576136346135e0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613676601b8361285b565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061370860218361285b565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209c1bcf57d691a0ee445f5739e03ed2d77c7e8f869e9a0815ade47402b478a34a64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c91906128e9565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129a4565b6104fc565b60405161019991906129ff565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190612a29565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612a44565b61052c565b60405161020191906129ff565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c9190612a97565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612ac4565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190612a29565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a99190612b0d565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb9190612b54565b61082c565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612a97565b6108de565b6040516103269190612a29565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612b90565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b60405161039391906128e9565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129a4565b610ae8565b6040516103d091906129ff565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612bab565b61107b565b6040516104249190612a29565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612b54565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612ac4565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612a97565b6112d4565b005b60606040518060400160405280600981526020017f506f6e676f20496e750000000000000000000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161373f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612c37565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612c37565b60405180910390fd5b633b9aca008161079a9190612c86565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612c37565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612c37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f504f4e474f000000000000000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612c37565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612d2c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612d61565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190612d61565b6040518363ffffffff1660e01b8152600401610db1929190612d8e565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190612d61565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612dfc565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612e72565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc61a3aca00600a81905550686c6b935b8bf8daca00600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612ec5565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612f03565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612c37565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612c37565b60405180910390fd5b633b9aca00816112599190612c86565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612c37565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fa2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390613034565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190612a29565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe906130c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90613158565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906131ea565b60405180910390fd5b6004600e819055506008600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613256565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906132c2565b60405180910390fd5b600d5481611a1b846108de565b611a2591906132e2565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613384565b60405180910390fd5b601e42611a7391906132e2565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576004600e819055506008600f819055505b436003600b54611bde91906132e2565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8191906128e9565b60405180910390fd5b5060008385611d9991906133a4565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd6133d8565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe9190612d61565b81600181518110611f1257611f11613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd9594939291906134f4565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906135c0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190612a29565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a91906128e9565b60405180910390fd5b50600083856124a2919061360f565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b600080828461257091906132e2565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac9061368c565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f69190612c86565b9050828482612805919061360f565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c9061371e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561288a57808201518184015260208101905061286f565b83811115612899576000848401525b50505050565b6000601f19601f8301169050919050565b60006128bb82612850565b6128c5818561285b565b93506128d581856020860161286c565b6128de8161289f565b840191505092915050565b6000602082019050818103600083015261290381846128b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061293b82612910565b9050919050565b61294b81612930565b811461295657600080fd5b50565b60008135905061296881612942565b92915050565b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b600080604083850312156129bb576129ba61290b565b5b60006129c985828601612959565b92505060206129da8582860161298f565b9150509250929050565b60008115159050919050565b6129f9816129e4565b82525050565b6000602082019050612a1460008301846129f0565b92915050565b612a238161296e565b82525050565b6000602082019050612a3e6000830184612a1a565b92915050565b600080600060608486031215612a5d57612a5c61290b565b5b6000612a6b86828701612959565b9350506020612a7c86828701612959565b9250506040612a8d8682870161298f565b9150509250925092565b600060208284031215612aad57612aac61290b565b5b6000612abb84828501612959565b91505092915050565b600060208284031215612ada57612ad961290b565b5b6000612ae88482850161298f565b91505092915050565b600060ff82169050919050565b612b0781612af1565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b31816129e4565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600060208284031215612b6a57612b6961290b565b5b6000612b7884828501612b3f565b91505092915050565b612b8a81612930565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b60008060408385031215612bc257612bc161290b565b5b6000612bd085828601612959565b9250506020612be185828601612959565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c2160208361285b565b9150612c2c82612beb565b602082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c918261296e565b9150612c9c8361296e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cd557612cd4612c57565b5b828202905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d1660178361285b565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b600081519050612d5b81612942565b92915050565b600060208284031215612d7757612d7661290b565b5b6000612d8584828501612d4c565b91505092915050565b6000604082019050612da36000830185612b81565b612db06020830184612b81565b9392505050565b6000819050919050565b6000819050919050565b6000612de6612de1612ddc84612db7565b612dc1565b61296e565b9050919050565b612df681612dcb565b82525050565b600060c082019050612e116000830189612b81565b612e1e6020830188612a1a565b612e2b6040830187612ded565b612e386060830186612ded565b612e456080830185612b81565b612e5260a0830184612a1a565b979650505050505050565b600081519050612e6c81612978565b92915050565b600080600060608486031215612e8b57612e8a61290b565b5b6000612e9986828701612e5d565b9350506020612eaa86828701612e5d565b9250506040612ebb86828701612e5d565b9150509250925092565b6000604082019050612eda6000830185612b81565b612ee76020830184612a1a565b9392505050565b600081519050612efd81612b28565b92915050565b600060208284031215612f1957612f1861290b565b5b6000612f2784828501612eee565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f8c60248361285b565b9150612f9782612f30565b604082019050919050565b60006020820190508181036000830152612fbb81612f7f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061301e60228361285b565b915061302982612fc2565b604082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130b060258361285b565b91506130bb82613054565b604082019050919050565b600060208201905081810360008301526130df816130a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061314260238361285b565b915061314d826130e6565b604082019050919050565b6000602082019050818103600083015261317181613135565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131d460298361285b565b91506131df82613178565b604082019050919050565b60006020820190508181036000830152613203816131c7565b9050919050565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b6000613240601c8361285b565b915061324b8261320a565b602082019050919050565b6000602082019050818103600083015261326f81613233565b9050919050565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b60006132ac60128361285b565b91506132b782613276565b602082019050919050565b600060208201905081810360008301526132db8161329f565b9050919050565b60006132ed8261296e565b91506132f88361296e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332d5761332c612c57565b5b828201905092915050565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b600061336e60178361285b565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b60006133af8261296e565b91506133ba8361296e565b9250828210156133cd576133cc612c57565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61346b81612930565b82525050565b600061347d8383613462565b60208301905092915050565b6000602082019050919050565b60006134a182613436565b6134ab8185613441565b93506134b683613452565b8060005b838110156134e75781516134ce8882613471565b97506134d983613489565b9250506001810190506134ba565b5085935050505092915050565b600060a0820190506135096000830188612a1a565b6135166020830187612ded565b81810360408301526135288186613496565b90506135376060830185612b81565b6135446080830184612a1a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135aa602a8361285b565b91506135b58261354e565b604082019050919050565b600060208201905081810360008301526135d98161359d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061361a8261296e565b91506136258361296e565b925082613635576136346135e0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613676601b8361285b565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061370860218361285b565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209c1bcf57d691a0ee445f5739e03ed2d77c7e8f869e9a0815ade47402b478a34a64736f6c63430008090033

Deployed Bytecode Sourcemap

4151:12912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6237:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7162:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6514:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7363:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13174:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11856:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4841:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6423:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14489:195;;;;;;;;;;;;;:::i;:::-;;7817:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6617:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3103:148;;;;;;;;;;;;;:::i;:::-;;2889:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6328:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6763:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11979:1092;;;;;;;;;;;;;:::i;:::-;;6970:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10987:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11745:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14692:194;;;;;;;;;;;;;:::i;:::-;;13079:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6237:83;6274:13;6307:5;;;;;;;;;;;;;;;;;6300:12;;6237:83;:::o;7162:193::-;7264:4;7286:39;7295:12;:10;:12::i;:::-;7309:7;7318:6;7286:8;:39::i;:::-;7343:4;7336:11;;7162:193;;;;:::o;6514:95::-;6567:7;4645:23;6587:14;;6514:95;:::o;7363:446::-;7495:4;7512:36;7522:6;7530:9;7541:6;7512:9;:36::i;:::-;7559:220;7582:6;7603:12;:10;:12::i;:::-;7630:138;7686:6;7630:138;;;;;;;;;;;;;;;;;:11;:19;7642:6;7630:19;;;;;;;;;;;;;;;:33;7650:12;:10;:12::i;:::-;7630:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7559:8;:220::i;:::-;7797:4;7790:11;;7363:446;;;;;:::o;13174:88::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13249:5:::1;13234:4;:12;13239:6;13234:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13174:88:::0;:::o;11856:113::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11956:5:::1;11947:6;:14;;;;:::i;:::-;11928:16;:33;;;;11856:113:::0;:::o;4841:57::-;;;;:::o;6423:83::-;6464:5;5252:1;6482:16;;6423:83;:::o;14489:195::-;14555:15;;;;;;;;;;;14539:31;;:12;:10;:12::i;:::-;:31;;;14531:40;;;;;;14582:23;14608:24;14626:4;14608:9;:24::i;:::-;14582:50;;14643:33;14660:15;14643:16;:33::i;:::-;14520:164;14489:195::o;7817:101::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7905:5:::1;7887:15;;:23;;;;;;;;;;;;;;;;;;7817:101:::0;:::o;6617:138::-;6683:7;6710:37;6730:7;:16;6738:7;6730:16;;;;;;;;;;;;;;;;6710:19;:37::i;:::-;6703:44;;6617:138;;;:::o;3103:148::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3210:1:::1;3173:40;;3194:6;::::0;::::1;;;;;;;;3173:40;;;;;;;;;;;;3241:1;3224:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3103:148::o:0;2889:79::-;2927:7;2954:6;;;;;;;;;;;2947:13;;2889:79;:::o;6328:87::-;6367:13;6400:7;;;;;;;;;;;;;;;;;6393:14;;6328:87;:::o;6763:199::-;6868:4;6890:42;6900:12;:10;:12::i;:::-;6914:9;6925:6;6890:9;:42::i;:::-;6950:4;6943:11;;6763:199;;;;:::o;11979:1092::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12041:11:::1;;;;;;;;;;;12040:12;12032:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12091:35;12162:42;12091:124;;12244:16;12226:15;;:34;;;;;;;;;;;;;;;;;;12271:58;12288:4;12303:15;;;;;;;;;;;4645:23;12271:8;:58::i;:::-;12374:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12356:70;;;12435:4;12442:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12356:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12340:13;;:126;;;;;;;;;;;;;;;;;;12477:15;;;;;;;;;;;:31;;;12516:21;12561:4;12581:24;12599:4;12581:9;:24::i;:::-;12620:1;12636::::0;12652:7:::1;:5;:7::i;:::-;12674:15;12477:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12725:4;12711:11;;:18;;;;;;;;;;;;;;;;;;12758:4;12740:15;;:22;;;;;;;;;;;;;;;;;;12805:21;12790:12;:36;;;;12856:21;12837:16;:40;;;;12902:4;12888:11;;:18;;;;;;;;;;;;;;;;;;12929:12;12917:9;:24;;;;12959:13;;;;;;;;;;;12952:29;;;13004:15;;;;;;;;;;;13035:17;12952:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12021:1050;11979:1092::o:0;6970:184::-;7087:7;7119:11;:18;7131:5;7119:18;;;;;;;;;;;;;;;:27;7138:7;7119:27;;;;;;;;;;;;;;;;7112:34;;6970:184;;;;:::o;10987:97::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11069:7:::1;11060:6;;:16;;;;;;;;;;;;;;;;;;10987:97:::0;:::o;11745:105::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11837:5:::1;11828:6;:14;;;;:::i;:::-;11813:12;:29;;;;11745:105:::0;:::o;14692:194::-;14758:15;;;;;;;;;;;14742:31;;:12;:10;:12::i;:::-;:31;;;14734:40;;;;;;14785:26;14814:21;14785:50;;14846:32;14859:18;14846:12;:32::i;:::-;14723:163;14692:194::o;13079:87::-;3026:12;:10;:12::i;:::-;3016:22;;:6;;;;;;;;;;:22;;;3008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13154:4:::1;13139;:12;13144:6;13139:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13079:87:::0;:::o;392:98::-;445:7;472:10;465:17;;392:98;:::o;8257:369::-;8401:1;8384:19;;:5;:19;;;;8376:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8482:1;8463:21;;:7;:21;;;;8455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8564:6;8534:11;:18;8546:5;8534:18;;;;;;;;;;;;;;;:27;8553:7;8534:27;;;;;;;;;;;;;;;:36;;;;8602:7;8586:32;;8595:5;8586:32;;;8611:6;8586:32;;;;;;:::i;:::-;;;;;;;;8257:369;;;:::o;8634:2345::-;8774:1;8758:18;;:4;:18;;;;8750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8851:1;8837:16;;:2;:16;;;;8829:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8921:1;8912:6;:10;8904:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9010:1;8998:9;:13;;;;9034:1;9022:9;:13;;;;9058:7;:5;:7::i;:::-;9050:15;;:4;:15;;;;:32;;;;;9075:7;:5;:7::i;:::-;9069:13;;:2;:13;;;;9050:32;:57;;;;;9102:4;9086:21;;:4;:21;;;;9050:57;9046:1881;;;9161:4;:10;9166:4;9161:10;;;;;;;;;;;;;;;;;;;;;;;;;9160:11;:24;;;;;9176:4;:8;9181:2;9176:8;;;;;;;;;;;;;;;;;;;;;;;;;9175:9;9160:24;9152:33;;;;;;9230:13;;;;;;;;;;;9222:21;;:4;:21;;;:72;;;;;9278:15;;;;;;;;;;;9264:30;;:2;:30;;;;9222:72;:116;;;;;9316:18;:22;9335:2;9316:22;;;;;;;;;;;;;;;;;;;;;;;;;9315:23;9222:116;:152;;;;;9359:15;;;;;;;;;;;9222:152;9200:650;;;9488:12;;9478:6;:22;;9470:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9604:15;9589:8;:12;9598:2;9589:12;;;;;;;;;;;;;;;;:30;9581:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9726:16;;9716:6;9700:13;9710:2;9700:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9692:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9823:10;9804:15;:30;;;;:::i;:::-;9789:8;:12;9798:2;9789:12;;;;;;;;;;;;;;;:45;;;;9200:650;9894:13;;;;;;;;;;;9888:19;;:2;:19;;;:72;;;;;9944:15;;;;;;;;;;;9928:32;;:4;:32;;;;9888:72;:118;;;;;9982:18;:24;10001:4;9982:24;;;;;;;;;;;;;;;;;;;;;;;;;9981:25;9888:118;9866:236;;;10053:1;10041:9;:13;;;;10085:1;10073:9;:13;;;;9866:236;10139:12;10134:1;10122:9;;:13;;;;:::i;:::-;:29;;:54;;;;;10163:13;;;;;;;;;;;10155:21;;:4;:21;;;10122:54;10118:141;;;10209:2;10197:9;:14;;;;10242:1;10230:9;:13;;;;10118:141;10275:28;10306:24;10324:4;10306:9;:24::i;:::-;10275:55;;10345:12;10384:19;;10360:20;:43;;10345:58;;10422:7;:18;;;;;10434:6;;;;;;;;;;;10433:7;10422:18;:43;;;;;10452:13;;;;;;;;;;;10444:21;;:4;:21;;;;10422:43;:58;;;;;10469:11;;;;;;;;;;;10422:58;10418:348;;;10519:38;10536:20;10519:16;:38::i;:::-;10576:26;10605:21;10576:50;;10670:1;10649:18;:22;10645:106;;;10696:35;10709:21;10696:12;:35::i;:::-;10645:106;10482:284;10418:348;9109:1668;;9046:1881;;;10886:1;10874:9;:13;;;;10914:1;10902:9;:13;;;;9046:1881;10939:32;10954:4;10960:2;10964:6;10939:14;:32::i;:::-;8634:2345;;;:::o;1654:224::-;1774:7;1807:1;1802;:6;;1810:12;1794:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1834:9;1850:1;1846;:5;;;;:::i;:::-;1834:17;;1869:1;1862:8;;;1654:224;;;;;:::o;11092:483::-;5596:4;5587:6;;:13;;;;;;;;;;;;;;;;;;11170:21:::1;11208:1;11194:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11170:40;;11239:4;11221;11226:1;11221:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11265:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11255:4;11260:1;11255:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11298:62;11315:4;11330:15;;;;;;;;;;;11348:11;11298:8;:62::i;:::-;11371:15;;;;;;;;;;;:66;;;11452:11;11478:1;11494:4;11521;11541:15;11371:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11159:416;5632:5:::0;5623:6;;:14;;;;;;;;;;;;;;;;;;11092:483;:::o;7926:323::-;8021:7;8079;;8068;:18;;8046:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8167:19;8189:10;:8;:10::i;:::-;8167:32;;8217:24;8229:11;8217:7;:11;;:24;;;;:::i;:::-;8210:31;;;7926:323;;;:::o;11583:154::-;11640:15;;;;;;;;;;;:24;;:39;11665:13;11676:1;11665:6;:10;;:13;;;;:::i;:::-;11640:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11690:15;;;;;;;;;;;:24;;:39;11715:13;11726:1;11715:6;:10;;:13;;;;:::i;:::-;11690:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11583:154;:::o;13272:180::-;13400:44;13418:6;13426:9;13437:6;13400:17;:44::i;:::-;13272:180;;;:::o;16631:164::-;16673:7;16694:15;16711;16730:19;:17;:19::i;:::-;16693:56;;;;16767:20;16779:7;16767;:11;;:20;;;;:::i;:::-;16760:27;;;;16631:164;:::o;2140:132::-;2198:7;2225:39;2229:1;2232;2225:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2218:46;;2140:132;;;;:::o;13460:610::-;13607:15;13637:23;13675:12;13702:23;13740:12;13767:13;13794:19;13805:7;13794:10;:19::i;:::-;13592:221;;;;;;;;;;;;13842:28;13862:7;13842;:15;13850:6;13842:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13824:7;:15;13832:6;13824:15;;;;;;;;;;;;;;;:46;;;;13902:39;13925:15;13902:7;:18;13910:9;13902:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13881:7;:18;13889:9;13881:18;;;;;;;;;;;;;;;:60;;;;13952:16;13962:5;13952:9;:16::i;:::-;13979:23;13991:4;13997;13979:11;:23::i;:::-;14035:9;14018:44;;14027:6;14018:44;;;14046:15;14018:44;;;;;;:::i;:::-;;;;;;;;13581:489;;;;;;13460:610;;;:::o;16803:257::-;16854:7;16863;16883:15;16901:7;;16883:25;;16919:15;4645:23;16919:25;;16969:20;4645:23;16969:7;;:11;;:20;;;;:::i;:::-;16959:7;:30;16955:61;;;16999:7;;4645:23;16991:25;;;;;;;;16955:61;17035:7;17044;17027:25;;;;;;16803:257;;;:::o;2280:223::-;2400:7;2432:1;2428;:5;2435:12;2420:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2459:9;2475:1;2471;:5;;;;:::i;:::-;2459:17;;2494:1;2487:8;;;2280:223;;;;;:::o;14894:704::-;14994:7;15016;15038;15060;15082;15104;15140:23;15165:12;15179:13;15196:92;15222:7;15244:9;;15268;;15196:11;:92::i;:::-;15139:149;;;;;;15299:19;15321:10;:8;:10::i;:::-;15299:32;;15343:15;15360:23;15385:12;15401:109;15427:7;15449:4;15468:5;15488:11;15401;:109::i;:::-;15342:168;;;;;;15529:7;15538:15;15555:4;15561:15;15578:4;15584:5;15521:69;;;;;;;;;;;;;;;;;;;14894:704;;;;;;;:::o;1510:136::-;1568:7;1595:43;1599:1;1602;1595:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1588:50;;1510:136;;;;:::o;1323:179::-;1381:7;1401:9;1417:1;1413;:5;;;;:::i;:::-;1401:17;;1442:1;1437;:6;;1429:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1493:1;1486:8;;;1323:179;;;;:::o;14078:211::-;14131:19;14153:10;:8;:10::i;:::-;14131:32;;14174:13;14190:22;14200:11;14190:5;:9;;:22;;;;:::i;:::-;14174:38;;14248:33;14275:5;14248:7;:22;14264:4;14248:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14223:7;:22;14239:4;14223:22;;;;;;;;;;;;;;;:58;;;;14120:169;;14078:211;:::o;14297:147::-;14375:17;14387:4;14375:7;;:11;;:17;;;;:::i;:::-;14365:7;:27;;;;14416:20;14431:4;14416:10;;:14;;:20;;;;:::i;:::-;14403:10;:33;;;;14297:147;;:::o;15606:467::-;15774:7;15796;15818;15853:12;15868:28;15892:3;15868:19;15880:6;15868:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15853:43;;15907:13;15923:29;15948:3;15923:20;15935:7;15923;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15907:45;;15963:23;15989:28;16011:5;15989:17;16001:4;15989:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15963:54;;16036:15;16053:4;16059:5;16028:37;;;;;;;;;15606:467;;;;;;;:::o;16081:534::-;16275:7;16297;16319;16354:15;16372:24;16384:11;16372:7;:11;;:24;;;;:::i;:::-;16354:42;;16407:12;16422:21;16431:11;16422:4;:8;;:21;;;;:::i;:::-;16407:36;;16454:13;16470:22;16480:11;16470:5;:9;;:22;;;;:::i;:::-;16454:38;;16503:23;16529:28;16551:5;16529:17;16541:4;16529:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16503:54;;16576:7;16585:15;16602:4;16568:39;;;;;;;;;;16081:534;;;;;;;;:::o;1886:246::-;1944:7;1973:1;1968;:6;1964:47;;;1998:1;1991:8;;;;1964:47;2021:9;2037:1;2033;:5;;;;:::i;:::-;2021:17;;2066:1;2061;2057;:5;;;;:::i;:::-;:10;2049:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2123:1;2116:8;;;1886:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;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:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:323::-;5888:6;5937:2;5925:9;5916:7;5912:23;5908:32;5905:119;;;5943:79;;:::i;:::-;5905:119;6063:1;6088:50;6130:7;6121:6;6110:9;6106:22;6088:50;:::i;:::-;6078:60;;6034:114;5832:323;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:182::-;7133:34;7129:1;7121:6;7117:14;7110:58;6993:182;:::o;7181:366::-;7323:3;7344:67;7408:2;7403:3;7344:67;:::i;:::-;7337:74;;7420:93;7509:3;7420:93;:::i;:::-;7538:2;7533:3;7529:12;7522:19;;7181:366;;;:::o;7553:419::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7806:9;7800:4;7796:20;7792:1;7781:9;7777:17;7770:47;7834:131;7960:4;7834:131;:::i;:::-;7826:139;;7553:419;;;:::o;7978:180::-;8026:77;8023:1;8016:88;8123:4;8120:1;8113:15;8147:4;8144:1;8137:15;8164:348;8204:7;8227:20;8245:1;8227:20;:::i;:::-;8222:25;;8261:20;8279:1;8261:20;:::i;:::-;8256:25;;8449:1;8381:66;8377:74;8374:1;8371:81;8366:1;8359:9;8352:17;8348:105;8345:131;;;8456:18;;:::i;:::-;8345:131;8504:1;8501;8497:9;8486:20;;8164:348;;;;:::o;8518:173::-;8658:25;8654:1;8646:6;8642:14;8635:49;8518:173;:::o;8697:366::-;8839:3;8860:67;8924:2;8919:3;8860:67;:::i;:::-;8853:74;;8936:93;9025:3;8936:93;:::i;:::-;9054:2;9049:3;9045:12;9038:19;;8697:366;;;:::o;9069:419::-;9235:4;9273:2;9262:9;9258:18;9250:26;;9322:9;9316:4;9312:20;9308:1;9297:9;9293:17;9286:47;9350:131;9476:4;9350:131;:::i;:::-;9342:139;;9069:419;;;:::o;9494:143::-;9551:5;9582:6;9576:13;9567:22;;9598:33;9625:5;9598:33;:::i;:::-;9494:143;;;;:::o;9643:351::-;9713:6;9762:2;9750:9;9741:7;9737:23;9733:32;9730:119;;;9768:79;;:::i;:::-;9730:119;9888:1;9913:64;9969:7;9960:6;9949:9;9945:22;9913:64;:::i;:::-;9903:74;;9859:128;9643:351;;;;:::o;10000:332::-;10121:4;10159:2;10148:9;10144:18;10136:26;;10172:71;10240:1;10229:9;10225:17;10216:6;10172:71;:::i;:::-;10253:72;10321:2;10310:9;10306:18;10297:6;10253:72;:::i;:::-;10000:332;;;;;:::o;10338:85::-;10383:7;10412:5;10401:16;;10338:85;;;:::o;10429:60::-;10457:3;10478:5;10471:12;;10429:60;;;:::o;10495:158::-;10553:9;10586:61;10604:42;10613:32;10639:5;10613:32;:::i;:::-;10604:42;:::i;:::-;10586:61;:::i;:::-;10573:74;;10495:158;;;:::o;10659:147::-;10754:45;10793:5;10754:45;:::i;:::-;10749:3;10742:58;10659:147;;:::o;10812:807::-;11061:4;11099:3;11088:9;11084:19;11076:27;;11113:71;11181:1;11170:9;11166:17;11157:6;11113:71;:::i;:::-;11194:72;11262:2;11251:9;11247:18;11238:6;11194:72;:::i;:::-;11276:80;11352:2;11341:9;11337:18;11328:6;11276:80;:::i;:::-;11366;11442:2;11431:9;11427:18;11418:6;11366:80;:::i;:::-;11456:73;11524:3;11513:9;11509:19;11500:6;11456:73;:::i;:::-;11539;11607:3;11596:9;11592:19;11583:6;11539:73;:::i;:::-;10812:807;;;;;;;;;:::o;11625:143::-;11682:5;11713:6;11707:13;11698:22;;11729:33;11756:5;11729:33;:::i;:::-;11625:143;;;;:::o;11774:663::-;11862:6;11870;11878;11927:2;11915:9;11906:7;11902:23;11898:32;11895:119;;;11933:79;;:::i;:::-;11895:119;12053:1;12078:64;12134:7;12125:6;12114:9;12110:22;12078:64;:::i;:::-;12068:74;;12024:128;12191:2;12217:64;12273:7;12264:6;12253:9;12249:22;12217:64;:::i;:::-;12207:74;;12162:129;12330:2;12356:64;12412:7;12403:6;12392:9;12388:22;12356:64;:::i;:::-;12346:74;;12301:129;11774:663;;;;;:::o;12443:332::-;12564:4;12602:2;12591:9;12587:18;12579:26;;12615:71;12683:1;12672:9;12668:17;12659:6;12615:71;:::i;:::-;12696:72;12764:2;12753:9;12749:18;12740:6;12696:72;:::i;:::-;12443:332;;;;;:::o;12781:137::-;12835:5;12866:6;12860:13;12851:22;;12882:30;12906:5;12882:30;:::i;:::-;12781:137;;;;:::o;12924:345::-;12991:6;13040:2;13028:9;13019:7;13015:23;13011:32;13008:119;;;13046:79;;:::i;:::-;13008:119;13166:1;13191:61;13244:7;13235:6;13224:9;13220:22;13191:61;:::i;:::-;13181:71;;13137:125;12924:345;;;;:::o;13275:223::-;13415:34;13411:1;13403:6;13399:14;13392:58;13484:6;13479:2;13471:6;13467:15;13460:31;13275:223;:::o;13504:366::-;13646:3;13667:67;13731:2;13726:3;13667:67;:::i;:::-;13660:74;;13743:93;13832:3;13743:93;:::i;:::-;13861:2;13856:3;13852:12;13845:19;;13504:366;;;:::o;13876:419::-;14042:4;14080:2;14069:9;14065:18;14057:26;;14129:9;14123:4;14119:20;14115:1;14104:9;14100:17;14093:47;14157:131;14283:4;14157:131;:::i;:::-;14149:139;;13876:419;;;:::o;14301:221::-;14441:34;14437:1;14429:6;14425:14;14418:58;14510:4;14505:2;14497:6;14493:15;14486:29;14301:221;:::o;14528:366::-;14670:3;14691:67;14755:2;14750:3;14691:67;:::i;:::-;14684:74;;14767:93;14856:3;14767:93;:::i;:::-;14885:2;14880:3;14876:12;14869:19;;14528:366;;;:::o;14900:419::-;15066:4;15104:2;15093:9;15089:18;15081:26;;15153:9;15147:4;15143:20;15139:1;15128:9;15124:17;15117:47;15181:131;15307:4;15181:131;:::i;:::-;15173:139;;14900:419;;;:::o;15325:224::-;15465:34;15461:1;15453:6;15449:14;15442:58;15534:7;15529:2;15521:6;15517:15;15510:32;15325:224;:::o;15555:366::-;15697:3;15718:67;15782:2;15777:3;15718:67;:::i;:::-;15711:74;;15794:93;15883:3;15794:93;:::i;:::-;15912:2;15907:3;15903:12;15896:19;;15555:366;;;:::o;15927:419::-;16093:4;16131:2;16120:9;16116:18;16108:26;;16180:9;16174:4;16170:20;16166:1;16155:9;16151:17;16144:47;16208:131;16334:4;16208:131;:::i;:::-;16200:139;;15927:419;;;:::o;16352:222::-;16492:34;16488:1;16480:6;16476:14;16469:58;16561:5;16556:2;16548:6;16544:15;16537:30;16352:222;:::o;16580:366::-;16722:3;16743:67;16807:2;16802:3;16743:67;:::i;:::-;16736:74;;16819:93;16908:3;16819:93;:::i;:::-;16937:2;16932:3;16928:12;16921:19;;16580:366;;;:::o;16952:419::-;17118:4;17156:2;17145:9;17141:18;17133:26;;17205:9;17199:4;17195:20;17191:1;17180:9;17176:17;17169:47;17233:131;17359:4;17233:131;:::i;:::-;17225:139;;16952:419;;;:::o;17377:228::-;17517:34;17513:1;17505:6;17501:14;17494:58;17586:11;17581:2;17573:6;17569:15;17562:36;17377:228;:::o;17611:366::-;17753:3;17774:67;17838:2;17833:3;17774:67;:::i;:::-;17767:74;;17850:93;17939:3;17850:93;:::i;:::-;17968:2;17963:3;17959:12;17952:19;;17611:366;;;:::o;17983:419::-;18149:4;18187:2;18176:9;18172:18;18164:26;;18236:9;18230:4;18226:20;18222:1;18211:9;18207:17;18200:47;18264:131;18390:4;18264:131;:::i;:::-;18256:139;;17983:419;;;:::o;18408:178::-;18548:30;18544:1;18536:6;18532:14;18525:54;18408:178;:::o;18592:366::-;18734:3;18755:67;18819:2;18814:3;18755:67;:::i;:::-;18748:74;;18831:93;18920:3;18831:93;:::i;:::-;18949:2;18944:3;18940:12;18933:19;;18592:366;;;:::o;18964:419::-;19130:4;19168:2;19157:9;19153:18;19145:26;;19217:9;19211:4;19207:20;19203:1;19192:9;19188:17;19181:47;19245:131;19371:4;19245:131;:::i;:::-;19237:139;;18964:419;;;:::o;19389:168::-;19529:20;19525:1;19517:6;19513:14;19506:44;19389:168;:::o;19563:366::-;19705:3;19726:67;19790:2;19785:3;19726:67;:::i;:::-;19719:74;;19802:93;19891:3;19802:93;:::i;:::-;19920:2;19915:3;19911:12;19904:19;;19563:366;;;:::o;19935:419::-;20101:4;20139:2;20128:9;20124:18;20116:26;;20188:9;20182:4;20178:20;20174:1;20163:9;20159:17;20152:47;20216:131;20342:4;20216:131;:::i;:::-;20208:139;;19935:419;;;:::o;20360:305::-;20400:3;20419:20;20437:1;20419:20;:::i;:::-;20414:25;;20453:20;20471:1;20453:20;:::i;:::-;20448:25;;20607:1;20539:66;20535:74;20532:1;20529:81;20526:107;;;20613:18;;:::i;:::-;20526:107;20657:1;20654;20650:9;20643:16;;20360:305;;;;:::o;20671:173::-;20811:25;20807:1;20799:6;20795:14;20788:49;20671:173;:::o;20850:366::-;20992:3;21013:67;21077:2;21072:3;21013:67;:::i;:::-;21006:74;;21089:93;21178:3;21089:93;:::i;:::-;21207:2;21202:3;21198:12;21191:19;;20850:366;;;:::o;21222:419::-;21388:4;21426:2;21415:9;21411:18;21403:26;;21475:9;21469:4;21465:20;21461:1;21450:9;21446:17;21439:47;21503:131;21629:4;21503:131;:::i;:::-;21495:139;;21222:419;;;:::o;21647:191::-;21687:4;21707:20;21725:1;21707:20;:::i;:::-;21702:25;;21741:20;21759:1;21741:20;:::i;:::-;21736:25;;21780:1;21777;21774:8;21771:34;;;21785:18;;:::i;:::-;21771:34;21830:1;21827;21823:9;21815:17;;21647:191;;;;:::o;21844:180::-;21892:77;21889:1;21882:88;21989:4;21986:1;21979:15;22013:4;22010:1;22003:15;22030:180;22078:77;22075:1;22068:88;22175:4;22172:1;22165:15;22199:4;22196:1;22189:15;22216:114;22283:6;22317:5;22311:12;22301:22;;22216:114;;;:::o;22336:184::-;22435:11;22469:6;22464:3;22457:19;22509:4;22504:3;22500:14;22485:29;;22336:184;;;;:::o;22526:132::-;22593:4;22616:3;22608:11;;22646:4;22641:3;22637:14;22629:22;;22526:132;;;:::o;22664:108::-;22741:24;22759:5;22741:24;:::i;:::-;22736:3;22729:37;22664:108;;:::o;22778:179::-;22847:10;22868:46;22910:3;22902:6;22868:46;:::i;:::-;22946:4;22941:3;22937:14;22923:28;;22778:179;;;;:::o;22963:113::-;23033:4;23065;23060:3;23056:14;23048:22;;22963:113;;;:::o;23112:732::-;23231:3;23260:54;23308:5;23260:54;:::i;:::-;23330:86;23409:6;23404:3;23330:86;:::i;:::-;23323:93;;23440:56;23490:5;23440:56;:::i;:::-;23519:7;23550:1;23535:284;23560:6;23557:1;23554:13;23535:284;;;23636:6;23630:13;23663:63;23722:3;23707:13;23663:63;:::i;:::-;23656:70;;23749:60;23802:6;23749:60;:::i;:::-;23739:70;;23595:224;23582:1;23579;23575:9;23570:14;;23535:284;;;23539:14;23835:3;23828:10;;23236:608;;;23112:732;;;;:::o;23850:831::-;24113:4;24151:3;24140:9;24136:19;24128:27;;24165:71;24233:1;24222:9;24218:17;24209:6;24165:71;:::i;:::-;24246:80;24322:2;24311:9;24307:18;24298:6;24246:80;:::i;:::-;24373:9;24367:4;24363:20;24358:2;24347:9;24343:18;24336:48;24401:108;24504:4;24495:6;24401:108;:::i;:::-;24393:116;;24519:72;24587:2;24576:9;24572:18;24563:6;24519:72;:::i;:::-;24601:73;24669:3;24658:9;24654:19;24645:6;24601:73;:::i;:::-;23850:831;;;;;;;;:::o;24687:229::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:12;24891:2;24883:6;24879:15;24872:37;24687:229;:::o;24922:366::-;25064:3;25085:67;25149:2;25144:3;25085:67;:::i;:::-;25078:74;;25161:93;25250:3;25161:93;:::i;:::-;25279:2;25274:3;25270:12;25263:19;;24922:366;;;:::o;25294:419::-;25460:4;25498:2;25487:9;25483:18;25475:26;;25547:9;25541:4;25537:20;25533:1;25522:9;25518:17;25511:47;25575:131;25701:4;25575:131;:::i;:::-;25567:139;;25294:419;;;:::o;25719:180::-;25767:77;25764:1;25757:88;25864:4;25861:1;25854:15;25888:4;25885:1;25878:15;25905:185;25945:1;25962:20;25980:1;25962:20;:::i;:::-;25957:25;;25996:20;26014:1;25996:20;:::i;:::-;25991:25;;26035:1;26025:35;;26040:18;;:::i;:::-;26025:35;26082:1;26079;26075:9;26070:14;;25905:185;;;;:::o;26096:177::-;26236:29;26232:1;26224:6;26220:14;26213:53;26096:177;:::o;26279:366::-;26421:3;26442:67;26506:2;26501:3;26442:67;:::i;:::-;26435:74;;26518:93;26607:3;26518:93;:::i;:::-;26636:2;26631:3;26627:12;26620:19;;26279:366;;;:::o;26651:419::-;26817:4;26855:2;26844:9;26840:18;26832:26;;26904:9;26898:4;26894:20;26890:1;26879:9;26875:17;26868:47;26932:131;27058:4;26932:131;:::i;:::-;26924:139;;26651:419;;;:::o;27076:220::-;27216:34;27212:1;27204:6;27200:14;27193:58;27285:3;27280:2;27272:6;27268:15;27261:28;27076:220;:::o;27302:366::-;27444:3;27465:67;27529:2;27524:3;27465:67;:::i;:::-;27458:74;;27541:93;27630:3;27541:93;:::i;:::-;27659:2;27654:3;27650:12;27643:19;;27302:366;;;:::o;27674:419::-;27840:4;27878:2;27867:9;27863:18;27855:26;;27927:9;27921:4;27917:20;27913:1;27902:9;27898:17;27891:47;27955:131;28081:4;27955:131;:::i;:::-;27947:139;;27674:419;;;:::o

Swarm Source

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