ETH Price: $3,112.45 (-1.80%)

Token

Gojira Inu (Gojira)
 

Overview

Max Total Supply

100,000,000,000,000 Gojira

Holders

454

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
304,968,479,584.463884649 Gojira

Value
$0.00
0xae857493E6296beEC24A386Ee8cCC914010a16D2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GojiraInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-21
*/

/*
                                                                                                                  
  ________  ________        ___  ___  ________  ________          ___  ________   ___  ___     
 |\   ____\|\   __  \      |\  \|\  \|\   __  \|\   __  \        |\  \|\   ___  \|\  \|\  \    
 \ \  \___|\ \  \|\  \     \ \  \ \  \ \  \|\  \ \  \|\  \       \ \  \ \  \\ \  \ \  \\\  \   
  \ \  \  __\ \  \\\  \  __ \ \  \ \  \ \   _  _\ \   __  \       \ \  \ \  \\ \  \ \  \\\  \  
   \ \  \|\  \ \  \\\  \|\  \\_\  \ \  \ \  \\  \\ \  \ \  \       \ \  \ \  \\ \  \ \  \\\  \ 
    \ \_______\ \_______\ \________\ \__\ \__\\ _\\ \__\ \__\       \ \__\ \__\\ \__\ \_______\
     \|_______|\|_______|\|________|\|__|\|__|\|__|\|__|\|__|        \|__|\|__| \|__|\|_______|

                                                                                            
- Gojira is here and no-one can stop him from lighting the sky with green!

- Website: https://www.gojirainu.com
- Telegram: https://t.me/GojiraInu
- Twitter: https://twitter.com/GojiraInu

*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.4;

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 GojiraInu 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 = "Gojira Inu";
    string private constant _symbol = "Gojira";
    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(0x2c01f760Eb5900d06af7c85A8dBF1F20D4547135);
        _feeAddrWallet2 = payable(0x2c01f760Eb5900d06af7c85A8dBF1F20D4547135);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(
            address(0x0aD9d3D6abA940C56CAAe2A7f51599F3da87700B),
            _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 = 3;
        _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 = 3;
                _feeAddr2 = 8;
            }

            if (openBlock + 4 >= 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 = 1000000000000 * 10**9;
        _maxWalletAmount = 2000000000000 * 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"}]

608060405269152d02c7e14af68000006000196200001e919062000558565b6000196200002d919062000513565b60085569152d02c7e14af6800000600a5568056bc75e2d63100000600c5569152d02c7e14af6800000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff021916908315150217905550348015620000b757600080fd5b506000620000ca620004b460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350732c01f760eb5900d06af7c85a8dbf1f20d4547135601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732c01f760eb5900d06af7c85a8dbf1f20d4547135601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546002600062000229620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200027d620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16730ad9d3d6aba940c56caae2a7f51599f3da87700b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004a69190620004f6565b60405180910390a3620005ee565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004f0816200054e565b82525050565b60006020820190506200050d6000830184620004e5565b92915050565b600062000520826200054e565b91506200052d836200054e565b92508282101562000543576200054262000590565b5b828203905092915050565b6000819050919050565b600062000565826200054e565b915062000572836200054e565b925082620005855762000584620005bf565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61377880620005fe6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c9190612e8e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129bb565b6104fc565b6040516101999190612e73565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190613050565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612968565b61052c565b6040516102019190612e73565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c91906128ce565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612a55565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190613050565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a991906130c5565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb91906129fb565b61082c565b005b3480156102fe57600080fd5b50610319600480360381019061031491906128ce565b6108de565b6040516103269190613050565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612da5565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b6040516103939190612e8e565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129bb565b610ae8565b6040516103d09190612e73565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612928565b61107b565b6040516104249190613050565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f91906129fb565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612a55565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906128ce565b6112d4565b005b60606040518060400160405280600a81526020017f476f6a69726120496e7500000000000000000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161371b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612f50565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612f50565b60405180910390fd5b633b9aca008161079a91906131bc565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612f50565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612f50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f476f6a6972610000000000000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612f50565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612ff0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906128fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9491906128fb565b6040518363ffffffff1660e01b8152600401610db1929190612dc0565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906128fb565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612e12565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612a82565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc5dea00000600a81905550686c6b935b8bbd400000600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612de9565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612a28565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612f50565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612f50565b60405180910390fd5b633b9aca008161125991906131bc565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612f50565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fd0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612ef0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190613050565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90612fb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90612eb0565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190612f70565b60405180910390fd5b6003600e819055506008600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613010565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613030565b60405180910390fd5b600d5481611a1b846108de565b611a259190613135565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90612f90565b60405180910390fd5b601e42611a739190613135565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576003600e819055506008600f819055505b436004600b54611bde9190613135565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819190612e8e565b60405180910390fd5b5060008385611d999190613216565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd613371565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe91906128fb565b81600181518110611f1257611f11613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd95949392919061306b565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90612ed0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190613050565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a9190612e8e565b60405180910390fd5b50600083856124a2919061318b565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b60008082846125709190613135565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90612f10565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f691906131bc565b9050828482612805919061318b565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c90612f30565b60405180910390fd5b809150505b92915050565b60008135905061285f816136d5565b92915050565b600081519050612874816136d5565b92915050565b600081359050612889816136ec565b92915050565b60008151905061289e816136ec565b92915050565b6000813590506128b381613703565b92915050565b6000815190506128c881613703565b92915050565b6000602082840312156128e4576128e36133a0565b5b60006128f284828501612850565b91505092915050565b600060208284031215612911576129106133a0565b5b600061291f84828501612865565b91505092915050565b6000806040838503121561293f5761293e6133a0565b5b600061294d85828601612850565b925050602061295e85828601612850565b9150509250929050565b600080600060608486031215612981576129806133a0565b5b600061298f86828701612850565b93505060206129a086828701612850565b92505060406129b1868287016128a4565b9150509250925092565b600080604083850312156129d2576129d16133a0565b5b60006129e085828601612850565b92505060206129f1858286016128a4565b9150509250929050565b600060208284031215612a1157612a106133a0565b5b6000612a1f8482850161287a565b91505092915050565b600060208284031215612a3e57612a3d6133a0565b5b6000612a4c8482850161288f565b91505092915050565b600060208284031215612a6b57612a6a6133a0565b5b6000612a79848285016128a4565b91505092915050565b600080600060608486031215612a9b57612a9a6133a0565b5b6000612aa9868287016128b9565b9350506020612aba868287016128b9565b9250506040612acb868287016128b9565b9150509250925092565b6000612ae18383612aed565b60208301905092915050565b612af68161324a565b82525050565b612b058161324a565b82525050565b6000612b16826130f0565b612b208185613113565b9350612b2b836130e0565b8060005b83811015612b5c578151612b438882612ad5565b9750612b4e83613106565b925050600181019050612b2f565b5085935050505092915050565b612b728161325c565b82525050565b612b818161329f565b82525050565b6000612b92826130fb565b612b9c8185613124565b9350612bac8185602086016132b1565b612bb5816133a5565b840191505092915050565b6000612bcd602383613124565b9150612bd8826133b6565b604082019050919050565b6000612bf0602a83613124565b9150612bfb82613405565b604082019050919050565b6000612c13602283613124565b9150612c1e82613454565b604082019050919050565b6000612c36601b83613124565b9150612c41826134a3565b602082019050919050565b6000612c59602183613124565b9150612c64826134cc565b604082019050919050565b6000612c7c602083613124565b9150612c878261351b565b602082019050919050565b6000612c9f602983613124565b9150612caa82613544565b604082019050919050565b6000612cc2601783613124565b9150612ccd82613593565b602082019050919050565b6000612ce5602583613124565b9150612cf0826135bc565b604082019050919050565b6000612d08602483613124565b9150612d138261360b565b604082019050919050565b6000612d2b601783613124565b9150612d368261365a565b602082019050919050565b6000612d4e601c83613124565b9150612d5982613683565b602082019050919050565b6000612d71601283613124565b9150612d7c826136ac565b602082019050919050565b612d9081613288565b82525050565b612d9f81613292565b82525050565b6000602082019050612dba6000830184612afc565b92915050565b6000604082019050612dd56000830185612afc565b612de26020830184612afc565b9392505050565b6000604082019050612dfe6000830185612afc565b612e0b6020830184612d87565b9392505050565b600060c082019050612e276000830189612afc565b612e346020830188612d87565b612e416040830187612b78565b612e4e6060830186612b78565b612e5b6080830185612afc565b612e6860a0830184612d87565b979650505050505050565b6000602082019050612e886000830184612b69565b92915050565b60006020820190508181036000830152612ea88184612b87565b905092915050565b60006020820190508181036000830152612ec981612bc0565b9050919050565b60006020820190508181036000830152612ee981612be3565b9050919050565b60006020820190508181036000830152612f0981612c06565b9050919050565b60006020820190508181036000830152612f2981612c29565b9050919050565b60006020820190508181036000830152612f4981612c4c565b9050919050565b60006020820190508181036000830152612f6981612c6f565b9050919050565b60006020820190508181036000830152612f8981612c92565b9050919050565b60006020820190508181036000830152612fa981612cb5565b9050919050565b60006020820190508181036000830152612fc981612cd8565b9050919050565b60006020820190508181036000830152612fe981612cfb565b9050919050565b6000602082019050818103600083015261300981612d1e565b9050919050565b6000602082019050818103600083015261302981612d41565b9050919050565b6000602082019050818103600083015261304981612d64565b9050919050565b60006020820190506130656000830184612d87565b92915050565b600060a0820190506130806000830188612d87565b61308d6020830187612b78565b818103604083015261309f8186612b0b565b90506130ae6060830185612afc565b6130bb6080830184612d87565b9695505050505050565b60006020820190506130da6000830184612d96565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061314082613288565b915061314b83613288565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131805761317f6132e4565b5b828201905092915050565b600061319682613288565b91506131a183613288565b9250826131b1576131b0613313565b5b828204905092915050565b60006131c782613288565b91506131d283613288565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320b5761320a6132e4565b5b828202905092915050565b600061322182613288565b915061322c83613288565b92508282101561323f5761323e6132e4565b5b828203905092915050565b600061325582613268565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132aa82613288565b9050919050565b60005b838110156132cf5780820151818401526020810190506132b4565b838111156132de576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b6136de8161324a565b81146136e957600080fd5b50565b6136f58161325c565b811461370057600080fd5b50565b61370c81613288565b811461371757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205a02147847f88fc46fe632db20532cba6f7c0e320b1d18488255b8f0e6782e9664736f6c63430008070033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c9190612e8e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129bb565b6104fc565b6040516101999190612e73565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190613050565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612968565b61052c565b6040516102019190612e73565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c91906128ce565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612a55565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190613050565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a991906130c5565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb91906129fb565b61082c565b005b3480156102fe57600080fd5b50610319600480360381019061031491906128ce565b6108de565b6040516103269190613050565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612da5565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b6040516103939190612e8e565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129bb565b610ae8565b6040516103d09190612e73565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612928565b61107b565b6040516104249190613050565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f91906129fb565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612a55565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906128ce565b6112d4565b005b60606040518060400160405280600a81526020017f476f6a69726120496e7500000000000000000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161371b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612f50565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612f50565b60405180910390fd5b633b9aca008161079a91906131bc565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612f50565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612f50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f476f6a6972610000000000000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612f50565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612ff0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906128fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9491906128fb565b6040518363ffffffff1660e01b8152600401610db1929190612dc0565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906128fb565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612e12565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612a82565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc5dea00000600a81905550686c6b935b8bbd400000600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612de9565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612a28565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612f50565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612f50565b60405180910390fd5b633b9aca008161125991906131bc565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612f50565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fd0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612ef0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190613050565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90612fb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90612eb0565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190612f70565b60405180910390fd5b6003600e819055506008600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613010565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613030565b60405180910390fd5b600d5481611a1b846108de565b611a259190613135565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90612f90565b60405180910390fd5b601e42611a739190613135565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576003600e819055506008600f819055505b436004600b54611bde9190613135565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819190612e8e565b60405180910390fd5b5060008385611d999190613216565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd613371565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe91906128fb565b81600181518110611f1257611f11613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd95949392919061306b565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90612ed0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190613050565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a9190612e8e565b60405180910390fd5b50600083856124a2919061318b565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b60008082846125709190613135565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90612f10565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f691906131bc565b9050828482612805919061318b565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c90612f30565b60405180910390fd5b809150505b92915050565b60008135905061285f816136d5565b92915050565b600081519050612874816136d5565b92915050565b600081359050612889816136ec565b92915050565b60008151905061289e816136ec565b92915050565b6000813590506128b381613703565b92915050565b6000815190506128c881613703565b92915050565b6000602082840312156128e4576128e36133a0565b5b60006128f284828501612850565b91505092915050565b600060208284031215612911576129106133a0565b5b600061291f84828501612865565b91505092915050565b6000806040838503121561293f5761293e6133a0565b5b600061294d85828601612850565b925050602061295e85828601612850565b9150509250929050565b600080600060608486031215612981576129806133a0565b5b600061298f86828701612850565b93505060206129a086828701612850565b92505060406129b1868287016128a4565b9150509250925092565b600080604083850312156129d2576129d16133a0565b5b60006129e085828601612850565b92505060206129f1858286016128a4565b9150509250929050565b600060208284031215612a1157612a106133a0565b5b6000612a1f8482850161287a565b91505092915050565b600060208284031215612a3e57612a3d6133a0565b5b6000612a4c8482850161288f565b91505092915050565b600060208284031215612a6b57612a6a6133a0565b5b6000612a79848285016128a4565b91505092915050565b600080600060608486031215612a9b57612a9a6133a0565b5b6000612aa9868287016128b9565b9350506020612aba868287016128b9565b9250506040612acb868287016128b9565b9150509250925092565b6000612ae18383612aed565b60208301905092915050565b612af68161324a565b82525050565b612b058161324a565b82525050565b6000612b16826130f0565b612b208185613113565b9350612b2b836130e0565b8060005b83811015612b5c578151612b438882612ad5565b9750612b4e83613106565b925050600181019050612b2f565b5085935050505092915050565b612b728161325c565b82525050565b612b818161329f565b82525050565b6000612b92826130fb565b612b9c8185613124565b9350612bac8185602086016132b1565b612bb5816133a5565b840191505092915050565b6000612bcd602383613124565b9150612bd8826133b6565b604082019050919050565b6000612bf0602a83613124565b9150612bfb82613405565b604082019050919050565b6000612c13602283613124565b9150612c1e82613454565b604082019050919050565b6000612c36601b83613124565b9150612c41826134a3565b602082019050919050565b6000612c59602183613124565b9150612c64826134cc565b604082019050919050565b6000612c7c602083613124565b9150612c878261351b565b602082019050919050565b6000612c9f602983613124565b9150612caa82613544565b604082019050919050565b6000612cc2601783613124565b9150612ccd82613593565b602082019050919050565b6000612ce5602583613124565b9150612cf0826135bc565b604082019050919050565b6000612d08602483613124565b9150612d138261360b565b604082019050919050565b6000612d2b601783613124565b9150612d368261365a565b602082019050919050565b6000612d4e601c83613124565b9150612d5982613683565b602082019050919050565b6000612d71601283613124565b9150612d7c826136ac565b602082019050919050565b612d9081613288565b82525050565b612d9f81613292565b82525050565b6000602082019050612dba6000830184612afc565b92915050565b6000604082019050612dd56000830185612afc565b612de26020830184612afc565b9392505050565b6000604082019050612dfe6000830185612afc565b612e0b6020830184612d87565b9392505050565b600060c082019050612e276000830189612afc565b612e346020830188612d87565b612e416040830187612b78565b612e4e6060830186612b78565b612e5b6080830185612afc565b612e6860a0830184612d87565b979650505050505050565b6000602082019050612e886000830184612b69565b92915050565b60006020820190508181036000830152612ea88184612b87565b905092915050565b60006020820190508181036000830152612ec981612bc0565b9050919050565b60006020820190508181036000830152612ee981612be3565b9050919050565b60006020820190508181036000830152612f0981612c06565b9050919050565b60006020820190508181036000830152612f2981612c29565b9050919050565b60006020820190508181036000830152612f4981612c4c565b9050919050565b60006020820190508181036000830152612f6981612c6f565b9050919050565b60006020820190508181036000830152612f8981612c92565b9050919050565b60006020820190508181036000830152612fa981612cb5565b9050919050565b60006020820190508181036000830152612fc981612cd8565b9050919050565b60006020820190508181036000830152612fe981612cfb565b9050919050565b6000602082019050818103600083015261300981612d1e565b9050919050565b6000602082019050818103600083015261302981612d41565b9050919050565b6000602082019050818103600083015261304981612d64565b9050919050565b60006020820190506130656000830184612d87565b92915050565b600060a0820190506130806000830188612d87565b61308d6020830187612b78565b818103604083015261309f8186612b0b565b90506130ae6060830185612afc565b6130bb6080830184612d87565b9695505050505050565b60006020820190506130da6000830184612d96565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061314082613288565b915061314b83613288565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131805761317f6132e4565b5b828201905092915050565b600061319682613288565b91506131a183613288565b9250826131b1576131b0613313565b5b828204905092915050565b60006131c782613288565b91506131d283613288565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320b5761320a6132e4565b5b828202905092915050565b600061322182613288565b915061322c83613288565b92508282101561323f5761323e6132e4565b5b828203905092915050565b600061325582613268565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132aa82613288565b9050919050565b60005b838110156132cf5780820151818401526020810190506132b4565b838111156132de576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b6136de8161324a565b81146136e957600080fd5b50565b6136f58161325c565b811461370057600080fd5b50565b61370c81613288565b811461371757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205a02147847f88fc46fe632db20532cba6f7c0e320b1d18488255b8f0e6782e9664736f6c63430008070033

Deployed Bytecode Sourcemap

4957:12918:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7049:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7974:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7326:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8175:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13986:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12668:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5651:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7235:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15301:195;;;;;;;;;;;;;:::i;:::-;;8629:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7429:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3909:148;;;;;;;;;;;;;:::i;:::-;;3695:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7140:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7575:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12791:1092;;;;;;;;;;;;;:::i;:::-;;7782:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11799:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12557:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15504:194;;;;;;;;;;;;;:::i;:::-;;13891:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7049:83;7086:13;7119:5;;;;;;;;;;;;;;;;;7112:12;;7049:83;:::o;7974:193::-;8076:4;8098:39;8107:12;:10;:12::i;:::-;8121:7;8130:6;8098:8;:39::i;:::-;8155:4;8148:11;;7974:193;;;;:::o;7326:95::-;7379:7;5455:23;7399:14;;7326:95;:::o;8175:446::-;8307:4;8324:36;8334:6;8342:9;8353:6;8324:9;:36::i;:::-;8371:220;8394:6;8415:12;:10;:12::i;:::-;8442:138;8498:6;8442:138;;;;;;;;;;;;;;;;;:11;:19;8454:6;8442:19;;;;;;;;;;;;;;;:33;8462:12;:10;:12::i;:::-;8442:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8371:8;:220::i;:::-;8609:4;8602:11;;8175:446;;;;;:::o;13986:88::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14061:5:::1;14046:4;:12;14051:6;14046:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13986:88:::0;:::o;12668:113::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12768:5:::1;12759:6;:14;;;;:::i;:::-;12740:16;:33;;;;12668:113:::0;:::o;5651:57::-;;;;:::o;7235:83::-;7276:5;6064:1;7294:16;;7235:83;:::o;15301:195::-;15367:15;;;;;;;;;;;15351:31;;:12;:10;:12::i;:::-;:31;;;15343:40;;;;;;15394:23;15420:24;15438:4;15420:9;:24::i;:::-;15394:50;;15455:33;15472:15;15455:16;:33::i;:::-;15332:164;15301:195::o;8629:101::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8717:5:::1;8699:15;;:23;;;;;;;;;;;;;;;;;;8629:101:::0;:::o;7429:138::-;7495:7;7522:37;7542:7;:16;7550:7;7542:16;;;;;;;;;;;;;;;;7522:19;:37::i;:::-;7515:44;;7429:138;;;:::o;3909:148::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4016:1:::1;3979:40;;4000:6;::::0;::::1;;;;;;;;3979:40;;;;;;;;;;;;4047:1;4030:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3909:148::o:0;3695:79::-;3733:7;3760:6;;;;;;;;;;;3753:13;;3695:79;:::o;7140:87::-;7179:13;7212:7;;;;;;;;;;;;;;;;;7205:14;;7140:87;:::o;7575:199::-;7680:4;7702:42;7712:12;:10;:12::i;:::-;7726:9;7737:6;7702:9;:42::i;:::-;7762:4;7755:11;;7575:199;;;;:::o;12791:1092::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12853:11:::1;;;;;;;;;;;12852:12;12844:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12903:35;12974:42;12903:124;;13056:16;13038:15;;:34;;;;;;;;;;;;;;;;;;13083:58;13100:4;13115:15;;;;;;;;;;;5455:23;13083:8;:58::i;:::-;13186:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13168:70;;;13247:4;13254:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13168:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13152:13;;:126;;;;;;;;;;;;;;;;;;13289:15;;;;;;;;;;;:31;;;13328:21;13373:4;13393:24;13411:4;13393:9;:24::i;:::-;13432:1;13448::::0;13464:7:::1;:5;:7::i;:::-;13486:15;13289:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13537:4;13523:11;;:18;;;;;;;;;;;;;;;;;;13570:4;13552:15;;:22;;;;;;;;;;;;;;;;;;13617:21;13602:12;:36;;;;13668:21;13649:16;:40;;;;13714:4;13700:11;;:18;;;;;;;;;;;;;;;;;;13741:12;13729:9;:24;;;;13771:13;;;;;;;;;;;13764:29;;;13816:15;;;;;;;;;;;13847:17;13764:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12833:1050;12791:1092::o:0;7782:184::-;7899:7;7931:11;:18;7943:5;7931:18;;;;;;;;;;;;;;;:27;7950:7;7931:27;;;;;;;;;;;;;;;;7924:34;;7782:184;;;;:::o;11799:97::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11881:7:::1;11872:6;;:16;;;;;;;;;;;;;;;;;;11799:97:::0;:::o;12557:105::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12649:5:::1;12640:6;:14;;;;:::i;:::-;12625:12;:29;;;;12557:105:::0;:::o;15504:194::-;15570:15;;;;;;;;;;;15554:31;;:12;:10;:12::i;:::-;:31;;;15546:40;;;;;;15597:26;15626:21;15597:50;;15658:32;15671:18;15658:12;:32::i;:::-;15535:163;15504:194::o;13891:87::-;3832:12;:10;:12::i;:::-;3822:22;;:6;;;;;;;;;;:22;;;3814:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13966:4:::1;13951;:12;13956:6;13951:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13891:87:::0;:::o;1198:98::-;1251:7;1278:10;1271:17;;1198:98;:::o;9069:369::-;9213:1;9196:19;;:5;:19;;;;9188:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9294:1;9275:21;;:7;:21;;;;9267:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9376:6;9346:11;:18;9358:5;9346:18;;;;;;;;;;;;;;;:27;9365:7;9346:27;;;;;;;;;;;;;;;:36;;;;9414:7;9398:32;;9407:5;9398:32;;;9423:6;9398:32;;;;;;:::i;:::-;;;;;;;;9069:369;;;:::o;9446:2345::-;9586:1;9570:18;;:4;:18;;;;9562:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9663:1;9649:16;;:2;:16;;;;9641:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9733:1;9724:6;:10;9716:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9822:1;9810:9;:13;;;;9846:1;9834:9;:13;;;;9870:7;:5;:7::i;:::-;9862:15;;:4;:15;;;;:32;;;;;9887:7;:5;:7::i;:::-;9881:13;;:2;:13;;;;9862:32;:57;;;;;9914:4;9898:21;;:4;:21;;;;9862:57;9858:1881;;;9973:4;:10;9978:4;9973:10;;;;;;;;;;;;;;;;;;;;;;;;;9972:11;:24;;;;;9988:4;:8;9993:2;9988:8;;;;;;;;;;;;;;;;;;;;;;;;;9987:9;9972:24;9964:33;;;;;;10042:13;;;;;;;;;;;10034:21;;:4;:21;;;:72;;;;;10090:15;;;;;;;;;;;10076:30;;:2;:30;;;;10034:72;:116;;;;;10128:18;:22;10147:2;10128:22;;;;;;;;;;;;;;;;;;;;;;;;;10127:23;10034:116;:152;;;;;10171:15;;;;;;;;;;;10034:152;10012:650;;;10300:12;;10290:6;:22;;10282:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10416:15;10401:8;:12;10410:2;10401:12;;;;;;;;;;;;;;;;:30;10393:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10538:16;;10528:6;10512:13;10522:2;10512:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;10504:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10635:10;10616:15;:30;;;;:::i;:::-;10601:8;:12;10610:2;10601:12;;;;;;;;;;;;;;;:45;;;;10012:650;10706:13;;;;;;;;;;;10700:19;;:2;:19;;;:72;;;;;10756:15;;;;;;;;;;;10740:32;;:4;:32;;;;10700:72;:118;;;;;10794:18;:24;10813:4;10794:24;;;;;;;;;;;;;;;;;;;;;;;;;10793:25;10700:118;10678:236;;;10865:1;10853:9;:13;;;;10897:1;10885:9;:13;;;;10678:236;10951:12;10946:1;10934:9;;:13;;;;:::i;:::-;:29;;:54;;;;;10975:13;;;;;;;;;;;10967:21;;:4;:21;;;10934:54;10930:141;;;11021:2;11009:9;:14;;;;11054:1;11042:9;:13;;;;10930:141;11087:28;11118:24;11136:4;11118:9;:24::i;:::-;11087:55;;11157:12;11196:19;;11172:20;:43;;11157:58;;11234:7;:18;;;;;11246:6;;;;;;;;;;;11245:7;11234:18;:43;;;;;11264:13;;;;;;;;;;;11256:21;;:4;:21;;;;11234:43;:58;;;;;11281:11;;;;;;;;;;;11234:58;11230:348;;;11331:38;11348:20;11331:16;:38::i;:::-;11388:26;11417:21;11388:50;;11482:1;11461:18;:22;11457:106;;;11508:35;11521:21;11508:12;:35::i;:::-;11457:106;11294:284;11230:348;9921:1668;;9858:1881;;;11698:1;11686:9;:13;;;;11726:1;11714:9;:13;;;;9858:1881;11751:32;11766:4;11772:2;11776:6;11751:14;:32::i;:::-;9446:2345;;;:::o;2460:224::-;2580:7;2613:1;2608;:6;;2616:12;2600:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2640:9;2656:1;2652;:5;;;;:::i;:::-;2640:17;;2675:1;2668:8;;;2460:224;;;;;:::o;11904:483::-;6408:4;6399:6;;:13;;;;;;;;;;;;;;;;;;11982:21:::1;12020:1;12006:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11982:40;;12051:4;12033;12038:1;12033:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12077:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12067:4;12072:1;12067:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12110:62;12127:4;12142:15;;;;;;;;;;;12160:11;12110:8;:62::i;:::-;12183:15;;;;;;;;;;;:66;;;12264:11;12290:1;12306:4;12333;12353:15;12183:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11971:416;6444:5:::0;6435:6;;:14;;;;;;;;;;;;;;;;;;11904:483;:::o;8738:323::-;8833:7;8891;;8880;:18;;8858:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8979:19;9001:10;:8;:10::i;:::-;8979:32;;9029:24;9041:11;9029:7;:11;;:24;;;;:::i;:::-;9022:31;;;8738:323;;;:::o;12395:154::-;12452:15;;;;;;;;;;;:24;;:39;12477:13;12488:1;12477:6;:10;;:13;;;;:::i;:::-;12452:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12502:15;;;;;;;;;;;:24;;:39;12527:13;12538:1;12527:6;:10;;:13;;;;:::i;:::-;12502:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12395:154;:::o;14084:180::-;14212:44;14230:6;14238:9;14249:6;14212:17;:44::i;:::-;14084:180;;;:::o;17443:164::-;17485:7;17506:15;17523;17542:19;:17;:19::i;:::-;17505:56;;;;17579:20;17591:7;17579;:11;;:20;;;;:::i;:::-;17572:27;;;;17443:164;:::o;2946:132::-;3004:7;3031:39;3035:1;3038;3031:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3024:46;;2946:132;;;;:::o;14272:610::-;14419:15;14449:23;14487:12;14514:23;14552:12;14579:13;14606:19;14617:7;14606:10;:19::i;:::-;14404:221;;;;;;;;;;;;14654:28;14674:7;14654;:15;14662:6;14654:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14636:7;:15;14644:6;14636:15;;;;;;;;;;;;;;;:46;;;;14714:39;14737:15;14714:7;:18;14722:9;14714:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14693:7;:18;14701:9;14693:18;;;;;;;;;;;;;;;:60;;;;14764:16;14774:5;14764:9;:16::i;:::-;14791:23;14803:4;14809;14791:11;:23::i;:::-;14847:9;14830:44;;14839:6;14830:44;;;14858:15;14830:44;;;;;;:::i;:::-;;;;;;;;14393:489;;;;;;14272:610;;;:::o;17615:257::-;17666:7;17675;17695:15;17713:7;;17695:25;;17731:15;5455:23;17731:25;;17781:20;5455:23;17781:7;;:11;;:20;;;;:::i;:::-;17771:7;:30;17767:61;;;17811:7;;5455:23;17803:25;;;;;;;;17767:61;17847:7;17856;17839:25;;;;;;17615:257;;;:::o;3086:223::-;3206:7;3238:1;3234;:5;3241:12;3226:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3265:9;3281:1;3277;:5;;;;:::i;:::-;3265:17;;3300:1;3293:8;;;3086:223;;;;;:::o;15706:704::-;15806:7;15828;15850;15872;15894;15916;15952:23;15977:12;15991:13;16008:92;16034:7;16056:9;;16080;;16008:11;:92::i;:::-;15951:149;;;;;;16111:19;16133:10;:8;:10::i;:::-;16111:32;;16155:15;16172:23;16197:12;16213:109;16239:7;16261:4;16280:5;16300:11;16213;:109::i;:::-;16154:168;;;;;;16341:7;16350:15;16367:4;16373:15;16390:4;16396:5;16333:69;;;;;;;;;;;;;;;;;;;15706:704;;;;;;;:::o;2316:136::-;2374:7;2401:43;2405:1;2408;2401:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2394:50;;2316:136;;;;:::o;2129:179::-;2187:7;2207:9;2223:1;2219;:5;;;;:::i;:::-;2207:17;;2248:1;2243;:6;;2235:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2299:1;2292:8;;;2129:179;;;;:::o;14890:211::-;14943:19;14965:10;:8;:10::i;:::-;14943:32;;14986:13;15002:22;15012:11;15002:5;:9;;:22;;;;:::i;:::-;14986:38;;15060:33;15087:5;15060:7;:22;15076:4;15060:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15035:7;:22;15051:4;15035:22;;;;;;;;;;;;;;;:58;;;;14932:169;;14890:211;:::o;15109:147::-;15187:17;15199:4;15187:7;;:11;;:17;;;;:::i;:::-;15177:7;:27;;;;15228:20;15243:4;15228:10;;:14;;:20;;;;:::i;:::-;15215:10;:33;;;;15109:147;;:::o;16418:467::-;16586:7;16608;16630;16665:12;16680:28;16704:3;16680:19;16692:6;16680:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16665:43;;16719:13;16735:29;16760:3;16735:20;16747:7;16735;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16719:45;;16775:23;16801:28;16823:5;16801:17;16813:4;16801:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16775:54;;16848:15;16865:4;16871:5;16840:37;;;;;;;;;16418:467;;;;;;;:::o;16893:534::-;17087:7;17109;17131;17166:15;17184:24;17196:11;17184:7;:11;;:24;;;;:::i;:::-;17166:42;;17219:12;17234:21;17243:11;17234:4;:8;;:21;;;;:::i;:::-;17219:36;;17266:13;17282:22;17292:11;17282:5;:9;;:22;;;;:::i;:::-;17266:38;;17315:23;17341:28;17363:5;17341:17;17353:4;17341:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17315:54;;17388:7;17397:15;17414:4;17380:39;;;;;;;;;;16893:534;;;;;;;;:::o;2692:246::-;2750:7;2779:1;2774;:6;2770:47;;;2804:1;2797:8;;;;2770:47;2827:9;2843:1;2839;:5;;;;:::i;:::-;2827:17;;2872:1;2867;2863;:5;;;;:::i;:::-;:10;2855:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2929:1;2922:8;;;2692:246;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;583:139;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;728:143;;;;:::o;877:329::-;936:6;985:2;973:9;964:7;960:23;956:32;953:119;;;991:79;;:::i;:::-;953:119;1111:1;1136:53;1181:7;1172:6;1161:9;1157:22;1136:53;:::i;:::-;1126:63;;1082:117;877:329;;;;:::o;1212:351::-;1282:6;1331:2;1319:9;1310:7;1306:23;1302:32;1299:119;;;1337:79;;:::i;:::-;1299:119;1457:1;1482:64;1538:7;1529:6;1518:9;1514:22;1482:64;:::i;:::-;1472:74;;1428:128;1212:351;;;;:::o;1569:474::-;1637:6;1645;1694:2;1682:9;1673:7;1669:23;1665:32;1662:119;;;1700:79;;:::i;:::-;1662:119;1820:1;1845:53;1890:7;1881:6;1870:9;1866:22;1845:53;:::i;:::-;1835:63;;1791:117;1947:2;1973:53;2018:7;2009:6;1998:9;1994:22;1973:53;:::i;:::-;1963:63;;1918:118;1569:474;;;;;:::o;2049:619::-;2126:6;2134;2142;2191:2;2179:9;2170:7;2166:23;2162:32;2159:119;;;2197:79;;:::i;:::-;2159:119;2317:1;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2288:117;2444:2;2470:53;2515:7;2506:6;2495:9;2491:22;2470:53;:::i;:::-;2460:63;;2415:118;2572:2;2598:53;2643:7;2634:6;2623:9;2619:22;2598:53;:::i;:::-;2588:63;;2543:118;2049:619;;;;;:::o;2674:474::-;2742:6;2750;2799:2;2787:9;2778:7;2774:23;2770:32;2767:119;;;2805:79;;:::i;:::-;2767:119;2925:1;2950:53;2995:7;2986:6;2975:9;2971:22;2950:53;:::i;:::-;2940:63;;2896:117;3052:2;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3023:118;2674:474;;;;;:::o;3154:323::-;3210:6;3259:2;3247:9;3238:7;3234:23;3230:32;3227:119;;;3265:79;;:::i;:::-;3227:119;3385:1;3410:50;3452:7;3443:6;3432:9;3428:22;3410:50;:::i;:::-;3400:60;;3356:114;3154:323;;;;:::o;3483:345::-;3550:6;3599:2;3587:9;3578:7;3574:23;3570:32;3567:119;;;3605:79;;:::i;:::-;3567:119;3725:1;3750:61;3803:7;3794:6;3783:9;3779:22;3750:61;:::i;:::-;3740:71;;3696:125;3483:345;;;;:::o;3834:329::-;3893:6;3942:2;3930:9;3921:7;3917:23;3913:32;3910:119;;;3948:79;;:::i;:::-;3910:119;4068:1;4093:53;4138:7;4129:6;4118:9;4114:22;4093:53;:::i;:::-;4083:63;;4039:117;3834:329;;;;:::o;4169:663::-;4257:6;4265;4273;4322:2;4310:9;4301:7;4297:23;4293:32;4290:119;;;4328:79;;:::i;:::-;4290:119;4448:1;4473:64;4529:7;4520:6;4509:9;4505:22;4473:64;:::i;:::-;4463:74;;4419:128;4586:2;4612:64;4668:7;4659:6;4648:9;4644:22;4612:64;:::i;:::-;4602:74;;4557:129;4725:2;4751:64;4807:7;4798:6;4787:9;4783:22;4751:64;:::i;:::-;4741:74;;4696:129;4169:663;;;;;:::o;4838:179::-;4907:10;4928:46;4970:3;4962:6;4928:46;:::i;:::-;5006:4;5001:3;4997:14;4983:28;;4838:179;;;;:::o;5023:108::-;5100:24;5118:5;5100:24;:::i;:::-;5095:3;5088:37;5023:108;;:::o;5137:118::-;5224:24;5242:5;5224:24;:::i;:::-;5219:3;5212:37;5137:118;;:::o;5291:732::-;5410:3;5439:54;5487:5;5439:54;:::i;:::-;5509:86;5588:6;5583:3;5509:86;:::i;:::-;5502:93;;5619:56;5669:5;5619:56;:::i;:::-;5698:7;5729:1;5714:284;5739:6;5736:1;5733:13;5714:284;;;5815:6;5809:13;5842:63;5901:3;5886:13;5842:63;:::i;:::-;5835:70;;5928:60;5981:6;5928:60;:::i;:::-;5918:70;;5774:224;5761:1;5758;5754:9;5749:14;;5714:284;;;5718:14;6014:3;6007:10;;5415:608;;;5291:732;;;;:::o;6029:109::-;6110:21;6125:5;6110:21;:::i;:::-;6105:3;6098:34;6029:109;;:::o;6144:147::-;6239:45;6278:5;6239:45;:::i;:::-;6234:3;6227:58;6144:147;;:::o;6297:364::-;6385:3;6413:39;6446:5;6413:39;:::i;:::-;6468:71;6532:6;6527:3;6468:71;:::i;:::-;6461:78;;6548:52;6593:6;6588:3;6581:4;6574:5;6570:16;6548:52;:::i;:::-;6625:29;6647:6;6625:29;:::i;:::-;6620:3;6616:39;6609:46;;6389:272;6297:364;;;;:::o;6667:366::-;6809:3;6830:67;6894:2;6889:3;6830:67;:::i;:::-;6823:74;;6906:93;6995:3;6906:93;:::i;:::-;7024:2;7019:3;7015:12;7008:19;;6667:366;;;:::o;7039:::-;7181:3;7202:67;7266:2;7261:3;7202:67;:::i;:::-;7195:74;;7278:93;7367:3;7278:93;:::i;:::-;7396:2;7391:3;7387:12;7380:19;;7039:366;;;:::o;7411:::-;7553:3;7574:67;7638:2;7633:3;7574:67;:::i;:::-;7567:74;;7650:93;7739:3;7650:93;:::i;:::-;7768:2;7763:3;7759:12;7752:19;;7411:366;;;:::o;7783:::-;7925:3;7946:67;8010:2;8005:3;7946:67;:::i;:::-;7939:74;;8022:93;8111:3;8022:93;:::i;:::-;8140:2;8135:3;8131:12;8124:19;;7783:366;;;:::o;8155:::-;8297:3;8318:67;8382:2;8377:3;8318:67;:::i;:::-;8311:74;;8394:93;8483:3;8394:93;:::i;:::-;8512:2;8507:3;8503:12;8496:19;;8155:366;;;:::o;8527:::-;8669:3;8690:67;8754:2;8749:3;8690:67;:::i;:::-;8683:74;;8766:93;8855:3;8766:93;:::i;:::-;8884:2;8879:3;8875:12;8868:19;;8527:366;;;:::o;8899:::-;9041:3;9062:67;9126:2;9121:3;9062:67;:::i;:::-;9055:74;;9138:93;9227:3;9138:93;:::i;:::-;9256:2;9251:3;9247:12;9240:19;;8899:366;;;:::o;9271:::-;9413:3;9434:67;9498:2;9493:3;9434:67;:::i;:::-;9427:74;;9510:93;9599:3;9510:93;:::i;:::-;9628:2;9623:3;9619:12;9612:19;;9271:366;;;:::o;9643:::-;9785:3;9806:67;9870:2;9865:3;9806:67;:::i;:::-;9799:74;;9882:93;9971:3;9882:93;:::i;:::-;10000:2;9995:3;9991:12;9984:19;;9643:366;;;:::o;10015:::-;10157:3;10178:67;10242:2;10237:3;10178:67;:::i;:::-;10171:74;;10254:93;10343:3;10254:93;:::i;:::-;10372:2;10367:3;10363:12;10356:19;;10015:366;;;:::o;10387:::-;10529:3;10550:67;10614:2;10609:3;10550:67;:::i;:::-;10543:74;;10626:93;10715:3;10626:93;:::i;:::-;10744:2;10739:3;10735:12;10728:19;;10387:366;;;:::o;10759:::-;10901:3;10922:67;10986:2;10981:3;10922:67;:::i;:::-;10915:74;;10998:93;11087:3;10998:93;:::i;:::-;11116:2;11111:3;11107:12;11100:19;;10759:366;;;:::o;11131:::-;11273:3;11294:67;11358:2;11353:3;11294:67;:::i;:::-;11287:74;;11370:93;11459:3;11370:93;:::i;:::-;11488:2;11483:3;11479:12;11472:19;;11131:366;;;:::o;11503:118::-;11590:24;11608:5;11590:24;:::i;:::-;11585:3;11578:37;11503:118;;:::o;11627:112::-;11710:22;11726:5;11710:22;:::i;:::-;11705:3;11698:35;11627:112;;:::o;11745:222::-;11838:4;11876:2;11865:9;11861:18;11853:26;;11889:71;11957:1;11946:9;11942:17;11933:6;11889:71;:::i;:::-;11745:222;;;;:::o;11973:332::-;12094:4;12132:2;12121:9;12117:18;12109:26;;12145:71;12213:1;12202:9;12198:17;12189:6;12145:71;:::i;:::-;12226:72;12294:2;12283:9;12279:18;12270:6;12226:72;:::i;:::-;11973:332;;;;;:::o;12311:::-;12432:4;12470:2;12459:9;12455:18;12447:26;;12483:71;12551:1;12540:9;12536:17;12527:6;12483:71;:::i;:::-;12564:72;12632:2;12621:9;12617:18;12608:6;12564:72;:::i;:::-;12311:332;;;;;:::o;12649:807::-;12898:4;12936:3;12925:9;12921:19;12913:27;;12950:71;13018:1;13007:9;13003:17;12994:6;12950:71;:::i;:::-;13031:72;13099:2;13088:9;13084:18;13075:6;13031:72;:::i;:::-;13113:80;13189:2;13178:9;13174:18;13165:6;13113:80;:::i;:::-;13203;13279:2;13268:9;13264:18;13255:6;13203:80;:::i;:::-;13293:73;13361:3;13350:9;13346:19;13337:6;13293:73;:::i;:::-;13376;13444:3;13433:9;13429:19;13420:6;13376:73;:::i;:::-;12649:807;;;;;;;;;:::o;13462:210::-;13549:4;13587:2;13576:9;13572:18;13564:26;;13600:65;13662:1;13651:9;13647:17;13638:6;13600:65;:::i;:::-;13462:210;;;;:::o;13678:313::-;13791:4;13829:2;13818:9;13814:18;13806:26;;13878:9;13872:4;13868:20;13864:1;13853:9;13849:17;13842:47;13906:78;13979:4;13970:6;13906:78;:::i;:::-;13898:86;;13678:313;;;;:::o;13997:419::-;14163:4;14201:2;14190:9;14186:18;14178:26;;14250:9;14244:4;14240:20;14236:1;14225:9;14221:17;14214:47;14278:131;14404:4;14278:131;:::i;:::-;14270:139;;13997:419;;;:::o;14422:::-;14588:4;14626:2;14615:9;14611:18;14603:26;;14675:9;14669:4;14665:20;14661:1;14650:9;14646:17;14639:47;14703:131;14829:4;14703:131;:::i;:::-;14695:139;;14422:419;;;:::o;14847:::-;15013:4;15051:2;15040:9;15036:18;15028:26;;15100:9;15094:4;15090:20;15086:1;15075:9;15071:17;15064:47;15128:131;15254:4;15128:131;:::i;:::-;15120:139;;14847:419;;;:::o;15272:::-;15438:4;15476:2;15465:9;15461:18;15453:26;;15525:9;15519:4;15515:20;15511:1;15500:9;15496:17;15489:47;15553:131;15679:4;15553:131;:::i;:::-;15545:139;;15272:419;;;:::o;15697:::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15950:9;15944:4;15940:20;15936:1;15925:9;15921:17;15914:47;15978:131;16104:4;15978:131;:::i;:::-;15970:139;;15697:419;;;:::o;16122:::-;16288:4;16326:2;16315:9;16311:18;16303:26;;16375:9;16369:4;16365:20;16361:1;16350:9;16346:17;16339:47;16403:131;16529:4;16403:131;:::i;:::-;16395:139;;16122:419;;;:::o;16547:::-;16713:4;16751:2;16740:9;16736:18;16728:26;;16800:9;16794:4;16790:20;16786:1;16775:9;16771:17;16764:47;16828:131;16954:4;16828:131;:::i;:::-;16820:139;;16547:419;;;:::o;16972:::-;17138:4;17176:2;17165:9;17161:18;17153:26;;17225:9;17219:4;17215:20;17211:1;17200:9;17196:17;17189:47;17253:131;17379:4;17253:131;:::i;:::-;17245:139;;16972:419;;;:::o;17397:::-;17563:4;17601:2;17590:9;17586:18;17578:26;;17650:9;17644:4;17640:20;17636:1;17625:9;17621:17;17614:47;17678:131;17804:4;17678:131;:::i;:::-;17670:139;;17397:419;;;:::o;17822:::-;17988:4;18026:2;18015:9;18011:18;18003:26;;18075:9;18069:4;18065:20;18061:1;18050:9;18046:17;18039:47;18103:131;18229:4;18103:131;:::i;:::-;18095:139;;17822:419;;;:::o;18247:::-;18413:4;18451:2;18440:9;18436:18;18428:26;;18500:9;18494:4;18490:20;18486:1;18475:9;18471:17;18464:47;18528:131;18654:4;18528:131;:::i;:::-;18520:139;;18247:419;;;:::o;18672:::-;18838:4;18876:2;18865:9;18861:18;18853:26;;18925:9;18919:4;18915:20;18911:1;18900:9;18896:17;18889:47;18953:131;19079:4;18953:131;:::i;:::-;18945:139;;18672:419;;;:::o;19097:::-;19263:4;19301:2;19290:9;19286:18;19278:26;;19350:9;19344:4;19340:20;19336:1;19325:9;19321:17;19314:47;19378:131;19504:4;19378:131;:::i;:::-;19370:139;;19097:419;;;:::o;19522:222::-;19615:4;19653:2;19642:9;19638:18;19630:26;;19666:71;19734:1;19723:9;19719:17;19710:6;19666:71;:::i;:::-;19522:222;;;;:::o;19750:831::-;20013:4;20051:3;20040:9;20036:19;20028:27;;20065:71;20133:1;20122:9;20118:17;20109:6;20065:71;:::i;:::-;20146:80;20222:2;20211:9;20207:18;20198:6;20146:80;:::i;:::-;20273:9;20267:4;20263:20;20258:2;20247:9;20243:18;20236:48;20301:108;20404:4;20395:6;20301:108;:::i;:::-;20293:116;;20419:72;20487:2;20476:9;20472:18;20463:6;20419:72;:::i;:::-;20501:73;20569:3;20558:9;20554:19;20545:6;20501:73;:::i;:::-;19750:831;;;;;;;;:::o;20587:214::-;20676:4;20714:2;20703:9;20699:18;20691:26;;20727:67;20791:1;20780:9;20776:17;20767:6;20727:67;:::i;:::-;20587:214;;;;:::o;20888:132::-;20955:4;20978:3;20970:11;;21008:4;21003:3;20999:14;20991:22;;20888:132;;;:::o;21026:114::-;21093:6;21127:5;21121:12;21111:22;;21026:114;;;:::o;21146:99::-;21198:6;21232:5;21226:12;21216:22;;21146:99;;;:::o;21251:113::-;21321:4;21353;21348:3;21344:14;21336:22;;21251:113;;;:::o;21370:184::-;21469:11;21503:6;21498:3;21491:19;21543:4;21538:3;21534:14;21519:29;;21370:184;;;;:::o;21560:169::-;21644:11;21678:6;21673:3;21666:19;21718:4;21713:3;21709:14;21694:29;;21560:169;;;;:::o;21735:305::-;21775:3;21794:20;21812:1;21794:20;:::i;:::-;21789:25;;21828:20;21846:1;21828:20;:::i;:::-;21823:25;;21982:1;21914:66;21910:74;21907:1;21904:81;21901:107;;;21988:18;;:::i;:::-;21901:107;22032:1;22029;22025:9;22018:16;;21735:305;;;;:::o;22046:185::-;22086:1;22103:20;22121:1;22103:20;:::i;:::-;22098:25;;22137:20;22155:1;22137:20;:::i;:::-;22132:25;;22176:1;22166:35;;22181:18;;:::i;:::-;22166:35;22223:1;22220;22216:9;22211:14;;22046:185;;;;:::o;22237:348::-;22277:7;22300:20;22318:1;22300:20;:::i;:::-;22295:25;;22334:20;22352:1;22334:20;:::i;:::-;22329:25;;22522:1;22454:66;22450:74;22447:1;22444:81;22439:1;22432:9;22425:17;22421:105;22418:131;;;22529:18;;:::i;:::-;22418:131;22577:1;22574;22570:9;22559:20;;22237:348;;;;:::o;22591:191::-;22631:4;22651:20;22669:1;22651:20;:::i;:::-;22646:25;;22685:20;22703:1;22685:20;:::i;:::-;22680:25;;22724:1;22721;22718:8;22715:34;;;22729:18;;:::i;:::-;22715:34;22774:1;22771;22767:9;22759:17;;22591:191;;;;:::o;22788:96::-;22825:7;22854:24;22872:5;22854:24;:::i;:::-;22843:35;;22788:96;;;:::o;22890:90::-;22924:7;22967:5;22960:13;22953:21;22942:32;;22890:90;;;:::o;22986:126::-;23023:7;23063:42;23056:5;23052:54;23041:65;;22986:126;;;:::o;23118:77::-;23155:7;23184:5;23173:16;;23118:77;;;:::o;23201:86::-;23236:7;23276:4;23269:5;23265:16;23254:27;;23201:86;;;:::o;23293:121::-;23351:9;23384:24;23402:5;23384:24;:::i;:::-;23371:37;;23293:121;;;:::o;23420:307::-;23488:1;23498:113;23512:6;23509:1;23506:13;23498:113;;;23597:1;23592:3;23588:11;23582:18;23578:1;23573:3;23569:11;23562:39;23534:2;23531:1;23527:10;23522:15;;23498:113;;;23629:6;23626:1;23623:13;23620:101;;;23709:1;23700:6;23695:3;23691:16;23684:27;23620:101;23469:258;23420:307;;;:::o;23733:180::-;23781:77;23778:1;23771:88;23878:4;23875:1;23868:15;23902:4;23899:1;23892:15;23919:180;23967:77;23964:1;23957:88;24064:4;24061:1;24054:15;24088:4;24085:1;24078:15;24105:180;24153:77;24150:1;24143:88;24250:4;24247:1;24240:15;24274:4;24271:1;24264:15;24291:180;24339:77;24336:1;24329:88;24436:4;24433:1;24426:15;24460:4;24457:1;24450:15;24600:117;24709:1;24706;24699:12;24723:102;24764:6;24815:2;24811:7;24806:2;24799:5;24795:14;24791:28;24781:38;;24723:102;;;:::o;24831:222::-;24971:34;24967:1;24959:6;24955:14;24948:58;25040:5;25035:2;25027:6;25023:15;25016:30;24831:222;:::o;25059:229::-;25199:34;25195:1;25187:6;25183:14;25176:58;25268:12;25263:2;25255:6;25251:15;25244:37;25059:229;:::o;25294:221::-;25434:34;25430:1;25422:6;25418:14;25411:58;25503:4;25498:2;25490:6;25486:15;25479:29;25294:221;:::o;25521:177::-;25661:29;25657:1;25649:6;25645:14;25638:53;25521:177;:::o;25704:220::-;25844:34;25840:1;25832:6;25828:14;25821:58;25913:3;25908:2;25900:6;25896:15;25889:28;25704:220;:::o;25930:182::-;26070:34;26066:1;26058:6;26054:14;26047:58;25930:182;:::o;26118:228::-;26258:34;26254:1;26246:6;26242:14;26235:58;26327:11;26322:2;26314:6;26310:15;26303:36;26118:228;:::o;26352:173::-;26492:25;26488:1;26480:6;26476:14;26469:49;26352:173;:::o;26531:224::-;26671:34;26667:1;26659:6;26655:14;26648:58;26740:7;26735:2;26727:6;26723:15;26716:32;26531:224;:::o;26761:223::-;26901:34;26897:1;26889:6;26885:14;26878:58;26970:6;26965:2;26957:6;26953:15;26946:31;26761:223;:::o;26990:173::-;27130:25;27126:1;27118:6;27114:14;27107:49;26990:173;:::o;27169:178::-;27309:30;27305:1;27297:6;27293:14;27286:54;27169:178;:::o;27353:168::-;27493:20;27489:1;27481:6;27477:14;27470:44;27353:168;:::o;27527:122::-;27600:24;27618:5;27600:24;:::i;:::-;27593:5;27590:35;27580:63;;27639:1;27636;27629:12;27580:63;27527:122;:::o;27655:116::-;27725:21;27740:5;27725:21;:::i;:::-;27718:5;27715:32;27705:60;;27761:1;27758;27751:12;27705:60;27655:116;:::o;27777:122::-;27850:24;27868:5;27850:24;:::i;:::-;27843:5;27840:35;27830:63;;27889:1;27886;27879:12;27830:63;27777:122;:::o

Swarm Source

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