ETH Price: $3,401.47 (-0.92%)

Token

HetProtocol (HET)
 

Overview

Max Total Supply

100,000 HET

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,150.04678345 HET

Value
$0.00
0x169ad703d891f9e18f8bf87c99e1e5486346c4ec
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:
HET

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-20
*/

// SPDX-License-Identifier: MIT

// $ETH. $TEH. Now $THE...Do you see the pattern?
// https://medium.com/@hetcoin/het-protocol-genesis-bf56f26d9b11

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract HET is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "HetProtocol";
    string private constant _symbol = "HET";
    uint8 private constant _decimals = 9;

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

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

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

    address payable private _developmentAddress = payable(0xc697cC7F7b8a7b43Fed4A4cACF1F0D5821E9b043);
    address payable private _marketingAddress = payable(0xc697cC7F7b8a7b43Fed4A4cACF1F0D5821E9b043);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy + taxFeeOnBuy <= 5, "buy fees below 5");
        require(redisFeeOnSell + taxFeeOnSell <= 5, "sell fees below 5");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

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

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize * 10**_decimals;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052655af3107a40006000196200001a91906200075e565b600019620000299190620007c5565b600655600060085560016009556000600a556001600b55600a54600c55600b54600d55600c54600e55600d54600f5573c697cc7f7b8a7b43fed4a4cacf1f0d5821e9b043601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c697cc7f7b8a7b43fed4a4cacf1f0d5821e9b043601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555060646002655af3107a40006200014f919062000800565b6200015b919062000861565b60145560026014546200016f919062000800565b60155564e8d4a510006016553480156200018857600080fd5b5060006200019b620006f460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000250620006f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000903565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003cd57600080fd5b505afa158015620003e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000408919062000903565b6040518363ffffffff1660e01b81526004016200042792919062000946565b602060405180830381600087803b1580156200044257600080fd5b505af115801562000457573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047d919062000903565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004d3620006fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000680620006f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef655af3107a4000604051620006e5919062000984565b60405180910390a350620009a1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200076b8262000725565b9150620007788362000725565b9250826200078b576200078a6200072f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d28262000725565b9150620007df8362000725565b925082821015620007f557620007f462000796565b5b828203905092915050565b60006200080d8262000725565b91506200081a8362000725565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000856576200085562000796565b5b828202905092915050565b60006200086e8262000725565b91506200087b8362000725565b9250826200088e576200088d6200072f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008cb826200089e565b9050919050565b620008dd81620008be565b8114620008e957600080fd5b50565b600081519050620008fd81620008d2565b92915050565b6000602082840312156200091c576200091b62000899565b5b60006200092c84828501620008ec565b91505092915050565b6200094081620008be565b82525050565b60006040820190506200095d600083018562000935565b6200096c602083018462000935565b9392505050565b6200097e8162000725565b82525050565b60006020820190506200099b600083018462000973565b92915050565b61382f80620009b16000396000f3fe60806040526004361061016a5760003560e01c806374010ece116100d157806398a5c3151161008a578063c3c8cd8011610064578063c3c8cd8014610513578063dd62ed3e1461052a578063ea1644d514610567578063f2fde38b1461059057610171565b806398a5c31514610484578063a2a957bb146104ad578063a9059cbb146104d657610171565b806374010ece146103865780637d1db4a5146103af5780638da5cb5b146103da5780638f70ccf7146104055780638f9a55c01461042e57806395d89b411461045957610171565b8063313ce56711610123578063313ce5671461029c57806349bd5a5e146102c75780636d8aa8f8146102f25780636fc3eaec1461031b57806370a0823114610332578063715018a61461036f57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632fd689e31461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105b9565b604051610198919061273a565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906127f5565b6105f6565b6040516101d59190612850565b60405180910390f35b3480156101ea57600080fd5b506101f3610614565b60405161020091906128ca565b60405180910390f35b34801561021557600080fd5b5061021e61063a565b60405161022b91906128f4565b60405180910390f35b34801561024057600080fd5b5061025b6004803603810190610256919061290f565b610648565b6040516102689190612850565b60405180910390f35b34801561027d57600080fd5b50610286610721565b60405161029391906128f4565b60405180910390f35b3480156102a857600080fd5b506102b1610727565b6040516102be919061297e565b60405180910390f35b3480156102d357600080fd5b506102dc610730565b6040516102e991906129a8565b60405180910390f35b3480156102fe57600080fd5b50610319600480360381019061031491906129ef565b610756565b005b34801561032757600080fd5b50610330610808565b005b34801561033e57600080fd5b5061035960048036038101906103549190612a1c565b6108d9565b60405161036691906128f4565b60405180910390f35b34801561037b57600080fd5b5061038461092a565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612a49565b610a7d565b005b3480156103bb57600080fd5b506103c4610b34565b6040516103d191906128f4565b60405180910390f35b3480156103e657600080fd5b506103ef610b3a565b6040516103fc91906129a8565b60405180910390f35b34801561041157600080fd5b5061042c600480360381019061042791906129ef565b610b63565b005b34801561043a57600080fd5b50610443610c15565b60405161045091906128f4565b60405180910390f35b34801561046557600080fd5b5061046e610c1b565b60405161047b919061273a565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612a49565b610c58565b005b3480156104b957600080fd5b506104d460048036038101906104cf9190612a76565b610cf7565b005b3480156104e257600080fd5b506104fd60048036038101906104f891906127f5565b610e4c565b60405161050a9190612850565b60405180910390f35b34801561051f57600080fd5b50610528610e6a565b005b34801561053657600080fd5b50610551600480360381019061054c9190612add565b610f43565b60405161055e91906128f4565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190612a49565b610fca565b005b34801561059c57600080fd5b506105b760048036038101906105b29190612a1c565b611081565b005b60606040518060400160405280600b81526020017f48657450726f746f636f6c000000000000000000000000000000000000000000815250905090565b600061060a610603611243565b848461124b565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000655af3107a4000905090565b6000610655848484611416565b61071684610661611243565b610711856040518060600160405280602881526020016137d260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c7611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bba9092919063ffffffff16565b61124b565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61075e611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e290612b69565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610849611243565b73ffffffffffffffffffffffffffffffffffffffff1614806108bf5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108a7611243565b73ffffffffffffffffffffffffffffffffffffffff16145b6108c857600080fd5b60004790506108d681611c1e565b50565b6000610923600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8a565b9050919050565b610932611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b690612b69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a85611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990612b69565b60405180910390fd5b6009600a610b209190612ceb565b81610b2b9190612d36565b60148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b6b611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef90612b69565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600381526020017f4845540000000000000000000000000000000000000000000000000000000000815250905090565b610c60611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490612b69565b60405180910390fd5b8060168190555050565b610cff611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390612b69565b60405180910390fd5b60058285610d9a9190612d90565b1115610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290612e32565b60405180910390fd5b60058184610de99190612d90565b1115610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190612e9e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610e60610e59611243565b8484611416565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eab611243565b73ffffffffffffffffffffffffffffffffffffffff161480610f215750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f09611243565b73ffffffffffffffffffffffffffffffffffffffff16145b610f2a57600080fd5b6000610f35306108d9565b9050610f4081611cf8565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fd2611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105690612b69565b60405180910390fd5b6009600a61106d9190612ceb565b816110789190612d36565b60158190555050565b611089611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d90612b69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90612f30565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290612fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132290613054565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140991906128f4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906130e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613178565b60405180910390fd5b60008111611539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115309061320a565b60405180910390fd5b611541610b3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115af575061157f610b3a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118b957601360149054906101000a900460ff1661163e576115d0610b3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461163d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116349061329c565b60405180910390fd5b5b601454811115611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90613308565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461173057601554816116e5846108d9565b6116ef9190612d90565b1061172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117269061339a565b60405180910390fd5b5b600061173b306108d9565b90506000601654821015905060145482106117565760145491505b8080156117705750601360159054906101000a900460ff16155b80156117ca5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117e25750601360169054906101000a900460ff165b80156118385750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561188e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118b65761189c82611cf8565b600047905060008111156118b4576118b347611c1e565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119605750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a135750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a125750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a215760009050611ba8565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611acc5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ae457600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b8f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ba757600a54600c81905550600b54600d819055505b5b611bb484848484611f80565b50505050565b6000838311158290611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf9919061273a565b60405180910390fd5b5060008385611c1191906133ba565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c86573d6000803e3d6000fd5b5050565b6000600654821115611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890613460565b60405180910390fd5b6000611cdb611fad565b9050611cf08184611fd890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d3057611d2f613480565b5b604051908082528060200260200182016040528015611d5e5781602001602082028036833780820191505090505b5090503081600081518110611d7657611d756134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1857600080fd5b505afa158015611e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5091906134f3565b81600181518110611e6457611e636134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ecb30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461124b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f2f959493929190613619565b600060405180830381600087803b158015611f4957600080fd5b505af1158015611f5d573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611f8e57611f8d612022565b5b611f99848484612065565b80611fa757611fa6612230565b5b50505050565b6000806000611fba612244565b91509150611fd18183611fd890919063ffffffff16565b9250505090565b600061201a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229d565b905092915050565b6000600c5414801561203657506000600d54145b1561204057612063565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061207787612300565b9550955095509550955095506120d586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061216a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121b681612410565b6121c084836124cd565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161221d91906128f4565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000655af3107a40009050612274655af3107a4000600654611fd890919063ffffffff16565b82101561229057600654655af3107a4000935093505050612299565b81819350935050505b9091565b600080831182906122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db919061273a565b60405180910390fd5b50600083856122f391906136a2565b9050809150509392505050565b600080600080600080600080600061231d8a600c54600d54612507565b925092509250600061232d611fad565b905060008060006123408e87878761259d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123aa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bba565b905092915050565b60008082846123c19190612d90565b905083811015612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd9061371f565b60405180910390fd5b8091505092915050565b600061241a611fad565b90506000612431828461262690919063ffffffff16565b905061248581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6124e28260065461236890919063ffffffff16565b6006819055506124fd816007546123b290919063ffffffff16565b6007819055505050565b6000806000806125336064612525888a61262690919063ffffffff16565b611fd890919063ffffffff16565b9050600061255d606461254f888b61262690919063ffffffff16565b611fd890919063ffffffff16565b9050600061258682612578858c61236890919063ffffffff16565b61236890919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125b6858961262690919063ffffffff16565b905060006125cd868961262690919063ffffffff16565b905060006125e4878961262690919063ffffffff16565b9050600061260d826125ff858761236890919063ffffffff16565b61236890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612639576000905061269b565b600082846126479190612d36565b905082848261265691906136a2565b14612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d906137b1565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126db5780820151818401526020810190506126c0565b838111156126ea576000848401525b50505050565b6000601f19601f8301169050919050565b600061270c826126a1565b61271681856126ac565b93506127268185602086016126bd565b61272f816126f0565b840191505092915050565b600060208201905081810360008301526127548184612701565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278c82612761565b9050919050565b61279c81612781565b81146127a757600080fd5b50565b6000813590506127b981612793565b92915050565b6000819050919050565b6127d2816127bf565b81146127dd57600080fd5b50565b6000813590506127ef816127c9565b92915050565b6000806040838503121561280c5761280b61275c565b5b600061281a858286016127aa565b925050602061282b858286016127e0565b9150509250929050565b60008115159050919050565b61284a81612835565b82525050565b60006020820190506128656000830184612841565b92915050565b6000819050919050565b600061289061288b61288684612761565b61286b565b612761565b9050919050565b60006128a282612875565b9050919050565b60006128b482612897565b9050919050565b6128c4816128a9565b82525050565b60006020820190506128df60008301846128bb565b92915050565b6128ee816127bf565b82525050565b600060208201905061290960008301846128e5565b92915050565b6000806000606084860312156129285761292761275c565b5b6000612936868287016127aa565b9350506020612947868287016127aa565b9250506040612958868287016127e0565b9150509250925092565b600060ff82169050919050565b61297881612962565b82525050565b6000602082019050612993600083018461296f565b92915050565b6129a281612781565b82525050565b60006020820190506129bd6000830184612999565b92915050565b6129cc81612835565b81146129d757600080fd5b50565b6000813590506129e9816129c3565b92915050565b600060208284031215612a0557612a0461275c565b5b6000612a13848285016129da565b91505092915050565b600060208284031215612a3257612a3161275c565b5b6000612a40848285016127aa565b91505092915050565b600060208284031215612a5f57612a5e61275c565b5b6000612a6d848285016127e0565b91505092915050565b60008060008060808587031215612a9057612a8f61275c565b5b6000612a9e878288016127e0565b9450506020612aaf878288016127e0565b9350506040612ac0878288016127e0565b9250506060612ad1878288016127e0565b91505092959194509250565b60008060408385031215612af457612af361275c565b5b6000612b02858286016127aa565b9250506020612b13858286016127aa565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b536020836126ac565b9150612b5e82612b1d565b602082019050919050565b60006020820190508181036000830152612b8281612b46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612c0f57808604811115612beb57612bea612b89565b5b6001851615612bfa5780820291505b8081029050612c0885612bb8565b9450612bcf565b94509492505050565b600082612c285760019050612ce4565b81612c365760009050612ce4565b8160018114612c4c5760028114612c5657612c85565b6001915050612ce4565b60ff841115612c6857612c67612b89565b5b8360020a915084821115612c7f57612c7e612b89565b5b50612ce4565b5060208310610133831016604e8410600b8410161715612cba5782820a905083811115612cb557612cb4612b89565b5b612ce4565b612cc78484846001612bc5565b92509050818404811115612cde57612cdd612b89565b5b81810290505b9392505050565b6000612cf6826127bf565b9150612d0183612962565b9250612d2e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c18565b905092915050565b6000612d41826127bf565b9150612d4c836127bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d8557612d84612b89565b5b828202905092915050565b6000612d9b826127bf565b9150612da6836127bf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ddb57612dda612b89565b5b828201905092915050565b7f62757920666565732062656c6f77203500000000000000000000000000000000600082015250565b6000612e1c6010836126ac565b9150612e2782612de6565b602082019050919050565b60006020820190508181036000830152612e4b81612e0f565b9050919050565b7f73656c6c20666565732062656c6f772035000000000000000000000000000000600082015250565b6000612e886011836126ac565b9150612e9382612e52565b602082019050919050565b60006020820190508181036000830152612eb781612e7b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f1a6026836126ac565b9150612f2582612ebe565b604082019050919050565b60006020820190508181036000830152612f4981612f0d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fac6024836126ac565b9150612fb782612f50565b604082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061303e6022836126ac565b915061304982612fe2565b604082019050919050565b6000602082019050818103600083015261306d81613031565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d06025836126ac565b91506130db82613074565b604082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131626023836126ac565b915061316d82613106565b604082019050919050565b6000602082019050818103600083015261319181613155565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f46029836126ac565b91506131ff82613198565b604082019050919050565b60006020820190508181036000830152613223816131e7565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613286603f836126ac565b91506132918261322a565b604082019050919050565b600060208201905081810360008301526132b581613279565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006132f2601c836126ac565b91506132fd826132bc565b602082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006133846023836126ac565b915061338f82613328565b604082019050919050565b600060208201905081810360008301526133b381613377565b9050919050565b60006133c5826127bf565b91506133d0836127bf565b9250828210156133e3576133e2612b89565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061344a602a836126ac565b9150613455826133ee565b604082019050919050565b600060208201905081810360008301526134798161343d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134ed81612793565b92915050565b6000602082840312156135095761350861275c565b5b6000613517848285016134de565b91505092915050565b6000819050919050565b600061354561354061353b84613520565b61286b565b6127bf565b9050919050565b6135558161352a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61359081612781565b82525050565b60006135a28383613587565b60208301905092915050565b6000602082019050919050565b60006135c68261355b565b6135d08185613566565b93506135db83613577565b8060005b8381101561360c5781516135f38882613596565b97506135fe836135ae565b9250506001810190506135df565b5085935050505092915050565b600060a08201905061362e60008301886128e5565b61363b602083018761354c565b818103604083015261364d81866135bb565b905061365c6060830185612999565b61366960808301846128e5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136ad826127bf565b91506136b8836127bf565b9250826136c8576136c7613673565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613709601b836126ac565b9150613714826136d3565b602082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061379b6021836126ac565b91506137a68261373f565b604082019050919050565b600060208201905081810360008301526137ca8161378e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9cb5206ff79250ac7622809adf99b8a0e6d28e2cbb38224f3d6fc37249bdbed64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806374010ece116100d157806398a5c3151161008a578063c3c8cd8011610064578063c3c8cd8014610513578063dd62ed3e1461052a578063ea1644d514610567578063f2fde38b1461059057610171565b806398a5c31514610484578063a2a957bb146104ad578063a9059cbb146104d657610171565b806374010ece146103865780637d1db4a5146103af5780638da5cb5b146103da5780638f70ccf7146104055780638f9a55c01461042e57806395d89b411461045957610171565b8063313ce56711610123578063313ce5671461029c57806349bd5a5e146102c75780636d8aa8f8146102f25780636fc3eaec1461031b57806370a0823114610332578063715018a61461036f57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632fd689e31461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105b9565b604051610198919061273a565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906127f5565b6105f6565b6040516101d59190612850565b60405180910390f35b3480156101ea57600080fd5b506101f3610614565b60405161020091906128ca565b60405180910390f35b34801561021557600080fd5b5061021e61063a565b60405161022b91906128f4565b60405180910390f35b34801561024057600080fd5b5061025b6004803603810190610256919061290f565b610648565b6040516102689190612850565b60405180910390f35b34801561027d57600080fd5b50610286610721565b60405161029391906128f4565b60405180910390f35b3480156102a857600080fd5b506102b1610727565b6040516102be919061297e565b60405180910390f35b3480156102d357600080fd5b506102dc610730565b6040516102e991906129a8565b60405180910390f35b3480156102fe57600080fd5b50610319600480360381019061031491906129ef565b610756565b005b34801561032757600080fd5b50610330610808565b005b34801561033e57600080fd5b5061035960048036038101906103549190612a1c565b6108d9565b60405161036691906128f4565b60405180910390f35b34801561037b57600080fd5b5061038461092a565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612a49565b610a7d565b005b3480156103bb57600080fd5b506103c4610b34565b6040516103d191906128f4565b60405180910390f35b3480156103e657600080fd5b506103ef610b3a565b6040516103fc91906129a8565b60405180910390f35b34801561041157600080fd5b5061042c600480360381019061042791906129ef565b610b63565b005b34801561043a57600080fd5b50610443610c15565b60405161045091906128f4565b60405180910390f35b34801561046557600080fd5b5061046e610c1b565b60405161047b919061273a565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612a49565b610c58565b005b3480156104b957600080fd5b506104d460048036038101906104cf9190612a76565b610cf7565b005b3480156104e257600080fd5b506104fd60048036038101906104f891906127f5565b610e4c565b60405161050a9190612850565b60405180910390f35b34801561051f57600080fd5b50610528610e6a565b005b34801561053657600080fd5b50610551600480360381019061054c9190612add565b610f43565b60405161055e91906128f4565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190612a49565b610fca565b005b34801561059c57600080fd5b506105b760048036038101906105b29190612a1c565b611081565b005b60606040518060400160405280600b81526020017f48657450726f746f636f6c000000000000000000000000000000000000000000815250905090565b600061060a610603611243565b848461124b565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000655af3107a4000905090565b6000610655848484611416565b61071684610661611243565b610711856040518060600160405280602881526020016137d260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c7611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bba9092919063ffffffff16565b61124b565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61075e611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e290612b69565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610849611243565b73ffffffffffffffffffffffffffffffffffffffff1614806108bf5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108a7611243565b73ffffffffffffffffffffffffffffffffffffffff16145b6108c857600080fd5b60004790506108d681611c1e565b50565b6000610923600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8a565b9050919050565b610932611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b690612b69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a85611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990612b69565b60405180910390fd5b6009600a610b209190612ceb565b81610b2b9190612d36565b60148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b6b611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef90612b69565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600381526020017f4845540000000000000000000000000000000000000000000000000000000000815250905090565b610c60611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490612b69565b60405180910390fd5b8060168190555050565b610cff611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390612b69565b60405180910390fd5b60058285610d9a9190612d90565b1115610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290612e32565b60405180910390fd5b60058184610de99190612d90565b1115610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190612e9e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610e60610e59611243565b8484611416565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eab611243565b73ffffffffffffffffffffffffffffffffffffffff161480610f215750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f09611243565b73ffffffffffffffffffffffffffffffffffffffff16145b610f2a57600080fd5b6000610f35306108d9565b9050610f4081611cf8565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fd2611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105690612b69565b60405180910390fd5b6009600a61106d9190612ceb565b816110789190612d36565b60158190555050565b611089611243565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d90612b69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90612f30565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290612fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132290613054565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140991906128f4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906130e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613178565b60405180910390fd5b60008111611539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115309061320a565b60405180910390fd5b611541610b3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115af575061157f610b3a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118b957601360149054906101000a900460ff1661163e576115d0610b3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461163d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116349061329c565b60405180910390fd5b5b601454811115611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90613308565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461173057601554816116e5846108d9565b6116ef9190612d90565b1061172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117269061339a565b60405180910390fd5b5b600061173b306108d9565b90506000601654821015905060145482106117565760145491505b8080156117705750601360159054906101000a900460ff16155b80156117ca5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117e25750601360169054906101000a900460ff165b80156118385750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561188e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118b65761189c82611cf8565b600047905060008111156118b4576118b347611c1e565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119605750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a135750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a125750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a215760009050611ba8565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611acc5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ae457600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b8f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ba757600a54600c81905550600b54600d819055505b5b611bb484848484611f80565b50505050565b6000838311158290611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf9919061273a565b60405180910390fd5b5060008385611c1191906133ba565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c86573d6000803e3d6000fd5b5050565b6000600654821115611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890613460565b60405180910390fd5b6000611cdb611fad565b9050611cf08184611fd890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d3057611d2f613480565b5b604051908082528060200260200182016040528015611d5e5781602001602082028036833780820191505090505b5090503081600081518110611d7657611d756134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1857600080fd5b505afa158015611e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5091906134f3565b81600181518110611e6457611e636134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ecb30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461124b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f2f959493929190613619565b600060405180830381600087803b158015611f4957600080fd5b505af1158015611f5d573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611f8e57611f8d612022565b5b611f99848484612065565b80611fa757611fa6612230565b5b50505050565b6000806000611fba612244565b91509150611fd18183611fd890919063ffffffff16565b9250505090565b600061201a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229d565b905092915050565b6000600c5414801561203657506000600d54145b1561204057612063565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061207787612300565b9550955095509550955095506120d586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061216a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121b681612410565b6121c084836124cd565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161221d91906128f4565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000655af3107a40009050612274655af3107a4000600654611fd890919063ffffffff16565b82101561229057600654655af3107a4000935093505050612299565b81819350935050505b9091565b600080831182906122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db919061273a565b60405180910390fd5b50600083856122f391906136a2565b9050809150509392505050565b600080600080600080600080600061231d8a600c54600d54612507565b925092509250600061232d611fad565b905060008060006123408e87878761259d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123aa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bba565b905092915050565b60008082846123c19190612d90565b905083811015612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd9061371f565b60405180910390fd5b8091505092915050565b600061241a611fad565b90506000612431828461262690919063ffffffff16565b905061248581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6124e28260065461236890919063ffffffff16565b6006819055506124fd816007546123b290919063ffffffff16565b6007819055505050565b6000806000806125336064612525888a61262690919063ffffffff16565b611fd890919063ffffffff16565b9050600061255d606461254f888b61262690919063ffffffff16565b611fd890919063ffffffff16565b9050600061258682612578858c61236890919063ffffffff16565b61236890919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125b6858961262690919063ffffffff16565b905060006125cd868961262690919063ffffffff16565b905060006125e4878961262690919063ffffffff16565b9050600061260d826125ff858761236890919063ffffffff16565b61236890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612639576000905061269b565b600082846126479190612d36565b905082848261265691906136a2565b14612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d906137b1565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126db5780820151818401526020810190506126c0565b838111156126ea576000848401525b50505050565b6000601f19601f8301169050919050565b600061270c826126a1565b61271681856126ac565b93506127268185602086016126bd565b61272f816126f0565b840191505092915050565b600060208201905081810360008301526127548184612701565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278c82612761565b9050919050565b61279c81612781565b81146127a757600080fd5b50565b6000813590506127b981612793565b92915050565b6000819050919050565b6127d2816127bf565b81146127dd57600080fd5b50565b6000813590506127ef816127c9565b92915050565b6000806040838503121561280c5761280b61275c565b5b600061281a858286016127aa565b925050602061282b858286016127e0565b9150509250929050565b60008115159050919050565b61284a81612835565b82525050565b60006020820190506128656000830184612841565b92915050565b6000819050919050565b600061289061288b61288684612761565b61286b565b612761565b9050919050565b60006128a282612875565b9050919050565b60006128b482612897565b9050919050565b6128c4816128a9565b82525050565b60006020820190506128df60008301846128bb565b92915050565b6128ee816127bf565b82525050565b600060208201905061290960008301846128e5565b92915050565b6000806000606084860312156129285761292761275c565b5b6000612936868287016127aa565b9350506020612947868287016127aa565b9250506040612958868287016127e0565b9150509250925092565b600060ff82169050919050565b61297881612962565b82525050565b6000602082019050612993600083018461296f565b92915050565b6129a281612781565b82525050565b60006020820190506129bd6000830184612999565b92915050565b6129cc81612835565b81146129d757600080fd5b50565b6000813590506129e9816129c3565b92915050565b600060208284031215612a0557612a0461275c565b5b6000612a13848285016129da565b91505092915050565b600060208284031215612a3257612a3161275c565b5b6000612a40848285016127aa565b91505092915050565b600060208284031215612a5f57612a5e61275c565b5b6000612a6d848285016127e0565b91505092915050565b60008060008060808587031215612a9057612a8f61275c565b5b6000612a9e878288016127e0565b9450506020612aaf878288016127e0565b9350506040612ac0878288016127e0565b9250506060612ad1878288016127e0565b91505092959194509250565b60008060408385031215612af457612af361275c565b5b6000612b02858286016127aa565b9250506020612b13858286016127aa565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b536020836126ac565b9150612b5e82612b1d565b602082019050919050565b60006020820190508181036000830152612b8281612b46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612c0f57808604811115612beb57612bea612b89565b5b6001851615612bfa5780820291505b8081029050612c0885612bb8565b9450612bcf565b94509492505050565b600082612c285760019050612ce4565b81612c365760009050612ce4565b8160018114612c4c5760028114612c5657612c85565b6001915050612ce4565b60ff841115612c6857612c67612b89565b5b8360020a915084821115612c7f57612c7e612b89565b5b50612ce4565b5060208310610133831016604e8410600b8410161715612cba5782820a905083811115612cb557612cb4612b89565b5b612ce4565b612cc78484846001612bc5565b92509050818404811115612cde57612cdd612b89565b5b81810290505b9392505050565b6000612cf6826127bf565b9150612d0183612962565b9250612d2e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c18565b905092915050565b6000612d41826127bf565b9150612d4c836127bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d8557612d84612b89565b5b828202905092915050565b6000612d9b826127bf565b9150612da6836127bf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ddb57612dda612b89565b5b828201905092915050565b7f62757920666565732062656c6f77203500000000000000000000000000000000600082015250565b6000612e1c6010836126ac565b9150612e2782612de6565b602082019050919050565b60006020820190508181036000830152612e4b81612e0f565b9050919050565b7f73656c6c20666565732062656c6f772035000000000000000000000000000000600082015250565b6000612e886011836126ac565b9150612e9382612e52565b602082019050919050565b60006020820190508181036000830152612eb781612e7b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f1a6026836126ac565b9150612f2582612ebe565b604082019050919050565b60006020820190508181036000830152612f4981612f0d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fac6024836126ac565b9150612fb782612f50565b604082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061303e6022836126ac565b915061304982612fe2565b604082019050919050565b6000602082019050818103600083015261306d81613031565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d06025836126ac565b91506130db82613074565b604082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131626023836126ac565b915061316d82613106565b604082019050919050565b6000602082019050818103600083015261319181613155565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f46029836126ac565b91506131ff82613198565b604082019050919050565b60006020820190508181036000830152613223816131e7565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613286603f836126ac565b91506132918261322a565b604082019050919050565b600060208201905081810360008301526132b581613279565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006132f2601c836126ac565b91506132fd826132bc565b602082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006133846023836126ac565b915061338f82613328565b604082019050919050565b600060208201905081810360008301526133b381613377565b9050919050565b60006133c5826127bf565b91506133d0836127bf565b9250828210156133e3576133e2612b89565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061344a602a836126ac565b9150613455826133ee565b604082019050919050565b600060208201905081810360008301526134798161343d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134ed81612793565b92915050565b6000602082840312156135095761350861275c565b5b6000613517848285016134de565b91505092915050565b6000819050919050565b600061354561354061353b84613520565b61286b565b6127bf565b9050919050565b6135558161352a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61359081612781565b82525050565b60006135a28383613587565b60208301905092915050565b6000602082019050919050565b60006135c68261355b565b6135d08185613566565b93506135db83613577565b8060005b8381101561360c5781516135f38882613596565b97506135fe836135ae565b9250506001810190506135df565b5085935050505092915050565b600060a08201905061362e60008301886128e5565b61363b602083018761354c565b818103604083015261364d81866135bb565b905061365c6060830185612999565b61366960808301846128e5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136ad826127bf565b91506136b8836127bf565b9250826136c8576136c7613673565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613709601b836126ac565b9150613714826136d3565b602082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061379b6021836126ac565b91506137a68261373f565b604082019050919050565b600060208201905081810360008301526137ca8161378e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9cb5206ff79250ac7622809adf99b8a0e6d28e2cbb38224f3d6fc37249bdbed64736f6c63430008090033

