ETH Price: $2,302.05 (-0.22%)

Token

CARILLONIUM 2.0 (CAROM2.0)
 

Overview

Max Total Supply

420,690,000,000,000 CAROM2.0

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 CAROM2.0

Value
$0.00
0x859495d3473a3a57b7f7094f532e419a6b98be2d
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:
CAROM20

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-10
*/

/**

Carillonium 2.0

// Let's Carillon and Conquer the Moon!!!!


// https://t.me/CarilloniumETH

// https://carillonium2.finance/

// https://twitter.com/CarilloniumETH/
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract CAROM20 is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "CARILLONIUM 2.0";
    string private constant _symbol = "CAROM2.0";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 420690000000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    //Tax at launch. Will be reduced later
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 50;

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

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x27C2BE729E1C1f784892B4733Df91DDb801710e4);
    address payable private _marketingAddress = payable(0x27C2BE729E1C1f784892B4733Df91DDb801710e4);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal * 5 / 1000;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

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

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

            if(contractTokenBalance >= _swapTokensAtAmount*10)
            {
                contractTokenBalance = _swapTokensAtAmount*10;
            }

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

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

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 20,"Total Fee should be less than 20");
    }

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

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

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount >= _tTotal/100,"Max Tx must be more than 1%");
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
         require (_maxWalletSize >= _tTotal/100,"Max Wallet must be more than 1%");
    }

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

}

Contract Security Audit

Contract ABI

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

60806040526d14bddab3e51a57cff87a5000000060001962000022919062000784565b600019620000319190620007eb565b600655600060085560196009556000600a556032600b55600a54600c55600b54600d55600c54600e55600d54600f557327c2be729e1c1f784892b4733df91ddb801710e4601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507327c2be729e1c1f784892b4733df91ddb801710e4601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506d14bddab3e51a57cff87a50000000601655606460026d14bddab3e51a57cff87a500000006200018b919062000826565b62000197919062000871565b6017556103e860056d14bddab3e51a57cff87a50000000620001ba919062000826565b620001c6919062000871565b601855348015620001d657600080fd5b506000620001e96200071a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200029e6200071a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000382573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a8919062000913565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000913565b6040518363ffffffff1660e01b81526004016200045592919062000956565b6020604051808303816000875af115801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b919062000913565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004f16200072260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200069e6200071a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d14bddab3e51a57cff87a500000006040516200070b919062000994565b60405180910390a350620009b1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000791826200074b565b91506200079e836200074b565b925082620007b157620007b062000755565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007f8826200074b565b915062000805836200074b565b925082820390508181111562000820576200081f620007bc565b5b92915050565b600062000833826200074b565b915062000840836200074b565b925082820262000850816200074b565b915082820484148315176200086a5762000869620007bc565b5b5092915050565b60006200087e826200074b565b91506200088b836200074b565b9250826200089e576200089d62000755565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008db82620008ae565b9050919050565b620008ed81620008ce565b8114620008f957600080fd5b50565b6000815190506200090d81620008e2565b92915050565b6000602082840312156200092c576200092b620008a9565b5b60006200093c84828501620008fc565b91505092915050565b6200095081620008ce565b82525050565b60006040820190506200096d600083018562000945565b6200097c602083018462000945565b9392505050565b6200098e816200074b565b82525050565b6000602082019050620009ab600083018462000983565b92915050565b613e0a80620009c16000396000f3fe6080604052600436106101c55760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f04614610628578063dd62ed3e14610651578063ea1644d51461068e578063f2fde38b146106b7576101cc565b8063a2a957bb1461056e578063a9059cbb14610597578063bfd79284146105d4578063c3c8cd8014610611576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f9a55c0146104ef57806395d89b411461051a57806398a5c31514610545576101cc565b806374010ece146104335780637d1db4a51461045c5780637f2feddc14610487576101cc565b8063313ce567116101645780636d8aa8f81161013e5780636d8aa8f81461039f5780636fc3eaec146103c857806370a08231146103df578063715018a61461041c576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636b99905314610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612c96565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612d5e565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612db6565b610847565b6040516102599190612e11565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612e8b565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612eb5565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612ed0565b6108a1565b6040516102ec9190612e11565b60405180910390f35b34801561030157600080fd5b5061030a61097a565b6040516103179190612eb5565b60405180910390f35b34801561032c57600080fd5b50610335610980565b6040516103429190612f3f565b60405180910390f35b34801561035757600080fd5b50610360610989565b60405161036d9190612f69565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612f84565b6109af565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190612fdd565b610a9f565b005b3480156103d457600080fd5b506103dd610b51565b005b3480156103eb57600080fd5b5061040660048036038101906104019190612f84565b610b62565b6040516104139190612eb5565b60405180910390f35b34801561042857600080fd5b50610431610bb3565b005b34801561043f57600080fd5b5061045a6004803603810190610455919061300a565b610d06565b005b34801561046857600080fd5b50610471610e29565b60405161047e9190612eb5565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612f84565b610e2f565b6040516104bb9190612eb5565b60405180910390f35b3480156104d057600080fd5b506104d9610e47565b6040516104e69190612f69565b60405180910390f35b3480156104fb57600080fd5b50610504610e70565b6040516105119190612eb5565b60405180910390f35b34801561052657600080fd5b5061052f610e76565b60405161053c9190612d5e565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061300a565b610eb3565b005b34801561057a57600080fd5b5061059560048036038101906105909190613037565b610f52565b005b3480156105a357600080fd5b506105be60048036038101906105b99190612db6565b611076565b6040516105cb9190612e11565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f69190612f84565b611094565b6040516106089190612e11565b60405180910390f35b34801561061d57600080fd5b506106266110b4565b005b34801561063457600080fd5b5061064f600480360381019061064a91906130f9565b6110cd565b005b34801561065d57600080fd5b5061067860048036038101906106739190613159565b611207565b6040516106859190612eb5565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b0919061300a565b61128e565b005b3480156106c357600080fd5b506106de60048036038101906106d99190612f84565b6113b1565b005b6106e8611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c906131e5565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a57610799613205565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe90613263565b915050610778565b5050565b60606040518060400160405280600f81526020017f434152494c4c4f4e49554d20322e300000000000000000000000000000000000815250905090565b600061085b610854611572565b848461157a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006d14bddab3e51a57cff87a50000000905090565b60006108ae848484611743565b61096f846108ba611572565b61096a85604051806060016040528060288152602001613dad60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610920611572565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fe49092919063ffffffff16565b61157a565b600190509392505050565b60185481565b60006012905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b7611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b906131e5565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa7611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b906131e5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610b5f81612048565b50565b6000610bac600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b4565b9050919050565b610bbb611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f906131e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d0e611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d92906131e5565b60405180910390fd5b6064816d14bddab3e51a57cff87a50000000610db791906132ab565b610dc1919061331c565b60168190555060646d14bddab3e51a57cff87a50000000610de2919061331c565b6016541015610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90613399565b60405180910390fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600881526020017f4341524f4d322e30000000000000000000000000000000000000000000000000815250905090565b610ebb611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f906131e5565b60405180910390fd5b8060188190555050565b610f5a611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde906131e5565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506014600b54600954600a5460085461101b91906133b9565b61102591906133b9565b61102f91906133b9565b1115611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613439565b60405180910390fd5b50505050565b600061108a611083611572565b8484611743565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b60006110bf30610b62565b90506110ca81612122565b50565b6110d5611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906131e5565b60405180910390fd5b60005b8383905081101561120157816005600086868581811061118857611187613205565b5b905060200201602081019061119d9190612f84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111f990613263565b915050611165565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611296611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a906131e5565b60405180910390fd5b6064816d14bddab3e51a57cff87a5000000061133f91906132ab565b611349919061331c565b60178190555060646d14bddab3e51a57cff87a5000000061136a919061331c565b60175410156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906134a5565b60405180910390fd5b50565b6113b9611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906131e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac90613537565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906135c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f9061365b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117369190612eb5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906136ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061377f565b60405180910390fd5b60008111611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613811565b60405180910390fd5b61186c610e47565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118da57506118aa610e47565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ce357601560149054906101000a900460ff16611969576118fb610e47565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906138a3565b60405180910390fd5b5b6016548111156119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a59061390f565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a525750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a88906139a1565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b3e5760175481611af384610b62565b611afd91906133b9565b10611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613a33565b60405180910390fd5b5b6000611b4930610b62565b905060006018548210159050600a601854611b6491906132ab565b8210611b7c57600a601854611b7991906132ab565b91505b808015611b94575060158054906101000a900460ff16155b8015611bee5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c065750601560169054906101000a900460ff165b8015611c5c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cb25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce057611cc082612122565b600047905066b1a2bc2ec50000811115611cde57611cdd47612048565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d8a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e3d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e4b5760009050611fd2565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ef65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0e57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fb95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fd157600a54600c81905550600b54600d819055505b5b611fde84848484612399565b50505050565b600083831115829061202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120239190612d5e565b60405180910390fd5b506000838561203b9190613a53565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120b0573d6000803e3d6000fd5b5050565b60006006548211156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290613af9565b60405180910390fd5b60006121056123c6565b905061211a81846123f190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561215957612158612af5565b5b6040519080825280602002602001820160405280156121875781602001602082028036833780820191505090505b509050308160008151811061219f5761219e613205565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226a9190613b2e565b8160018151811061227e5761227d613205565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122e530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461157a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612349959493929190613c54565b600060405180830381600087803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123a7576123a661243b565b5b6123b2848484612478565b806123c0576123bf612643565b5b50505050565b60008060006123d3612657565b915091506123ea81836123f190919063ffffffff16565b9250505090565b600061243383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c8565b905092915050565b6000600c5414801561244f57506000600d54145b61247657600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061248a8761272b565b9550955095509550955095506124e886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c98161283b565b6125d384836128f8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126309190612eb5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006d14bddab3e51a57cff87a5000000090506126976d14bddab3e51a57cff87a500000006006546123f190919063ffffffff16565b8210156126bb576006546d14bddab3e51a57cff87a500000009350935050506126c4565b81819350935050505b9091565b6000808311829061270f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127069190612d5e565b60405180910390fd5b506000838561271e919061331c565b9050809150509392505050565b60008060008060008060008060006127488a600c54600d54612932565b92509250925060006127586123c6565b9050600080600061276b8e8787876129c8565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe4565b905092915050565b60008082846127ec91906133b9565b905083811015612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890613cfa565b60405180910390fd5b8091505092915050565b60006128456123c6565b9050600061285c8284612a5190919063ffffffff16565b90506128b081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61290d8260065461279390919063ffffffff16565b600681905550612928816007546127dd90919063ffffffff16565b6007819055505050565b60008060008061295e6064612950888a612a5190919063ffffffff16565b6123f190919063ffffffff16565b90506000612988606461297a888b612a5190919063ffffffff16565b6123f190919063ffffffff16565b905060006129b1826129a3858c61279390919063ffffffff16565b61279390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129e18589612a5190919063ffffffff16565b905060006129f88689612a5190919063ffffffff16565b90506000612a0f8789612a5190919063ffffffff16565b90506000612a3882612a2a858761279390919063ffffffff16565b61279390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a635760009050612ac5565b60008284612a7191906132ab565b9050828482612a80919061331c565b14612ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab790613d8c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2d82612ae4565b810181811067ffffffffffffffff82111715612b4c57612b4b612af5565b5b80604052505050565b6000612b5f612acb565b9050612b6b8282612b24565b919050565b600067ffffffffffffffff821115612b8b57612b8a612af5565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bcc82612ba1565b9050919050565b612bdc81612bc1565b8114612be757600080fd5b50565b600081359050612bf981612bd3565b92915050565b6000612c12612c0d84612b70565b612b55565b90508083825260208201905060208402830185811115612c3557612c34612b9c565b5b835b81811015612c5e5780612c4a8882612bea565b845260208401935050602081019050612c37565b5050509392505050565b600082601f830112612c7d57612c7c612adf565b5b8135612c8d848260208601612bff565b91505092915050565b600060208284031215612cac57612cab612ad5565b5b600082013567ffffffffffffffff811115612cca57612cc9612ada565b5b612cd684828501612c68565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d19578082015181840152602081019050612cfe565b60008484015250505050565b6000612d3082612cdf565b612d3a8185612cea565b9350612d4a818560208601612cfb565b612d5381612ae4565b840191505092915050565b60006020820190508181036000830152612d788184612d25565b905092915050565b6000819050919050565b612d9381612d80565b8114612d9e57600080fd5b50565b600081359050612db081612d8a565b92915050565b60008060408385031215612dcd57612dcc612ad5565b5b6000612ddb85828601612bea565b9250506020612dec85828601612da1565b9150509250929050565b60008115159050919050565b612e0b81612df6565b82525050565b6000602082019050612e266000830184612e02565b92915050565b6000819050919050565b6000612e51612e4c612e4784612ba1565b612e2c565b612ba1565b9050919050565b6000612e6382612e36565b9050919050565b6000612e7582612e58565b9050919050565b612e8581612e6a565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b612eaf81612d80565b82525050565b6000602082019050612eca6000830184612ea6565b92915050565b600080600060608486031215612ee957612ee8612ad5565b5b6000612ef786828701612bea565b9350506020612f0886828701612bea565b9250506040612f1986828701612da1565b9150509250925092565b600060ff82169050919050565b612f3981612f23565b82525050565b6000602082019050612f546000830184612f30565b92915050565b612f6381612bc1565b82525050565b6000602082019050612f7e6000830184612f5a565b92915050565b600060208284031215612f9a57612f99612ad5565b5b6000612fa884828501612bea565b91505092915050565b612fba81612df6565b8114612fc557600080fd5b50565b600081359050612fd781612fb1565b92915050565b600060208284031215612ff357612ff2612ad5565b5b600061300184828501612fc8565b91505092915050565b6000602082840312156130205761301f612ad5565b5b600061302e84828501612da1565b91505092915050565b6000806000806080858703121561305157613050612ad5565b5b600061305f87828801612da1565b945050602061307087828801612da1565b935050604061308187828801612da1565b925050606061309287828801612da1565b91505092959194509250565b600080fd5b60008083601f8401126130b9576130b8612adf565b5b8235905067ffffffffffffffff8111156130d6576130d561309e565b5b6020830191508360208202830111156130f2576130f1612b9c565b5b9250929050565b60008060006040848603121561311257613111612ad5565b5b600084013567ffffffffffffffff8111156131305761312f612ada565b5b61313c868287016130a3565b9350935050602061314f86828701612fc8565b9150509250925092565b600080604083850312156131705761316f612ad5565b5b600061317e85828601612bea565b925050602061318f85828601612bea565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131cf602083612cea565b91506131da82613199565b602082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061326e82612d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132a05761329f613234565b5b600182019050919050565b60006132b682612d80565b91506132c183612d80565b92508282026132cf81612d80565b915082820484148315176132e6576132e5613234565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061332782612d80565b915061333283612d80565b925082613342576133416132ed565b5b828204905092915050565b7f4d6178205478206d757374206265206d6f7265207468616e2031250000000000600082015250565b6000613383601b83612cea565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b60006133c482612d80565b91506133cf83612d80565b92508282019050808211156133e7576133e6613234565b5b92915050565b7f546f74616c204665652073686f756c64206265206c657373207468616e203230600082015250565b6000613423602083612cea565b915061342e826133ed565b602082019050919050565b6000602082019050818103600083015261345281613416565b9050919050565b7f4d61782057616c6c6574206d757374206265206d6f7265207468616e20312500600082015250565b600061348f601f83612cea565b915061349a82613459565b602082019050919050565b600060208201905081810360008301526134be81613482565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613521602683612cea565b915061352c826134c5565b604082019050919050565b6000602082019050818103600083015261355081613514565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135b3602483612cea565b91506135be82613557565b604082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613645602283612cea565b9150613650826135e9565b604082019050919050565b6000602082019050818103600083015261367481613638565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136d7602583612cea565b91506136e28261367b565b604082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613769602383612cea565b91506137748261370d565b604082019050919050565b600060208201905081810360008301526137988161375c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137fb602983612cea565b91506138068261379f565b604082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061388d603f83612cea565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138f9601c83612cea565b9150613904826138c3565b602082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061398b602383612cea565b91506139968261392f565b604082019050919050565b600060208201905081810360008301526139ba8161397e565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a1d602383612cea565b9150613a28826139c1565b604082019050919050565b60006020820190508181036000830152613a4c81613a10565b9050919050565b6000613a5e82612d80565b9150613a6983612d80565b9250828203905081811115613a8157613a80613234565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613ae3602a83612cea565b9150613aee82613a87565b604082019050919050565b60006020820190508181036000830152613b1281613ad6565b9050919050565b600081519050613b2881612bd3565b92915050565b600060208284031215613b4457613b43612ad5565b5b6000613b5284828501613b19565b91505092915050565b6000819050919050565b6000613b80613b7b613b7684613b5b565b612e2c565b612d80565b9050919050565b613b9081613b65565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bcb81612bc1565b82525050565b6000613bdd8383613bc2565b60208301905092915050565b6000602082019050919050565b6000613c0182613b96565b613c0b8185613ba1565b9350613c1683613bb2565b8060005b83811015613c47578151613c2e8882613bd1565b9750613c3983613be9565b925050600181019050613c1a565b5085935050505092915050565b600060a082019050613c696000830188612ea6565b613c766020830187613b87565b8181036040830152613c888186613bf6565b9050613c976060830185612f5a565b613ca46080830184612ea6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ce4601b83612cea565b9150613cef82613cae565b602082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d76602183612cea565b9150613d8182613d1a565b604082019050919050565b60006020820190508181036000830152613da581613d69565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ade394d2c097399268dd79cb886a86c1af45d5ea2965783581e7b04325b7a29f64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f04614610628578063dd62ed3e14610651578063ea1644d51461068e578063f2fde38b146106b7576101cc565b8063a2a957bb1461056e578063a9059cbb14610597578063bfd79284146105d4578063c3c8cd8014610611576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f9a55c0146104ef57806395d89b411461051a57806398a5c31514610545576101cc565b806374010ece146104335780637d1db4a51461045c5780637f2feddc14610487576101cc565b8063313ce567116101645780636d8aa8f81161013e5780636d8aa8f81461039f5780636fc3eaec146103c857806370a08231146103df578063715018a61461041c576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636b99905314610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612c96565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612d5e565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612db6565b610847565b6040516102599190612e11565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612e8b565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612eb5565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612ed0565b6108a1565b6040516102ec9190612e11565b60405180910390f35b34801561030157600080fd5b5061030a61097a565b6040516103179190612eb5565b60405180910390f35b34801561032c57600080fd5b50610335610980565b6040516103429190612f3f565b60405180910390f35b34801561035757600080fd5b50610360610989565b60405161036d9190612f69565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612f84565b6109af565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190612fdd565b610a9f565b005b3480156103d457600080fd5b506103dd610b51565b005b3480156103eb57600080fd5b5061040660048036038101906104019190612f84565b610b62565b6040516104139190612eb5565b60405180910390f35b34801561042857600080fd5b50610431610bb3565b005b34801561043f57600080fd5b5061045a6004803603810190610455919061300a565b610d06565b005b34801561046857600080fd5b50610471610e29565b60405161047e9190612eb5565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612f84565b610e2f565b6040516104bb9190612eb5565b60405180910390f35b3480156104d057600080fd5b506104d9610e47565b6040516104e69190612f69565b60405180910390f35b3480156104fb57600080fd5b50610504610e70565b6040516105119190612eb5565b60405180910390f35b34801561052657600080fd5b5061052f610e76565b60405161053c9190612d5e565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061300a565b610eb3565b005b34801561057a57600080fd5b5061059560048036038101906105909190613037565b610f52565b005b3480156105a357600080fd5b506105be60048036038101906105b99190612db6565b611076565b6040516105cb9190612e11565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f69190612f84565b611094565b6040516106089190612e11565b60405180910390f35b34801561061d57600080fd5b506106266110b4565b005b34801561063457600080fd5b5061064f600480360381019061064a91906130f9565b6110cd565b005b34801561065d57600080fd5b5061067860048036038101906106739190613159565b611207565b6040516106859190612eb5565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b0919061300a565b61128e565b005b3480156106c357600080fd5b506106de60048036038101906106d99190612f84565b6113b1565b005b6106e8611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c906131e5565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a57610799613205565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe90613263565b915050610778565b5050565b60606040518060400160405280600f81526020017f434152494c4c4f4e49554d20322e300000000000000000000000000000000000815250905090565b600061085b610854611572565b848461157a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006d14bddab3e51a57cff87a50000000905090565b60006108ae848484611743565b61096f846108ba611572565b61096a85604051806060016040528060288152602001613dad60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610920611572565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fe49092919063ffffffff16565b61157a565b600190509392505050565b60185481565b60006012905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b7611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b906131e5565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa7611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b906131e5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610b5f81612048565b50565b6000610bac600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b4565b9050919050565b610bbb611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f906131e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d0e611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d92906131e5565b60405180910390fd5b6064816d14bddab3e51a57cff87a50000000610db791906132ab565b610dc1919061331c565b60168190555060646d14bddab3e51a57cff87a50000000610de2919061331c565b6016541015610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90613399565b60405180910390fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600881526020017f4341524f4d322e30000000000000000000000000000000000000000000000000815250905090565b610ebb611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f906131e5565b60405180910390fd5b8060188190555050565b610f5a611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde906131e5565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506014600b54600954600a5460085461101b91906133b9565b61102591906133b9565b61102f91906133b9565b1115611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613439565b60405180910390fd5b50505050565b600061108a611083611572565b8484611743565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b60006110bf30610b62565b90506110ca81612122565b50565b6110d5611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906131e5565b60405180910390fd5b60005b8383905081101561120157816005600086868581811061118857611187613205565b5b905060200201602081019061119d9190612f84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111f990613263565b915050611165565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611296611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a906131e5565b60405180910390fd5b6064816d14bddab3e51a57cff87a5000000061133f91906132ab565b611349919061331c565b60178190555060646d14bddab3e51a57cff87a5000000061136a919061331c565b60175410156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906134a5565b60405180910390fd5b50565b6113b9611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906131e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac90613537565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906135c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f9061365b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117369190612eb5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906136ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061377f565b60405180910390fd5b60008111611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613811565b60405180910390fd5b61186c610e47565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118da57506118aa610e47565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ce357601560149054906101000a900460ff16611969576118fb610e47565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906138a3565b60405180910390fd5b5b6016548111156119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a59061390f565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a525750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a88906139a1565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b3e5760175481611af384610b62565b611afd91906133b9565b10611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613a33565b60405180910390fd5b5b6000611b4930610b62565b905060006018548210159050600a601854611b6491906132ab565b8210611b7c57600a601854611b7991906132ab565b91505b808015611b94575060158054906101000a900460ff16155b8015611bee5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c065750601560169054906101000a900460ff165b8015611c5c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cb25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce057611cc082612122565b600047905066b1a2bc2ec50000811115611cde57611cdd47612048565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d8a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e3d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e4b5760009050611fd2565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ef65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0e57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fb95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fd157600a54600c81905550600b54600d819055505b5b611fde84848484612399565b50505050565b600083831115829061202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120239190612d5e565b60405180910390fd5b506000838561203b9190613a53565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120b0573d6000803e3d6000fd5b5050565b60006006548211156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290613af9565b60405180910390fd5b60006121056123c6565b905061211a81846123f190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561215957612158612af5565b5b6040519080825280602002602001820160405280156121875781602001602082028036833780820191505090505b509050308160008151811061219f5761219e613205565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226a9190613b2e565b8160018151811061227e5761227d613205565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122e530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461157a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612349959493929190613c54565b600060405180830381600087803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123a7576123a661243b565b5b6123b2848484612478565b806123c0576123bf612643565b5b50505050565b60008060006123d3612657565b915091506123ea81836123f190919063ffffffff16565b9250505090565b600061243383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c8565b905092915050565b6000600c5414801561244f57506000600d54145b61247657600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061248a8761272b565b9550955095509550955095506124e886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c98161283b565b6125d384836128f8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126309190612eb5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006d14bddab3e51a57cff87a5000000090506126976d14bddab3e51a57cff87a500000006006546123f190919063ffffffff16565b8210156126bb576006546d14bddab3e51a57cff87a500000009350935050506126c4565b81819350935050505b9091565b6000808311829061270f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127069190612d5e565b60405180910390fd5b506000838561271e919061331c565b9050809150509392505050565b60008060008060008060008060006127488a600c54600d54612932565b92509250925060006127586123c6565b9050600080600061276b8e8787876129c8565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe4565b905092915050565b60008082846127ec91906133b9565b905083811015612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890613cfa565b60405180910390fd5b8091505092915050565b60006128456123c6565b9050600061285c8284612a5190919063ffffffff16565b90506128b081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61290d8260065461279390919063ffffffff16565b600681905550612928816007546127dd90919063ffffffff16565b6007819055505050565b60008060008061295e6064612950888a612a5190919063ffffffff16565b6123f190919063ffffffff16565b90506000612988606461297a888b612a5190919063ffffffff16565b6123f190919063ffffffff16565b905060006129b1826129a3858c61279390919063ffffffff16565b61279390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129e18589612a5190919063ffffffff16565b905060006129f88689612a5190919063ffffffff16565b90506000612a0f8789612a5190919063ffffffff16565b90506000612a3882612a2a858761279390919063ffffffff16565b61279390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a635760009050612ac5565b60008284612a7191906132ab565b9050828482612a80919061331c565b14612ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab790613d8c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2d82612ae4565b810181811067ffffffffffffffff82111715612b4c57612b4b612af5565b5b80604052505050565b6000612b5f612acb565b9050612b6b8282612b24565b919050565b600067ffffffffffffffff821115612b8b57612b8a612af5565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bcc82612ba1565b9050919050565b612bdc81612bc1565b8114612be757600080fd5b50565b600081359050612bf981612bd3565b92915050565b6000612c12612c0d84612b70565b612b55565b90508083825260208201905060208402830185811115612c3557612c34612b9c565b5b835b81811015612c5e5780612c4a8882612bea565b845260208401935050602081019050612c37565b5050509392505050565b600082601f830112612c7d57612c7c612adf565b5b8135612c8d848260208601612bff565b91505092915050565b600060208284031215612cac57612cab612ad5565b5b600082013567ffffffffffffffff811115612cca57612cc9612ada565b5b612cd684828501612c68565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d19578082015181840152602081019050612cfe565b60008484015250505050565b6000612d3082612cdf565b612d3a8185612cea565b9350612d4a818560208601612cfb565b612d5381612ae4565b840191505092915050565b60006020820190508181036000830152612d788184612d25565b905092915050565b6000819050919050565b612d9381612d80565b8114612d9e57600080fd5b50565b600081359050612db081612d8a565b92915050565b60008060408385031215612dcd57612dcc612ad5565b5b6000612ddb85828601612bea565b9250506020612dec85828601612da1565b9150509250929050565b60008115159050919050565b612e0b81612df6565b82525050565b6000602082019050612e266000830184612e02565b92915050565b6000819050919050565b6000612e51612e4c612e4784612ba1565b612e2c565b612ba1565b9050919050565b6000612e6382612e36565b9050919050565b6000612e7582612e58565b9050919050565b612e8581612e6a565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b612eaf81612d80565b82525050565b6000602082019050612eca6000830184612ea6565b92915050565b600080600060608486031215612ee957612ee8612ad5565b5b6000612ef786828701612bea565b9350506020612f0886828701612bea565b9250506040612f1986828701612da1565b9150509250925092565b600060ff82169050919050565b612f3981612f23565b82525050565b6000602082019050612f546000830184612f30565b92915050565b612f6381612bc1565b82525050565b6000602082019050612f7e6000830184612f5a565b92915050565b600060208284031215612f9a57612f99612ad5565b5b6000612fa884828501612bea565b91505092915050565b612fba81612df6565b8114612fc557600080fd5b50565b600081359050612fd781612fb1565b92915050565b600060208284031215612ff357612ff2612ad5565b5b600061300184828501612fc8565b91505092915050565b6000602082840312156130205761301f612ad5565b5b600061302e84828501612da1565b91505092915050565b6000806000806080858703121561305157613050612ad5565b5b600061305f87828801612da1565b945050602061307087828801612da1565b935050604061308187828801612da1565b925050606061309287828801612da1565b91505092959194509250565b600080fd5b60008083601f8401126130b9576130b8612adf565b5b8235905067ffffffffffffffff8111156130d6576130d561309e565b5b6020830191508360208202830111156130f2576130f1612b9c565b5b9250929050565b60008060006040848603121561311257613111612ad5565b5b600084013567ffffffffffffffff8111156131305761312f612ada565b5b61313c868287016130a3565b9350935050602061314f86828701612fc8565b9150509250925092565b600080604083850312156131705761316f612ad5565b5b600061317e85828601612bea565b925050602061318f85828601612bea565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131cf602083612cea565b91506131da82613199565b602082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061326e82612d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132a05761329f613234565b5b600182019050919050565b60006132b682612d80565b91506132c183612d80565b92508282026132cf81612d80565b915082820484148315176132e6576132e5613234565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061332782612d80565b915061333283612d80565b925082613342576133416132ed565b5b828204905092915050565b7f4d6178205478206d757374206265206d6f7265207468616e2031250000000000600082015250565b6000613383601b83612cea565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b60006133c482612d80565b91506133cf83612d80565b92508282019050808211156133e7576133e6613234565b5b92915050565b7f546f74616c204665652073686f756c64206265206c657373207468616e203230600082015250565b6000613423602083612cea565b915061342e826133ed565b602082019050919050565b6000602082019050818103600083015261345281613416565b9050919050565b7f4d61782057616c6c6574206d757374206265206d6f7265207468616e20312500600082015250565b600061348f601f83612cea565b915061349a82613459565b602082019050919050565b600060208201905081810360008301526134be81613482565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613521602683612cea565b915061352c826134c5565b604082019050919050565b6000602082019050818103600083015261355081613514565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135b3602483612cea565b91506135be82613557565b604082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613645602283612cea565b9150613650826135e9565b604082019050919050565b6000602082019050818103600083015261367481613638565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136d7602583612cea565b91506136e28261367b565b604082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613769602383612cea565b91506137748261370d565b604082019050919050565b600060208201905081810360008301526137988161375c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137fb602983612cea565b91506138068261379f565b604082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061388d603f83612cea565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138f9601c83612cea565b9150613904826138c3565b602082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061398b602383612cea565b91506139968261392f565b604082019050919050565b600060208201905081810360008301526139ba8161397e565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a1d602383612cea565b9150613a28826139c1565b604082019050919050565b60006020820190508181036000830152613a4c81613a10565b9050919050565b6000613a5e82612d80565b9150613a6983612d80565b9250828203905081811115613a8157613a80613234565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613ae3602a83612cea565b9150613aee82613a87565b604082019050919050565b60006020820190508181036000830152613b1281613ad6565b9050919050565b600081519050613b2881612bd3565b92915050565b600060208284031215613b4457613b43612ad5565b5b6000613b5284828501613b19565b91505092915050565b6000819050919050565b6000613b80613b7b613b7684613b5b565b612e2c565b612d80565b9050919050565b613b9081613b65565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bcb81612bc1565b82525050565b6000613bdd8383613bc2565b60208301905092915050565b6000602082019050919050565b6000613c0182613b96565b613c0b8185613ba1565b9350613c1683613bb2565b8060005b83811015613c47578151613c2e8882613bd1565b9750613c3983613be9565b925050600181019050613c1a565b5085935050505092915050565b600060a082019050613c696000830188612ea6565b613c766020830187613b87565b8181036040830152613c888186613bf6565b9050613c976060830185612f5a565b613ca46080830184612ea6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ce4601b83612cea565b9150613cef82613cae565b602082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d76602183612cea565b9150613d8182613d1a565b604082019050919050565b60006020820190508181036000830152613da581613d69565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ade394d2c097399268dd79cb886a86c1af45d5ea2965783581e7b04325b7a29f64736f6c63430008120033

Deployed Bytecode Sourcemap

4252:13604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12723:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6808:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7733:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5656:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7085:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7934:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5953:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6994:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5704:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12900:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17051:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12572:143;;;;;;;;;;;;;:::i;:::-;;7188:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1739:148;;;;;;;;;;;;;:::i;:::-;;17191:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5853:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5398:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1525:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5897:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6899:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16860:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16398:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7334:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5360:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12420:144;;;;;;;;;;;;;:::i;:::-;;17617:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7541:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17397:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12723:169;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12799:9:::1;12794:91;12818:5;:12;12814:1;:16;12794:91;;;12869:4;12852;:14;12857:5;12863:1;12857:8;;;;;;;;:::i;:::-;;;;;;;;12852:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12832:3;;;;;:::i;:::-;;;;12794:91;;;;12723:169:::0;:::o;6808:83::-;6845:13;6878:5;;;;;;;;;;;;;;;;;6871:12;;6808:83;:::o;7733:193::-;7835:4;7857:39;7866:12;:10;:12::i;:::-;7880:7;7889:6;7857:8;:39::i;:::-;7914:4;7907:11;;7733:193;;;;:::o;5656:41::-;;;;;;;;;;;;;:::o;7085:95::-;7138:7;4810:24;7158:14;;7085:95;:::o;7934:446::-;8066:4;8083:36;8093:6;8101:9;8112:6;8083:9;:36::i;:::-;8130:220;8153:6;8174:12;:10;:12::i;:::-;8201:138;8257:6;8201:138;;;;;;;;;;;;;;;;;:11;:19;8213:6;8201:19;;;;;;;;;;;;;;;:33;8221:12;:10;:12::i;:::-;8201:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8130:8;:220::i;:::-;8368:4;8361:11;;7934:446;;;;;:::o;5953:55::-;;;;:::o;6994:83::-;7035:5;4483:2;7053:16;;6994:83;:::o;5704:28::-;;;;;;;;;;;;;:::o;12900:92::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12979:5:::1;12964:4;:12;12969:6;12964:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12900:92:::0;:::o;17051:101::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17132:12:::1;17118:11;;:26;;;;;;;;;;;;;;;;;;17051:101:::0;:::o;12572:143::-;12614:26;12643:21;12614:50;;12675:32;12688:18;12675:12;:32::i;:::-;12603:112;12572:143::o;7188:138::-;7254:7;7281:37;7301:7;:16;7309:7;7301:16;;;;;;;;;;;;;;;;7281:19;:37::i;:::-;7274:44;;7188:138;;;:::o;1739:148::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1846:1:::1;1809:40;;1830:6;::::0;::::1;;;;;;;;1809:40;;;;;;;;;;;;1877:1;1860:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1739:148::o:0;17191:198::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17300:3:::1;17288:11;4810:24;17280:19;;;;:::i;:::-;:23;;;;:::i;:::-;17265:12;:38;;;;17347:3;4810:24;17339:11;;;;:::i;:::-;17323:12;;:27;;17314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17191:198:::0;:::o;5853:37::-;;;;:::o;5398:43::-;;;;;;;;;;;;;;;;;:::o;1525:79::-;1563:7;1590:6;;;;;;;;;;;1583:13;;1525:79;:::o;5897:49::-;;;;:::o;6899:87::-;6938:13;6971:7;;;;;;;;;;;;;;;;;6964:14;;6899:87;:::o;16860:139::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16973:18:::1;16951:19;:40;;;;16860:139:::0;:::o;16398:410::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16549:13:::1;16532:14;:30;;;;16591:14;16573:15;:32;;;;16631:11;16616:12;:26;;;;16669:12;16653:13;:28;;;;16762:2;16745:13;;16732:12;;16716:15;;16701:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16692:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;16398:410:::0;;;;:::o;7334:199::-;7439:4;7461:42;7471:12;:10;:12::i;:::-;7485:9;7496:6;7461:9;:42::i;:::-;7521:4;7514:11;;7334:199;;;;:::o;5360:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12420:144::-;12462:23;12488:24;12506:4;12488:9;:24::i;:::-;12462:50;;12523:33;12540:15;12523:16;:33::i;:::-;12451:113;12420:144::o;17617:234::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17734:9:::1;17730:114;17753:8;;:15;;17749:1;:19;17730:114;;;17824:8;17790:18;:31;17809:8;;17818:1;17809:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17790:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17770:3;;;;;:::i;:::-;;;;17730:114;;;;17617:234:::0;;;:::o;7541:184::-;7658:7;7690:11;:18;7702:5;7690:18;;;;;;;;;;;;;;;:27;7709:7;7690:27;;;;;;;;;;;;;;;;7683:34;;7541:184;;;;:::o;17397:212::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17513:3:::1;17499:13;4810:24;17491:21;;;;:::i;:::-;:25;;;;:::i;:::-;17474:14;:42;;;;17563:3;4810:24;17555:11;;;;:::i;:::-;17537:14;;:29;;17528:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17397:212:::0;:::o;1895:244::-;1662:12;:10;:12::i;:::-;1652:22;;:6;;;;;;;;;;:22;;;1644:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:1:::1;1984:22;;:8;:22;;::::0;1976:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2094:8;2065:38;;2086:6;::::0;::::1;;;;;;;;2065:38;;;;;;;;;;;;2123:8;2114:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1895:244:::0;:::o;284:98::-;337:7;364:10;357:17;;284:98;:::o;9071:369::-;9215:1;9198:19;;:5;:19;;;9190:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9296:1;9277:21;;:7;:21;;;9269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9378:6;9348:11;:18;9360:5;9348:18;;;;;;;;;;;;;;;:27;9367:7;9348:27;;;;;;;;;;;;;;;:36;;;;9416:7;9400:32;;9409:5;9400:32;;;9425:6;9400:32;;;;;;:::i;:::-;;;;;;;;9071:369;;;:::o;9448:2366::-;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;:::-;;;;;;;;;9805:7;:5;:7::i;:::-;9797:15;;:4;:15;;;;:32;;;;;9822:7;:5;:7::i;:::-;9816:13;;:2;:13;;;;9797:32;9793:1295;;;9886:11;;;;;;;;;;;9881:144;;9934:7;:5;:7::i;:::-;9926:15;;:4;:15;;;9918:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9881:144;10059:12;;10049:6;:22;;10041:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10128:4;:10;10133:4;10128:10;;;;;;;;;;;;;;;;;;;;;;;;;10127:11;:24;;;;;10143:4;:8;10148:2;10143:8;;;;;;;;;;;;;;;;;;;;;;;;;10142:9;10127:24;10119:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10217:13;;;;;;;;;;;10211:19;;:2;:19;;;10208:146;;10284:14;;10275:6;10259:13;10269:2;10259:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10251:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10208:146;10370:28;10401:24;10419:4;10401:9;:24::i;:::-;10370:55;;10440:12;10479:19;;10455:20;:43;;10440:58;;10562:2;10542:19;;:22;;;;:::i;:::-;10518:20;:46;10515:144;;10641:2;10621:19;;:22;;;;:::i;:::-;10598:45;;10515:144;10679:7;:18;;;;;10691:6;;;;;;;;;;10690:7;10679:18;:43;;;;;10709:13;;;;;;;;;;;10701:21;;:4;:21;;;;10679:43;:58;;;;;10726:11;;;;;;;;;;;10679:58;:87;;;;;10742:18;:24;10761:4;10742:24;;;;;;;;;;;;;;;;;;;;;;;;;10741:25;10679:87;:114;;;;;10771:18;:22;10790:2;10771:22;;;;;;;;;;;;;;;;;;;;;;;;;10770:23;10679:114;10675:402;;;10814:38;10831:20;10814:16;:38::i;:::-;10871:26;10900:21;10871:50;;10965:17;10944:18;:38;10940:122;;;11007:35;11020:21;11007:12;:35::i;:::-;10940:122;10795:282;10675:402;9831:1257;;9793:1295;11100:12;11115:4;11100:19;;11164:18;:24;11183:4;11164:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11192:18;:22;11211:2;11192:22;;;;;;;;;;;;;;;;;;;;;;;;;11164:50;11163:102;;;;11228:13;;;;;;;;;;;11220:21;;:4;:21;;;;:44;;;;;11251:13;;;;;;;;;;;11245:19;;:2;:19;;;;11220:44;11163:102;11159:594;;;11292:5;11282:15;;11159:594;;;11375:13;;;;;;;;;;;11367:21;;:4;:21;;;:55;;;;;11406:15;;;;;;;;;;;11392:30;;:2;:30;;;;11367:55;11364:162;;;11455:14;;11443:9;:26;;;;11498:12;;11488:7;:22;;;;11364:162;11585:13;;;;;;;;;;;11579:19;;:2;:19;;;:55;;;;;11618:15;;;;;;;;;;;11602:32;;:4;:32;;;;11579:55;11575:165;;;11667:15;;11655:9;:27;;;;11711:13;;11701:7;:23;;;;11575:165;11159:594;11765:41;11780:4;11786:2;11790:6;11798:7;11765:14;:41::i;:::-;9551:2263;9448:2366;;;:::o;2503:224::-;2623:7;2656:1;2651;:6;;2659:12;2643:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2683:9;2699:1;2695;:5;;;;:::i;:::-;2683:17;;2718:1;2711:8;;;2503:224;;;;;:::o;12313:99::-;12370:17;;;;;;;;;;;:26;;:34;12397:6;12370:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12313:99;:::o;8388:323::-;8483:7;8541;;8530;:18;;8508:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8629:19;8651:10;:8;:10::i;:::-;8629:32;;8679:24;8691:11;8679:7;:11;;:24;;;;:::i;:::-;8672:31;;;8388:323;;;:::o;11822:483::-;6111:4;6102:6;;:13;;;;;;;;;;;;;;;;;;11900:21:::1;11938:1;11924:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11900:40;;11969:4;11951;11956:1;11951:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11995:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11985:4;11990:1;11985:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12028:62;12045:4;12060:15;;;;;;;;;;;12078:11;12028:8;:62::i;:::-;12101:15;;;;;;;;;;;:66;;;12182:11;12208:1;12224:4;12251;12271:15;12101:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11889:416;6147:5:::0;6138:6;;:14;;;;;;;;;;;;;;;;;;11822:483;:::o;13000:282::-;13156:7;13151:28;;13165:14;:12;:14::i;:::-;13151:28;13190:44;13208:6;13216:9;13227:6;13190:17;:44::i;:::-;13250:7;13245:29;;13259:15;:13;:15::i;:::-;13245:29;13000:282;;;;:::o;15961:164::-;16003:7;16024:15;16041;16060:19;:17;:19::i;:::-;16023:56;;;;16097:20;16109:7;16097;:11;;:20;;;;:::i;:::-;16090:27;;;;15961:164;:::o;2989:132::-;3047:7;3074:39;3078:1;3081;3074:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3067:46;;2989:132;;;;:::o;8719:219::-;8779:1;8766:9;;:14;:30;;;;;8795:1;8784:7;;:12;8766:30;8798:7;8762:43;8837:9;;8817:17;:29;;;;8875:7;;8857:15;:25;;;;8907:1;8895:9;:13;;;;8929:1;8919:7;:11;;;;8719:219;:::o;13290:610::-;13437:15;13467:23;13505:12;13532:23;13570:12;13597:13;13624:19;13635:7;13624:10;:19::i;:::-;13422:221;;;;;;;;;;;;13672:28;13692:7;13672;:15;13680:6;13672:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13654:7;:15;13662:6;13654:15;;;;;;;;;;;;;;;:46;;;;13732:39;13755:15;13732:7;:18;13740:9;13732:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13711:7;:18;13719:9;13711:18;;;;;;;;;;;;;;;:60;;;;13782:16;13792:5;13782:9;:16::i;:::-;13809:23;13821:4;13827;13809:11;:23::i;:::-;13865:9;13848:44;;13857:6;13848:44;;;13876:15;13848:44;;;;;;:::i;:::-;;;;;;;;13411:489;;;;;;13290:610;;;:::o;8946:117::-;9002:17;;8990:9;:29;;;;9040:15;;9030:7;:25;;;;8946:117::o;16133:257::-;16184:7;16193;16213:15;16231:7;;16213:25;;16249:15;4810:24;16249:25;;16299:20;4810:24;16299:7;;:11;;:20;;;;:::i;:::-;16289:7;:30;16285:61;;;16329:7;;4810:24;16321:25;;;;;;;;16285:61;16365:7;16374;16357:25;;;;;;16133:257;;;:::o;3129:223::-;3249:7;3281:1;3277;:5;3284:12;3269:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3308:9;3324:1;3320;:5;;;;:::i;:::-;3308:17;;3343:1;3336:8;;;3129:223;;;;;:::o;14319:615::-;14419:7;14441;14463;14485;14507;14529;14565:23;14590:12;14604:13;14634:40;14646:7;14655:9;;14666:7;;14634:11;:40::i;:::-;14564:110;;;;;;14685:19;14707:10;:8;:10::i;:::-;14685:32;;14729:15;14746:23;14771:12;14800:46;14812:7;14821:4;14827:5;14834:11;14800;:46::i;:::-;14728:118;;;;;;14865:7;14874:15;14891:4;14897:15;14914:4;14920:5;14857:69;;;;;;;;;;;;;;;;;;;14319:615;;;;;;;:::o;2359:136::-;2417:7;2444:43;2448:1;2451;2444:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2437:50;;2359:136;;;;:::o;2172:179::-;2230:7;2250:9;2266:1;2262;:5;;;;:::i;:::-;2250:17;;2291:1;2286;:6;;2278:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2342:1;2335:8;;;2172:179;;;;:::o;13908:211::-;13961:19;13983:10;:8;:10::i;:::-;13961:32;;14004:13;14020:22;14030:11;14020:5;:9;;:22;;;;:::i;:::-;14004:38;;14078:33;14105:5;14078:7;:22;14094:4;14078:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14053:7;:22;14069:4;14053:22;;;;;;;;;;;;;;;:58;;;;13950:169;;13908:211;:::o;14127:147::-;14205:17;14217:4;14205:7;;:11;;:17;;;;:::i;:::-;14195:7;:27;;;;14246:20;14261:4;14246:10;;:14;;:20;;;;:::i;:::-;14233:10;:33;;;;14127:147;;:::o;14942:469::-;15111:7;15133;15155;15190:12;15205:30;15231:3;15205:21;15217:8;15205:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15190:45;;15246:13;15262:28;15286:3;15262:19;15274:6;15262:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15246:44;;15301:23;15327:28;15349:5;15327:17;15339:4;15327:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15301:54;;15374:15;15391:4;15397:5;15366:37;;;;;;;;;14942:469;;;;;;;:::o;15419:534::-;15613:7;15635;15657;15692:15;15710:24;15722:11;15710:7;:11;;:24;;;;:::i;:::-;15692:42;;15745:12;15760:21;15769:11;15760:4;:8;;:21;;;;:::i;:::-;15745:36;;15792:13;15808:22;15818:11;15808:5;:9;;:22;;;;:::i;:::-;15792:38;;15841:23;15867:28;15889:5;15867:17;15879:4;15867:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15841:54;;15914:7;15923:15;15940:4;15906:39;;;;;;;;;;15419:534;;;;;;;;:::o;2735:246::-;2793:7;2822:1;2817;:6;2813:47;;2847:1;2840:8;;;;2813:47;2870:9;2886:1;2882;:5;;;;:::i;:::-;2870:17;;2915:1;2910;2906;:5;;;;:::i;:::-;:10;2898:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2972:1;2965:8;;;2735:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:233;14345:3;14368:24;14386:5;14368:24;:::i;:::-;14359:33;;14414:66;14407:5;14404:77;14401:103;;14484:18;;:::i;:::-;14401:103;14531:1;14524:5;14520:13;14513:20;;14306:233;;;:::o;14545:410::-;14585:7;14608:20;14626:1;14608:20;:::i;:::-;14603:25;;14642:20;14660:1;14642:20;:::i;:::-;14637:25;;14697:1;14694;14690:9;14719:30;14737:11;14719:30;:::i;:::-;14708:41;;14898:1;14889:7;14885:15;14882:1;14879:22;14859:1;14852:9;14832:83;14809:139;;14928:18;;:::i;:::-;14809:139;14593:362;14545:410;;;;:::o;14961:180::-;15009:77;15006:1;14999:88;15106:4;15103:1;15096:15;15130:4;15127:1;15120:15;15147:185;15187:1;15204:20;15222:1;15204:20;:::i;:::-;15199:25;;15238:20;15256:1;15238:20;:::i;:::-;15233:25;;15277:1;15267:35;;15282:18;;:::i;:::-;15267:35;15324:1;15321;15317:9;15312:14;;15147:185;;;;:::o;15338:177::-;15478:29;15474:1;15466:6;15462:14;15455:53;15338:177;:::o;15521:366::-;15663:3;15684:67;15748:2;15743:3;15684:67;:::i;:::-;15677:74;;15760:93;15849:3;15760:93;:::i;:::-;15878:2;15873:3;15869:12;15862:19;;15521:366;;;:::o;15893:419::-;16059:4;16097:2;16086:9;16082:18;16074:26;;16146:9;16140:4;16136:20;16132:1;16121:9;16117:17;16110:47;16174:131;16300:4;16174:131;:::i;:::-;16166:139;;15893:419;;;:::o;16318:191::-;16358:3;16377:20;16395:1;16377:20;:::i;:::-;16372:25;;16411:20;16429:1;16411:20;:::i;:::-;16406:25;;16454:1;16451;16447:9;16440:16;;16475:3;16472:1;16469:10;16466:36;;;16482:18;;:::i;:::-;16466:36;16318:191;;;;:::o;16515:182::-;16655:34;16651:1;16643:6;16639:14;16632:58;16515:182;:::o;16703:366::-;16845:3;16866:67;16930:2;16925:3;16866:67;:::i;:::-;16859:74;;16942:93;17031:3;16942:93;:::i;:::-;17060:2;17055:3;17051:12;17044:19;;16703:366;;;:::o;17075:419::-;17241:4;17279:2;17268:9;17264:18;17256:26;;17328:9;17322:4;17318:20;17314:1;17303:9;17299:17;17292:47;17356:131;17482:4;17356:131;:::i;:::-;17348:139;;17075:419;;;:::o;17500:181::-;17640:33;17636:1;17628:6;17624:14;17617:57;17500:181;:::o;17687:366::-;17829:3;17850:67;17914:2;17909:3;17850:67;:::i;:::-;17843:74;;17926:93;18015:3;17926:93;:::i;:::-;18044:2;18039:3;18035:12;18028:19;;17687:366;;;:::o;18059:419::-;18225:4;18263:2;18252:9;18248:18;18240:26;;18312:9;18306:4;18302:20;18298:1;18287:9;18283:17;18276:47;18340:131;18466:4;18340:131;:::i;:::-;18332:139;;18059:419;;;:::o;18484:225::-;18624:34;18620:1;18612:6;18608:14;18601:58;18693:8;18688:2;18680:6;18676:15;18669:33;18484:225;:::o;18715:366::-;18857:3;18878:67;18942:2;18937:3;18878:67;:::i;:::-;18871:74;;18954:93;19043:3;18954:93;:::i;:::-;19072:2;19067:3;19063:12;19056:19;;18715:366;;;:::o;19087:419::-;19253:4;19291:2;19280:9;19276:18;19268:26;;19340:9;19334:4;19330:20;19326:1;19315:9;19311:17;19304:47;19368:131;19494:4;19368:131;:::i;:::-;19360:139;;19087:419;;;:::o;19512:223::-;19652:34;19648:1;19640:6;19636:14;19629:58;19721:6;19716:2;19708:6;19704:15;19697:31;19512:223;:::o;19741:366::-;19883:3;19904:67;19968:2;19963:3;19904:67;:::i;:::-;19897:74;;19980:93;20069:3;19980:93;:::i;:::-;20098:2;20093:3;20089:12;20082:19;;19741:366;;;:::o;20113:419::-;20279:4;20317:2;20306:9;20302:18;20294:26;;20366:9;20360:4;20356:20;20352:1;20341:9;20337:17;20330:47;20394:131;20520:4;20394:131;:::i;:::-;20386:139;;20113:419;;;:::o;20538:221::-;20678:34;20674:1;20666:6;20662:14;20655:58;20747:4;20742:2;20734:6;20730:15;20723:29;20538:221;:::o;20765:366::-;20907:3;20928:67;20992:2;20987:3;20928:67;:::i;:::-;20921:74;;21004:93;21093:3;21004:93;:::i;:::-;21122:2;21117:3;21113:12;21106:19;;20765:366;;;:::o;21137:419::-;21303:4;21341:2;21330:9;21326:18;21318:26;;21390:9;21384:4;21380:20;21376:1;21365:9;21361:17;21354:47;21418:131;21544:4;21418:131;:::i;:::-;21410:139;;21137:419;;;:::o;21562:224::-;21702:34;21698:1;21690:6;21686:14;21679:58;21771:7;21766:2;21758:6;21754:15;21747:32;21562:224;:::o;21792:366::-;21934:3;21955:67;22019:2;22014:3;21955:67;:::i;:::-;21948:74;;22031:93;22120:3;22031:93;:::i;:::-;22149:2;22144:3;22140:12;22133:19;;21792:366;;;:::o;22164:419::-;22330:4;22368:2;22357:9;22353:18;22345:26;;22417:9;22411:4;22407:20;22403:1;22392:9;22388:17;22381:47;22445:131;22571:4;22445:131;:::i;:::-;22437:139;;22164:419;;;:::o;22589:222::-;22729:34;22725:1;22717:6;22713:14;22706:58;22798:5;22793:2;22785:6;22781:15;22774:30;22589:222;:::o;22817:366::-;22959:3;22980:67;23044:2;23039:3;22980:67;:::i;:::-;22973:74;;23056:93;23145:3;23056:93;:::i;:::-;23174:2;23169:3;23165:12;23158:19;;22817:366;;;:::o;23189:419::-;23355:4;23393:2;23382:9;23378:18;23370:26;;23442:9;23436:4;23432:20;23428:1;23417:9;23413:17;23406:47;23470:131;23596:4;23470:131;:::i;:::-;23462:139;;23189:419;;;:::o;23614:228::-;23754:34;23750:1;23742:6;23738:14;23731:58;23823:11;23818:2;23810:6;23806:15;23799:36;23614:228;:::o;23848:366::-;23990:3;24011:67;24075:2;24070:3;24011:67;:::i;:::-;24004:74;;24087:93;24176:3;24087:93;:::i;:::-;24205:2;24200:3;24196:12;24189:19;;23848:366;;;:::o;24220:419::-;24386:4;24424:2;24413:9;24409:18;24401:26;;24473:9;24467:4;24463:20;24459:1;24448:9;24444:17;24437:47;24501:131;24627:4;24501:131;:::i;:::-;24493:139;;24220:419;;;:::o;24645:250::-;24785:34;24781:1;24773:6;24769:14;24762:58;24854:33;24849:2;24841:6;24837:15;24830:58;24645:250;:::o;24901:366::-;25043:3;25064:67;25128:2;25123:3;25064:67;:::i;:::-;25057:74;;25140:93;25229:3;25140:93;:::i;:::-;25258:2;25253:3;25249:12;25242:19;;24901:366;;;:::o;25273:419::-;25439:4;25477:2;25466:9;25462:18;25454:26;;25526:9;25520:4;25516:20;25512:1;25501:9;25497:17;25490:47;25554:131;25680:4;25554:131;:::i;:::-;25546:139;;25273:419;;;:::o;25698:178::-;25838:30;25834:1;25826:6;25822:14;25815:54;25698:178;:::o;25882:366::-;26024:3;26045:67;26109:2;26104:3;26045:67;:::i;:::-;26038:74;;26121:93;26210:3;26121:93;:::i;:::-;26239:2;26234:3;26230:12;26223:19;;25882:366;;;:::o;26254:419::-;26420:4;26458:2;26447:9;26443:18;26435:26;;26507:9;26501:4;26497:20;26493:1;26482:9;26478:17;26471:47;26535:131;26661:4;26535:131;:::i;:::-;26527:139;;26254:419;;;:::o;26679:222::-;26819:34;26815:1;26807:6;26803:14;26796:58;26888:5;26883:2;26875:6;26871:15;26864:30;26679:222;:::o;26907:366::-;27049:3;27070:67;27134:2;27129:3;27070:67;:::i;:::-;27063:74;;27146:93;27235:3;27146:93;:::i;:::-;27264:2;27259:3;27255:12;27248:19;;26907:366;;;:::o;27279:419::-;27445:4;27483:2;27472:9;27468:18;27460:26;;27532:9;27526:4;27522:20;27518:1;27507:9;27503:17;27496:47;27560:131;27686:4;27560:131;:::i;:::-;27552:139;;27279:419;;;:::o;27704:222::-;27844:34;27840:1;27832:6;27828:14;27821:58;27913:5;27908:2;27900:6;27896:15;27889:30;27704:222;:::o;27932:366::-;28074:3;28095:67;28159:2;28154:3;28095:67;:::i;:::-;28088:74;;28171:93;28260:3;28171:93;:::i;:::-;28289:2;28284:3;28280:12;28273:19;;27932:366;;;:::o;28304:419::-;28470:4;28508:2;28497:9;28493:18;28485:26;;28557:9;28551:4;28547:20;28543:1;28532:9;28528:17;28521:47;28585:131;28711:4;28585:131;:::i;:::-;28577:139;;28304:419;;;:::o;28729:194::-;28769:4;28789:20;28807:1;28789:20;:::i;:::-;28784:25;;28823:20;28841:1;28823:20;:::i;:::-;28818:25;;28867:1;28864;28860:9;28852:17;;28891:1;28885:4;28882:11;28879:37;;;28896:18;;:::i;:::-;28879:37;28729:194;;;;:::o;28929:229::-;29069:34;29065:1;29057:6;29053:14;29046:58;29138:12;29133:2;29125:6;29121:15;29114:37;28929:229;:::o;29164:366::-;29306:3;29327:67;29391:2;29386:3;29327:67;:::i;:::-;29320:74;;29403:93;29492:3;29403:93;:::i;:::-;29521:2;29516:3;29512:12;29505:19;;29164:366;;;:::o;29536:419::-;29702:4;29740:2;29729:9;29725:18;29717:26;;29789:9;29783:4;29779:20;29775:1;29764:9;29760:17;29753:47;29817:131;29943:4;29817:131;:::i;:::-;29809:139;;29536:419;;;:::o;29961:143::-;30018:5;30049:6;30043:13;30034:22;;30065:33;30092:5;30065:33;:::i;:::-;29961:143;;;;:::o;30110:351::-;30180:6;30229:2;30217:9;30208:7;30204:23;30200:32;30197:119;;;30235:79;;:::i;:::-;30197:119;30355:1;30380:64;30436:7;30427:6;30416:9;30412:22;30380:64;:::i;:::-;30370:74;;30326:128;30110:351;;;;:::o;30467:85::-;30512:7;30541:5;30530:16;;30467:85;;;:::o;30558:158::-;30616:9;30649:61;30667:42;30676:32;30702:5;30676:32;:::i;:::-;30667:42;:::i;:::-;30649:61;:::i;:::-;30636:74;;30558:158;;;:::o;30722:147::-;30817:45;30856:5;30817:45;:::i;:::-;30812:3;30805:58;30722:147;;:::o;30875:114::-;30942:6;30976:5;30970:12;30960:22;;30875:114;;;:::o;30995:184::-;31094:11;31128:6;31123:3;31116:19;31168:4;31163:3;31159:14;31144:29;;30995:184;;;;:::o;31185:132::-;31252:4;31275:3;31267:11;;31305:4;31300:3;31296:14;31288:22;;31185:132;;;:::o;31323:108::-;31400:24;31418:5;31400:24;:::i;:::-;31395:3;31388:37;31323:108;;:::o;31437:179::-;31506:10;31527:46;31569:3;31561:6;31527:46;:::i;:::-;31605:4;31600:3;31596:14;31582:28;;31437:179;;;;:::o;31622:113::-;31692:4;31724;31719:3;31715:14;31707:22;;31622:113;;;:::o;31771:732::-;31890:3;31919:54;31967:5;31919:54;:::i;:::-;31989:86;32068:6;32063:3;31989:86;:::i;:::-;31982:93;;32099:56;32149:5;32099:56;:::i;:::-;32178:7;32209:1;32194:284;32219:6;32216:1;32213:13;32194:284;;;32295:6;32289:13;32322:63;32381:3;32366:13;32322:63;:::i;:::-;32315:70;;32408:60;32461:6;32408:60;:::i;:::-;32398:70;;32254:224;32241:1;32238;32234:9;32229:14;;32194:284;;;32198:14;32494:3;32487:10;;31895:608;;;31771:732;;;;:::o;32509:831::-;32772:4;32810:3;32799:9;32795:19;32787:27;;32824:71;32892:1;32881:9;32877:17;32868:6;32824:71;:::i;:::-;32905:80;32981:2;32970:9;32966:18;32957:6;32905:80;:::i;:::-;33032:9;33026:4;33022:20;33017:2;33006:9;33002:18;32995:48;33060:108;33163:4;33154:6;33060:108;:::i;:::-;33052:116;;33178:72;33246:2;33235:9;33231:18;33222:6;33178:72;:::i;:::-;33260:73;33328:3;33317:9;33313:19;33304:6;33260:73;:::i;:::-;32509:831;;;;;;;;:::o;33346:177::-;33486:29;33482:1;33474:6;33470:14;33463:53;33346:177;:::o;33529:366::-;33671:3;33692:67;33756:2;33751:3;33692:67;:::i;:::-;33685:74;;33768:93;33857:3;33768:93;:::i;:::-;33886:2;33881:3;33877:12;33870:19;;33529:366;;;:::o;33901:419::-;34067:4;34105:2;34094:9;34090:18;34082:26;;34154:9;34148:4;34144:20;34140:1;34129:9;34125:17;34118:47;34182:131;34308:4;34182:131;:::i;:::-;34174:139;;33901:419;;;:::o;34326:220::-;34466:34;34462:1;34454:6;34450:14;34443:58;34535:3;34530:2;34522:6;34518:15;34511:28;34326:220;:::o;34552:366::-;34694:3;34715:67;34779:2;34774:3;34715:67;:::i;:::-;34708:74;;34791:93;34880:3;34791:93;:::i;:::-;34909:2;34904:3;34900:12;34893:19;;34552:366;;;:::o;34924:419::-;35090:4;35128:2;35117:9;35113:18;35105:26;;35177:9;35171:4;35167:20;35163:1;35152:9;35148:17;35141:47;35205:131;35331:4;35205:131;:::i;:::-;35197:139;;34924:419;;;:::o

Swarm Source

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