Deployed Bytecode Sourcemap

4182:12966:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6578:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7503:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5428:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6855:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7704:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5727:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6764:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16742:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12420:235;;;;;;;;;;;;;:::i;:::-;;6958:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1669:148;;;;;;;;;;;;;:::i;:::-;;16882:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5618:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1455:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12067:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5672:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6669:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16551:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16061:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7104:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12176:236;;;;;;;;;;;;;:::i;:::-;;7311:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17014:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1825:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6578:83;6615:13;6648:5;;;;;;;;;;;;;;;;;6641:12;;6578:83;:::o;7503:193::-;7605:4;7627:39;7636:12;:10;:12::i;:::-;7650:7;7659:6;7627:8;:39::i;:::-;7684:4;7677:11;;7503:193;;;;:::o;5428:41::-;;;;;;;;;;;;;:::o;6855:95::-;6908:7;4726:14;6928;;6855:95;:::o;7704:446::-;7836:4;7853:36;7863:6;7871:9;7882:6;7853:9;:36::i;:::-;7900:220;7923:6;7944:12;:10;:12::i;:::-;7971:138;8027:6;7971:138;;;;;;;;;;;;;;;;;:11;:19;7983:6;7971:19;;;;;;;;;;;;;;;:33;7991:12;:10;:12::i;:::-;7971:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7900:8;:220::i;:::-;8138:4;8131:11;;7704:446;;;;;:::o;5727:49::-;;;;:::o;6764:83::-;6805:5;4400:1;6823:16;;6764:83;:::o;5476:28::-;;;;;;;;;;;;;:::o;16742:101::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16823:12:::1;16809:11;;:26;;;;;;;;;;;;;;;;;;16742:101:::0;:::o;12420:235::-;12486:19;;;;;;;;;;;12470:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12525:17;;;;;;;;;;;12509:33;;:12;:10;:12::i;:::-;:33;;;12470:72;12462:81;;;;;;12554:26;12583:21;12554:50;;12615:32;12628:18;12615:12;:32::i;:::-;12451:204;12420:235::o;6958:138::-;7024:7;7051:37;7071:7;:16;7079:7;7071:16;;;;;;;;;;;;;;;;7051:19;:37::i;:::-;7044:44;;6958:138;;;:::o;1669:148::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1776:1:::1;1739:40;;1760:6;::::0;::::1;;;;;;;;1739:40;;;;;;;;;;;;1807:1;1790:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1669:148::o:0;16882:124::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4400:1:::1;16985:2;:13;;;;:::i;:::-;16971:11;:27;;;;:::i;:::-;16956:12;:42;;;;16882:124:::0;:::o;5618:47::-;;;;:::o;1455:79::-;1493:7;1520:6;;;;;;;;;;;1513:13;;1455:79;:::o;12067:101::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12148:12:::1;12134:11;;:26;;;;;;;;;;;;;;;;;;12067:101:::0;:::o;5672:48::-;;;;:::o;6669:87::-;6708:13;6741:7;;;;;;;;;;;;;;;;;6734:14;;6669:87;:::o;16551:139::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16664:18:::1;16642:19;:40;;;;16551:139:::0;:::o;16061:438::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16234:1:::1;16219:11;16203:13;:27;;;;:::i;:::-;:32;;16195:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16308:1;16292:12;16275:14;:29;;;;:::i;:::-;:34;;16267:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16359:13;16342:14;:30;;;;16401:14;16383:15;:32;;;;16441:11;16426:12;:26;;;;16479:12;16463:13;:28;;;;16061:438:::0;;;;:::o;7104:199::-;7209:4;7231:42;7241:12;:10;:12::i;:::-;7255:9;7266:6;7231:9;:42::i;:::-;7291:4;7284:11;;7104:199;;;;:::o;12176:236::-;12242:19;;;;;;;;;;;12226:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12281:17;;;;;;;;;;;12265:33;;:12;:10;:12::i;:::-;:33;;;12226:72;12218:81;;;;;;12310:23;12336:24;12354:4;12336:9;:24::i;:::-;12310:50;;12371:33;12388:15;12371:16;:33::i;:::-;12207:205;12176:236::o;7311:184::-;7428:7;7460:11;:18;7472:5;7460:18;;;;;;;;;;;;;;;:27;7479:7;7460:27;;;;;;;;;;;;;;;;7453:34;;7311:184;;;;:::o;17014:131::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4400:1:::1;17124:2;:13;;;;:::i;:::-;17108;:29;;;;:::i;:::-;17091:14;:46;;;;17014:131:::0;:::o;1825:244::-;1592:12;:10;:12::i;:::-;1582:22;;:6;;;;;;;;;;:22;;;1574:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1934:1:::1;1914:22;;:8;:22;;;;1906:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2024:8;1995:38;;2016:6;::::0;::::1;;;;;;;;1995:38;;;;;;;;;;;;2053:8;2044:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1825:244:::0;:::o;214:98::-;267:7;294:10;287:17;;214:98;:::o;8841:369::-;8985:1;8968:19;;:5;:19;;;;8960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9066:1;9047:21;;:7;:21;;;;9039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9148:6;9118:11;:18;9130:5;9118:18;;;;;;;;;;;;;;;:27;9137:7;9118:27;;;;;;;;;;;;;;;:36;;;;9186:7;9170:32;;9179:5;9170:32;;;9195:6;9170:32;;;;;;:::i;:::-;;;;;;;;8841:369;;;:::o;9218:2243::-;9356:1;9340:18;;:4;:18;;;;9332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9433:1;9419:16;;:2;:16;;;;9411:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9503:1;9494:6;:10;9486:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:7;:5;:7::i;:::-;9567:15;;:4;:15;;;;:32;;;;;9592:7;:5;:7::i;:::-;9586:13;;:2;:13;;;;9567:32;9563:1172;;;9656:11;;;;;;;;;;;9651:144;;9704:7;:5;:7::i;:::-;9696:15;;:4;:15;;;9688:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9651:144;9829:12;;9819:6;:22;;9811:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9900:13;;;;;;;;;;;9894:19;;:2;:19;;;9891:146;;9967:14;;9958:6;9942:13;9952:2;9942:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9934:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9891:146;10053:28;10084:24;10102:4;10084:9;:24::i;:::-;10053:55;;10123:12;10162:19;;10138:20;:43;;10123:58;;10225:12;;10201:20;:36;10198:124;;10294:12;;10271:35;;10198:124;10342:7;:18;;;;;10354:6;;;;;;;;;;;10353:7;10342:18;:43;;;;;10372:13;;;;;;;;;;;10364:21;;:4;:21;;;;10342:43;:58;;;;;10389:11;;;;;;;;;;;10342:58;:87;;;;;10405:18;:24;10424:4;10405:24;;;;;;;;;;;;;;;;;;;;;;;;;10404:25;10342:87;:114;;;;;10434:18;:22;10453:2;10434:22;;;;;;;;;;;;;;;;;;;;;;;;;10433:23;10342:114;10338:386;;;10477:38;10494:20;10477:16;:38::i;:::-;10534:26;10563:21;10534:50;;10628:1;10607:18;:22;10603:106;;;10654:35;10667:21;10654:12;:35::i;:::-;10603:106;10458:266;10338:386;9601:1134;;9563:1172;10747:12;10762:4;10747:19;;10811:18;:24;10830:4;10811:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10839:18;:22;10858:2;10839:22;;;;;;;;;;;;;;;;;;;;;;;;;10811:50;10810:102;;;;10875:13;;;;;;;;;;;10867:21;;:4;:21;;;;:44;;;;;10898:13;;;;;;;;;;;10892:19;;:2;:19;;;;10867:44;10810:102;10806:594;;;10939:5;10929:15;;10806:594;;;11022:13;;;;;;;;;;;11014:21;;:4;:21;;;:55;;;;;11053:15;;;;;;;;;;;11039:30;;:2;:30;;;;11014:55;11011:162;;;11102:14;;11090:9;:26;;;;11145:12;;11135:7;:22;;;;11011:162;11232:13;;;;;;;;;;;11226:19;;:2;:19;;;:55;;;;;11265:15;;;;;;;;;;;11249:32;;:4;:32;;;;11226:55;11222:165;;;11314:15;;11302:9;:27;;;;11358:13;;11348:7;:23;;;;11222:165;10806:594;11412:41;11427:4;11433:2;11437:6;11445:7;11412:14;:41::i;:::-;9321:2140;9218:2243;;;:::o;2433:224::-;2553:7;2586:1;2581;:6;;2589:12;2573:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2613:9;2629:1;2625;:5;;;;:::i;:::-;2613:17;;2648:1;2641:8;;;2433:224;;;;;:::o;11960:99::-;12017:17;;;;;;;;;;;:26;;:34;12044:6;12017:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11960:99;:::o;8158:323::-;8253:7;8311;;8300;:18;;8278:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8399:19;8421:10;:8;:10::i;:::-;8399:32;;8449:24;8461:11;8449:7;:11;;:24;;;;:::i;:::-;8442:31;;;8158:323;;;:::o;11469:483::-;5879:4;5870:6;;:13;;;;;;;;;;;;;;;;;;11547:21:::1;11585:1;11571:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11547:40;;11616:4;11598;11603:1;11598:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11642:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11632:4;11637:1;11632:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11675:62;11692:4;11707:15;;;;;;;;;;;11725:11;11675:8;:62::i;:::-;11748:15;;;;;;;;;;;:66;;;11829:11;11855:1;11871:4;11898;11918:15;11748:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11536:416;5915:5:::0;5906:6;;:14;;;;;;;;;;;;;;;;;;11469:483;:::o;12663:282::-;12819:7;12814:28;;12828:14;:12;:14::i;:::-;12814:28;12853:44;12871:6;12879:9;12890:6;12853:17;:44::i;:::-;12913:7;12908:29;;12922:15;:13;:15::i;:::-;12908:29;12663:282;;;;:::o;15624:164::-;15666:7;15687:15;15704;15723:19;:17;:19::i;:::-;15686:56;;;;15760:20;15772:7;15760;:11;;:20;;;;:::i;:::-;15753:27;;;;15624:164;:::o;2919:132::-;2977:7;3004:39;3008:1;3011;3004:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2997:46;;2919:132;;;;:::o;8489:219::-;8549:1;8536:9;;:14;:30;;;;;8565:1;8554:7;;:12;8536:30;8532:43;;;8568:7;;8532:43;8607:9;;8587:17;:29;;;;8645:7;;8627:15;:25;;;;8677:1;8665:9;:13;;;;8699:1;8689:7;:11;;;;8489:219;:::o;12953:610::-;13100:15;13130:23;13168:12;13195:23;13233:12;13260:13;13287:19;13298:7;13287:10;:19::i;:::-;13085:221;;;;;;;;;;;;13335:28;13355:7;13335;:15;13343:6;13335:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13317:7;:15;13325:6;13317:15;;;;;;;;;;;;;;;:46;;;;13395:39;13418:15;13395:7;:18;13403:9;13395:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13374:7;:18;13382:9;13374:18;;;;;;;;;;;;;;;:60;;;;13445:16;13455:5;13445:9;:16::i;:::-;13472:23;13484:4;13490;13472:11;:23::i;:::-;13528:9;13511:44;;13520:6;13511:44;;;13539:15;13511:44;;;;;;:::i;:::-;;;;;;;;13074:489;;;;;;12953:610;;;:::o;8716:117::-;8772:17;;8760:9;:29;;;;8810:15;;8800:7;:25;;;;8716:117::o;15796:257::-;15847:7;15856;15876:15;15894:7;;15876:25;;15912:15;4726:14;15912:25;;15962:20;4726:14;15962:7;;:11;;:20;;;;:::i;:::-;15952:7;:30;15948:61;;;15992:7;;4726:14;15984:25;;;;;;;;15948:61;16028:7;16037;16020:25;;;;;;15796:257;;;:::o;3059:223::-;3179:7;3211:1;3207;:5;3214:12;3199:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3238:9;3254:1;3250;:5;;;;:::i;:::-;3238:17;;3273:1;3266:8;;;3059:223;;;;;:::o;13982:615::-;14082:7;14104;14126;14148;14170;14192;14228:23;14253:12;14267:13;14297:40;14309:7;14318:9;;14329:7;;14297:11;:40::i;:::-;14227:110;;;;;;14348:19;14370:10;:8;:10::i;:::-;14348:32;;14392:15;14409:23;14434:12;14463:46;14475:7;14484:4;14490:5;14497:11;14463;:46::i;:::-;14391:118;;;;;;14528:7;14537:15;14554:4;14560:15;14577:4;14583:5;14520:69;;;;;;;;;;;;;;;;;;;13982:615;;;;;;;:::o;2289:136::-;2347:7;2374:43;2378:1;2381;2374:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2367:50;;2289:136;;;;:::o;2102:179::-;2160:7;2180:9;2196:1;2192;:5;;;;:::i;:::-;2180:17;;2221:1;2216;:6;;2208:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2272:1;2265:8;;;2102:179;;;;:::o;13571:211::-;13624:19;13646:10;:8;:10::i;:::-;13624:32;;13667:13;13683:22;13693:11;13683:5;:9;;:22;;;;:::i;:::-;13667:38;;13741:33;13768:5;13741:7;:22;13757:4;13741:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13716:7;:22;13732:4;13716:22;;;;;;;;;;;;;;;:58;;;;13613:169;;13571:211;:::o;13790:147::-;13868:17;13880:4;13868:7;;:11;;:17;;;;:::i;:::-;13858:7;:27;;;;13909:20;13924:4;13909:10;;:14;;:20;;;;:::i;:::-;13896:10;:33;;;;13790:147;;:::o;14605:469::-;14774:7;14796;14818;14853:12;14868:30;14894:3;14868:21;14880:8;14868:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14853:45;;14909:13;14925:28;14949:3;14925:19;14937:6;14925:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14909:44;;14964:23;14990:28;15012:5;14990:17;15002:4;14990:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14964:54;;15037:15;15054:4;15060:5;15029:37;;;;;;;;;14605:469;;;;;;;:::o;15082:534::-;15276:7;15298;15320;15355:15;15373:24;15385:11;15373:7;:11;;:24;;;;:::i;:::-;15355:42;;15408:12;15423:21;15432:11;15423:4;:8;;:21;;;;:::i;:::-;15408:36;;15455:13;15471:22;15481:11;15471:5;:9;;:22;;;;:::i;:::-;15455:38;;15504:23;15530:28;15552:5;15530:17;15542:4;15530:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15504:54;;15577:7;15586:15;15603:4;15569:39;;;;;;;;;;15082:534;;;;;;;;:::o;2665:246::-;2723:7;2752:1;2747;:6;2743:47;;;2777:1;2770:8;;;;2743:47;2800:9;2816:1;2812;:5;;;;:::i;:::-;2800:17;;2845:1;2840;2836;:5;;;;:::i;:::-;:10;2828:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2902:1;2895:8;;;2665:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:474::-;8325:6;8333;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8479:117;8635:2;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8606:118;8257:474;;;;;:::o;8737:182::-;8877:34;8873:1;8865:6;8861:14;8854:58;8737:182;:::o;8925:366::-;9067:3;9088:67;9152:2;9147:3;9088:67;:::i;:::-;9081:74;;9164:93;9253:3;9164:93;:::i;:::-;9282:2;9277:3;9273:12;9266:19;;8925:366;;;:::o;9297:419::-;9463:4;9501:2;9490:9;9486:18;9478:26;;9550:9;9544:4;9540:20;9536:1;9525:9;9521:17;9514:47;9578:131;9704:4;9578:131;:::i;:::-;9570:139;;9297:419;;;:::o;9722:180::-;9770:77;9767:1;9760:88;9867:4;9864:1;9857:15;9891:4;9888:1;9881:15;9908:102;9950:8;9997:5;9994:1;9990:13;9969:34;;9908:102;;;:::o;10016:848::-;10077:5;10084:4;10108:6;10099:15;;10132:5;10123:14;;10146:712;10167:1;10157:8;10154:15;10146:712;;;10262:4;10257:3;10253:14;10247:4;10244:24;10241:50;;;10271:18;;:::i;:::-;10241:50;10321:1;10311:8;10307:16;10304:451;;;10736:4;10729:5;10725:16;10716:25;;10304:451;10786:4;10780;10776:15;10768:23;;10816:32;10839:8;10816:32;:::i;:::-;10804:44;;10146:712;;;10016:848;;;;;;;:::o;10870:1073::-;10924:5;11115:8;11105:40;;11136:1;11127:10;;11138:5;;11105:40;11164:4;11154:36;;11181:1;11172:10;;11183:5;;11154:36;11250:4;11298:1;11293:27;;;;11334:1;11329:191;;;;11243:277;;11293:27;11311:1;11302:10;;11313:5;;;11329:191;11374:3;11364:8;11361:17;11358:43;;;11381:18;;:::i;:::-;11358:43;11430:8;11427:1;11423:16;11414:25;;11465:3;11458:5;11455:14;11452:40;;;11472:18;;:::i;:::-;11452:40;11505:5;;;11243:277;;11629:2;11619:8;11616:16;11610:3;11604:4;11601:13;11597:36;11579:2;11569:8;11566:16;11561:2;11555:4;11552:12;11548:35;11532:111;11529:246;;;11685:8;11679:4;11675:19;11666:28;;11720:3;11713:5;11710:14;11707:40;;;11727:18;;:::i;:::-;11707:40;11760:5;;11529:246;11800:42;11838:3;11828:8;11822:4;11819:1;11800:42;:::i;:::-;11785:57;;;;11874:4;11869:3;11865:14;11858:5;11855:25;11852:51;;;11883:18;;:::i;:::-;11852:51;11932:4;11925:5;11921:16;11912:25;;10870:1073;;;;;;:::o;11949:281::-;12007:5;12031:23;12049:4;12031:23;:::i;:::-;12023:31;;12075:25;12091:8;12075:25;:::i;:::-;12063:37;;12119:104;12156:66;12146:8;12140:4;12119:104;:::i;:::-;12110:113;;11949:281;;;;:::o;12236:348::-;12276:7;12299:20;12317:1;12299:20;:::i;:::-;12294:25;;12333:20;12351:1;12333:20;:::i;:::-;12328:25;;12521:1;12453:66;12449:74;12446:1;12443:81;12438:1;12431:9;12424:17;12420:105;12417:131;;;12528:18;;:::i;:::-;12417:131;12576:1;12573;12569:9;12558:20;;12236:348;;;;:::o;12590:305::-;12630:3;12649:20;12667:1;12649:20;:::i;:::-;12644:25;;12683:20;12701:1;12683:20;:::i;:::-;12678:25;;12837:1;12769:66;12765:74;12762:1;12759:81;12756:107;;;12843:18;;:::i;:::-;12756:107;12887:1;12884;12880:9;12873:16;;12590:305;;;;:::o;12901:166::-;13041:18;13037:1;13029:6;13025:14;13018:42;12901:166;:::o;13073:366::-;13215:3;13236:67;13300:2;13295:3;13236:67;:::i;:::-;13229:74;;13312:93;13401:3;13312:93;:::i;:::-;13430:2;13425:3;13421:12;13414:19;;13073:366;;;:::o;13445:419::-;13611:4;13649:2;13638:9;13634:18;13626:26;;13698:9;13692:4;13688:20;13684:1;13673:9;13669:17;13662:47;13726:131;13852:4;13726:131;:::i;:::-;13718:139;;13445:419;;;:::o;13870:167::-;14010:19;14006:1;13998:6;13994:14;13987:43;13870:167;:::o;14043:366::-;14185:3;14206:67;14270:2;14265:3;14206:67;:::i;:::-;14199:74;;14282:93;14371:3;14282:93;:::i;:::-;14400:2;14395:3;14391:12;14384:19;;14043:366;;;:::o;14415:419::-;14581:4;14619:2;14608:9;14604:18;14596:26;;14668:9;14662:4;14658:20;14654:1;14643:9;14639:17;14632:47;14696:131;14822:4;14696:131;:::i;:::-;14688:139;;14415:419;;;:::o;14840:225::-;14980:34;14976:1;14968:6;14964:14;14957:58;15049:8;15044:2;15036:6;15032:15;15025:33;14840:225;:::o;15071:366::-;15213:3;15234:67;15298:2;15293:3;15234:67;:::i;:::-;15227:74;;15310:93;15399:3;15310:93;:::i;:::-;15428:2;15423:3;15419:12;15412:19;;15071:366;;;:::o;15443:419::-;15609:4;15647:2;15636:9;15632:18;15624:26;;15696:9;15690:4;15686:20;15682:1;15671:9;15667:17;15660:47;15724:131;15850:4;15724:131;:::i;:::-;15716:139;;15443:419;;;:::o;15868:223::-;16008:34;16004:1;15996:6;15992:14;15985:58;16077:6;16072:2;16064:6;16060:15;16053:31;15868:223;:::o;16097:366::-;16239:3;16260:67;16324:2;16319:3;16260:67;:::i;:::-;16253:74;;16336:93;16425:3;16336:93;:::i;:::-;16454:2;16449:3;16445:12;16438:19;;16097:366;;;:::o;16469:419::-;16635:4;16673:2;16662:9;16658:18;16650:26;;16722:9;16716:4;16712:20;16708:1;16697:9;16693:17;16686:47;16750:131;16876:4;16750:131;:::i;:::-;16742:139;;16469:419;;;:::o;16894:221::-;17034:34;17030:1;17022:6;17018:14;17011:58;17103:4;17098:2;17090:6;17086:15;17079:29;16894:221;:::o;17121:366::-;17263:3;17284:67;17348:2;17343:3;17284:67;:::i;:::-;17277:74;;17360:93;17449:3;17360:93;:::i;:::-;17478:2;17473:3;17469:12;17462:19;;17121:366;;;:::o;17493:419::-;17659:4;17697:2;17686:9;17682:18;17674:26;;17746:9;17740:4;17736:20;17732:1;17721:9;17717:17;17710:47;17774:131;17900:4;17774:131;:::i;:::-;17766:139;;17493:419;;;:::o;17918:224::-;18058:34;18054:1;18046:6;18042:14;18035:58;18127:7;18122:2;18114:6;18110:15;18103:32;17918:224;:::o;18148:366::-;18290:3;18311:67;18375:2;18370:3;18311:67;:::i;:::-;18304:74;;18387:93;18476:3;18387:93;:::i;:::-;18505:2;18500:3;18496:12;18489:19;;18148:366;;;:::o;18520:419::-;18686:4;18724:2;18713:9;18709:18;18701:26;;18773:9;18767:4;18763:20;18759:1;18748:9;18744:17;18737:47;18801:131;18927:4;18801:131;:::i;:::-;18793:139;;18520:419;;;:::o;18945:222::-;19085:34;19081:1;19073:6;19069:14;19062:58;19154:5;19149:2;19141:6;19137:15;19130:30;18945:222;:::o;19173:366::-;19315:3;19336:67;19400:2;19395:3;19336:67;:::i;:::-;19329:74;;19412:93;19501:3;19412:93;:::i;:::-;19530:2;19525:3;19521:12;19514:19;;19173:366;;;:::o;19545:419::-;19711:4;19749:2;19738:9;19734:18;19726:26;;19798:9;19792:4;19788:20;19784:1;19773:9;19769:17;19762:47;19826:131;19952:4;19826:131;:::i;:::-;19818:139;;19545:419;;;:::o;19970:228::-;20110:34;20106:1;20098:6;20094:14;20087:58;20179:11;20174:2;20166:6;20162:15;20155:36;19970:228;:::o;20204:366::-;20346:3;20367:67;20431:2;20426:3;20367:67;:::i;:::-;20360:74;;20443:93;20532:3;20443:93;:::i;:::-;20561:2;20556:3;20552:12;20545:19;;20204:366;;;:::o;20576:419::-;20742:4;20780:2;20769:9;20765:18;20757:26;;20829:9;20823:4;20819:20;20815:1;20804:9;20800:17;20793:47;20857:131;20983:4;20857:131;:::i;:::-;20849:139;;20576:419;;;:::o;21001:250::-;21141:34;21137:1;21129:6;21125:14;21118:58;21210:33;21205:2;21197:6;21193:15;21186:58;21001:250;:::o;21257:366::-;21399:3;21420:67;21484:2;21479:3;21420:67;:::i;:::-;21413:74;;21496:93;21585:3;21496:93;:::i;:::-;21614:2;21609:3;21605:12;21598:19;;21257:366;;;:::o;21629:419::-;21795:4;21833:2;21822:9;21818:18;21810:26;;21882:9;21876:4;21872:20;21868:1;21857:9;21853:17;21846:47;21910:131;22036:4;21910:131;:::i;:::-;21902:139;;21629:419;;;:::o;22054:178::-;22194:30;22190:1;22182:6;22178:14;22171:54;22054:178;:::o;22238:366::-;22380:3;22401:67;22465:2;22460:3;22401:67;:::i;:::-;22394:74;;22477:93;22566:3;22477:93;:::i;:::-;22595:2;22590:3;22586:12;22579:19;;22238:366;;;:::o;22610:419::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22863:9;22857:4;22853:20;22849:1;22838:9;22834:17;22827:47;22891:131;23017:4;22891:131;:::i;:::-;22883:139;;22610:419;;;:::o;23035:222::-;23175:34;23171:1;23163:6;23159:14;23152:58;23244:5;23239:2;23231:6;23227:15;23220:30;23035:222;:::o;23263:366::-;23405:3;23426:67;23490:2;23485:3;23426:67;:::i;:::-;23419:74;;23502:93;23591:3;23502:93;:::i;:::-;23620:2;23615:3;23611:12;23604:19;;23263:366;;;:::o;23635:419::-;23801:4;23839:2;23828:9;23824:18;23816:26;;23888:9;23882:4;23878:20;23874:1;23863:9;23859:17;23852:47;23916:131;24042:4;23916:131;:::i;:::-;23908:139;;23635:419;;;:::o;24060:191::-;24100:4;24120:20;24138:1;24120:20;:::i;:::-;24115:25;;24154:20;24172:1;24154:20;:::i;:::-;24149:25;;24193:1;24190;24187:8;24184:34;;;24198:18;;:::i;:::-;24184:34;24243:1;24240;24236:9;24228:17;;24060:191;;;;:::o;24257:229::-;24397:34;24393:1;24385:6;24381:14;24374:58;24466:12;24461:2;24453:6;24449:15;24442:37;24257:229;:::o;24492:366::-;24634:3;24655:67;24719:2;24714:3;24655:67;:::i;:::-;24648:74;;24731:93;24820:3;24731:93;:::i;:::-;24849:2;24844:3;24840:12;24833:19;;24492:366;;;:::o;24864:419::-;25030:4;25068:2;25057:9;25053:18;25045:26;;25117:9;25111:4;25107:20;25103:1;25092:9;25088:17;25081:47;25145:131;25271:4;25145:131;:::i;:::-;25137:139;;24864:419;;;:::o;25289:180::-;25337:77;25334:1;25327:88;25434:4;25431:1;25424:15;25458:4;25455:1;25448:15;25475:180;25523:77;25520:1;25513:88;25620:4;25617:1;25610:15;25644:4;25641:1;25634:15;25661:143;25718:5;25749:6;25743:13;25734:22;;25765:33;25792:5;25765:33;:::i;:::-;25661:143;;;;:::o;25810:351::-;25880:6;25929:2;25917:9;25908:7;25904:23;25900:32;25897:119;;;25935:79;;:::i;:::-;25897:119;26055:1;26080:64;26136:7;26127:6;26116:9;26112:22;26080:64;:::i;:::-;26070:74;;26026:128;25810:351;;;;:::o;26167:85::-;26212:7;26241:5;26230:16;;26167:85;;;:::o;26258:158::-;26316:9;26349:61;26367:42;26376:32;26402:5;26376:32;:::i;:::-;26367:42;:::i;:::-;26349:61;:::i;:::-;26336:74;;26258:158;;;:::o;26422:147::-;26517:45;26556:5;26517:45;:::i;:::-;26512:3;26505:58;26422:147;;:::o;26575:114::-;26642:6;26676:5;26670:12;26660:22;;26575:114;;;:::o;26695:184::-;26794:11;26828:6;26823:3;26816:19;26868:4;26863:3;26859:14;26844:29;;26695:184;;;;:::o;26885:132::-;26952:4;26975:3;26967:11;;27005:4;27000:3;26996:14;26988:22;;26885:132;;;:::o;27023:108::-;27100:24;27118:5;27100:24;:::i;:::-;27095:3;27088:37;27023:108;;:::o;27137:179::-;27206:10;27227:46;27269:3;27261:6;27227:46;:::i;:::-;27305:4;27300:3;27296:14;27282:28;;27137:179;;;;:::o;27322:113::-;27392:4;27424;27419:3;27415:14;27407:22;;27322:113;;;:::o;27471:732::-;27590:3;27619:54;27667:5;27619:54;:::i;:::-;27689:86;27768:6;27763:3;27689:86;:::i;:::-;27682:93;;27799:56;27849:5;27799:56;:::i;:::-;27878:7;27909:1;27894:284;27919:6;27916:1;27913:13;27894:284;;;27995:6;27989:13;28022:63;28081:3;28066:13;28022:63;:::i;:::-;28015:70;;28108:60;28161:6;28108:60;:::i;:::-;28098:70;;27954:224;27941:1;27938;27934:9;27929:14;;27894:284;;;27898:14;28194:3;28187:10;;27595:608;;;27471:732;;;;:::o;28209:831::-;28472:4;28510:3;28499:9;28495:19;28487:27;;28524:71;28592:1;28581:9;28577:17;28568:6;28524:71;:::i;:::-;28605:80;28681:2;28670:9;28666:18;28657:6;28605:80;:::i;:::-;28732:9;28726:4;28722:20;28717:2;28706:9;28702:18;28695:48;28760:108;28863:4;28854:6;28760:108;:::i;:::-;28752:116;;28878:72;28946:2;28935:9;28931:18;28922:6;28878:72;:::i;:::-;28960:73;29028:3;29017:9;29013:19;29004:6;28960:73;:::i;:::-;28209:831;;;;;;;;:::o;29046:180::-;29094:77;29091:1;29084:88;29191:4;29188:1;29181:15;29215:4;29212:1;29205:15;29232:185;29272:1;29289:20;29307:1;29289:20;:::i;:::-;29284:25;;29323:20;29341:1;29323:20;:::i;:::-;29318:25;;29362:1;29352:35;;29367:18;;:::i;:::-;29352:35;29409:1;29406;29402:9;29397:14;;29232:185;;;;:::o;29423:177::-;29563:29;29559:1;29551:6;29547:14;29540:53;29423:177;:::o;29606:366::-;29748:3;29769:67;29833:2;29828:3;29769:67;:::i;:::-;29762:74;;29845:93;29934:3;29845:93;:::i;:::-;29963:2;29958:3;29954:12;29947:19;;29606:366;;;:::o;29978:419::-;30144:4;30182:2;30171:9;30167:18;30159:26;;30231:9;30225:4;30221:20;30217:1;30206:9;30202:17;30195:47;30259:131;30385:4;30259:131;:::i;:::-;30251:139;;29978:419;;;:::o;30403:220::-;30543:34;30539:1;30531:6;30527:14;30520:58;30612:3;30607:2;30599:6;30595:15;30588:28;30403:220;:::o;30629:366::-;30771:3;30792:67;30856:2;30851:3;30792:67;:::i;:::-;30785:74;;30868:93;30957:3;30868:93;:::i;:::-;30986:2;30981:3;30977:12;30970:19;;30629:366;;;:::o;31001:419::-;31167:4;31205:2;31194:9;31190:18;31182:26;;31254:9;31248:4;31244:20;31240:1;31229:9;31225:17;31218:47;31282:131;31408:4;31282:131;:::i;:::-;31274:139;;31001:419;;;:::o

Swarm Source

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