ETH Price: $2,915.83 (-3.78%)
Gas: 1 Gwei

Contract

0x03e24a71DC062e4c4c1b33946DC38213451aD333
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve163067612022-12-31 19:13:23554 days ago1672514003IN
0x03e24a71...3451aD333
0 ETH0.0008506418.01593071
Transfer Ownersh...163007232022-12-30 22:59:59555 days ago1672441199IN
0x03e24a71...3451aD333
0 ETH0.0008121328.00075722
Set Fee163002542022-12-30 21:26:11555 days ago1672435571IN
0x03e24a71...3451aD333
0 ETH0.0011341621.19331202
Approve163002442022-12-30 21:24:11555 days ago1672435451IN
0x03e24a71...3451aD333
0 ETH0.0010275221.76213307
Approve163002372022-12-30 21:22:35555 days ago1672435355IN
0x03e24a71...3451aD333
0 ETH0.0009258319.60854336
Approve163002362022-12-30 21:22:23555 days ago1672435343IN
0x03e24a71...3451aD333
0 ETH0.0009570120.26884772
Renounce Ownersh...163001632022-12-30 21:07:35555 days ago1672434455IN
0x03e24a71...3451aD333
0 ETH0.0006357122.49042609
Approve163001492022-12-30 21:04:47555 days ago1672434287IN
0x03e24a71...3451aD333
0 ETH0.0010164921.5287013
Approve163001492022-12-30 21:04:47555 days ago1672434287IN
0x03e24a71...3451aD333
0 ETH0.0010164921.5287013
Approve163001422022-12-30 21:03:23555 days ago1672434203IN
0x03e24a71...3451aD333
0 ETH0.0009777620.70841781
Approve163001342022-12-30 21:01:47555 days ago1672434107IN
0x03e24a71...3451aD333
0 ETH0.0021270845.04999804
Approve163001212022-12-30 20:59:11555 days ago1672433951IN
0x03e24a71...3451aD333
0 ETH0.0008849718.74320215
Approve163001152022-12-30 20:57:59555 days ago1672433879IN
0x03e24a71...3451aD333
0 ETH0.0010122121.43794728
Approve163001042022-12-30 20:55:47555 days ago1672433747IN
0x03e24a71...3451aD333
0 ETH0.0012156725.74709851
Approve163001002022-12-30 20:54:47555 days ago1672433687IN
0x03e24a71...3451aD333
0 ETH0.0010615422.48265752
Approve163000992022-12-30 20:54:35555 days ago1672433675IN
0x03e24a71...3451aD333
0 ETH0.0010800222.87405574
Approve163000952022-12-30 20:53:47555 days ago1672433627IN
0x03e24a71...3451aD333
0 ETH0.0009938321.0486005
Approve163000932022-12-30 20:53:23555 days ago1672433603IN
0x03e24a71...3451aD333
0 ETH0.0010612322.47626603
Approve163000872022-12-30 20:52:11555 days ago1672433531IN
0x03e24a71...3451aD333
0 ETH0.0011290823.91325728
Approve163000852022-12-30 20:51:47555 days ago1672433507IN
0x03e24a71...3451aD333
0 ETH0.0009734520.61701808
Approve163000852022-12-30 20:51:47555 days ago1672433507IN
0x03e24a71...3451aD333
0 ETH0.0009739220.62701808
Approve163000852022-12-30 20:51:47555 days ago1672433507IN
0x03e24a71...3451aD333
0 ETH0.0011213823.75006996
Approve163000852022-12-30 20:51:47555 days ago1672433507IN
0x03e24a71...3451aD333
0 ETH0.0011213823.75006996
Approve163000822022-12-30 20:51:11555 days ago1672433471IN
0x03e24a71...3451aD333
0 ETH0.0008904818.85991353
Set Trading163000812022-12-30 20:50:59555 days ago1672433459IN
0x03e24a71...3451aD333
0 ETH0.0005668519.5305919
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
163003722022-12-30 21:49:47555 days ago1672436987
0x03e24a71...3451aD333
0.01418485 ETH
163003722022-12-30 21:49:47555 days ago1672436987
0x03e24a71...3451aD333
0.01418485 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
T23

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-30
*/

/**


*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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 (0x95000C29137f91FdE63bB6ca2604aD11c6964455));
        _owner = address (0x95000C29137f91FdE63bB6ca2604aD11c6964455);
    }

    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 T23 is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"Twenty23";
    string private constant _symbol = unicode"T23";
    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 = 23000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 2;
    uint256 private _redisFeeOnSell = 0;     
    uint256 private _taxFeeOnSell = 3;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 529001 * 10**9;
    uint256 public _maxWalletSize = 529001 * 10**9;
    uint256 public _swapTokensAtAmount = 23000 * 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");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

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

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

            if(contractTokenBalance >= _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 _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
        
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":"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":[],"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"}]

60806040526651b660cdd580006000196200001b91906200073c565b6000196200002a9190620007a3565b600655600060085560026009556000600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f5573e3c8abb7d53974e9fc6cc23c1c36aa79f09644e2601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e3c8abb7d53974e9fc6cc23c1c36aa79f09644e2601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506601e11fa4b0da006016556601e11fa4b0da006017556514eb1ad470006018553480156200016557600080fd5b50600062000178620006d260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022d620006d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030c57600080fd5b505afa15801562000321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000347919062000848565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003aa57600080fd5b505afa158015620003bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e5919062000848565b6040518363ffffffff1660e01b8152600401620004049291906200088b565b602060405180830381600087803b1580156200041f57600080fd5b505af115801562000434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045a919062000848565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b0620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065d620006d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6651b660cdd58000604051620006c39190620008c9565b60405180910390a350620008e6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007498262000703565b9150620007568362000703565b9250826200076957620007686200070d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b08262000703565b9150620007bd8362000703565b925082821015620007d357620007d262000774565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081082620007e3565b9050919050565b620008228162000803565b81146200082e57600080fd5b50565b600081519050620008428162000817565b92915050565b600060208284031215620008615762000860620007de565b5b6000620008718482850162000831565b91505092915050565b620008858162000803565b82525050565b6000604082019050620008a260008301856200087a565b620008b160208301846200087a565b9392505050565b620008c38162000703565b82525050565b6000602082019050620008e06000830184620008b8565b92915050565b6131e480620008f66000396000f3fe60806040526004361061012e5760003560e01c80637d1db4a5116100ab57806395d89b411161006f57806395d89b41146103f1578063a2a957bb1461041c578063a9059cbb14610445578063bfd7928414610482578063dd62ed3e146104bf578063f2fde38b146104fc57610135565b80637d1db4a51461030a5780637f2feddc146103355780638da5cb5b146103725780638f70ccf71461039d5780638f9a55c0146103c657610135565b80632fd689e3116100f25780632fd689e314610235578063313ce5671461026057806349bd5a5e1461028b57806370a08231146102b6578063715018a6146102f357610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610525565b60405161015c91906122e0565b60405180910390f35b34801561017157600080fd5b5061018c6004803603810190610187919061239b565b610562565b60405161019991906123f6565b60405180910390f35b3480156101ae57600080fd5b506101b7610580565b6040516101c49190612470565b60405180910390f35b3480156101d957600080fd5b506101e26105a6565b6040516101ef919061249a565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a91906124b5565b6105b5565b60405161022c91906123f6565b60405180910390f35b34801561024157600080fd5b5061024a61068e565b604051610257919061249a565b60405180910390f35b34801561026c57600080fd5b50610275610694565b6040516102829190612524565b60405180910390f35b34801561029757600080fd5b506102a061069d565b6040516102ad919061254e565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d89190612569565b6106c3565b6040516102ea919061249a565b60405180910390f35b3480156102ff57600080fd5b50610308610714565b005b34801561031657600080fd5b5061031f61088d565b60405161032c919061249a565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190612569565b610893565b604051610369919061249a565b60405180910390f35b34801561037e57600080fd5b506103876108ab565b604051610394919061254e565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf91906125c2565b6108d4565b005b3480156103d257600080fd5b506103db610986565b6040516103e8919061249a565b60405180910390f35b3480156103fd57600080fd5b5061040661098c565b60405161041391906122e0565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906125ef565b6109c9565b005b34801561045157600080fd5b5061046c6004803603810190610467919061239b565b610a80565b60405161047991906123f6565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190612569565b610a9e565b6040516104b691906123f6565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190612656565b610abe565b6040516104f3919061249a565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190612569565b610b45565b005b60606040518060400160405280600881526020017f5477656e74793233000000000000000000000000000000000000000000000000815250905090565b600061057661056f610d07565b8484610d0f565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006651b660cdd58000905090565b60006105c2848484610eda565b610683846105ce610d07565b61067e8560405180606001604052806028815260200161318760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610634610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461175f9092919063ffffffff16565b610d0f565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061070d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c3565b9050919050565b61071c610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906126e2565b60405180910390fd5b7395000c29137f91fde63bb6ca2604ad11c696445573ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a37395000c29137f91fde63bb6ca2604ad11c69644556000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108dc610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610960906126e2565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f5432330000000000000000000000000000000000000000000000000000000000815250905090565b6109d1610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906126e2565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610a94610a8d610d07565b8484610eda565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b4d610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd1906126e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190612774565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690612898565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ecd919061249a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f419061292a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb1906129bc565b60405180910390fd5b60008111610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490612a4e565b60405180910390fd5b6110056108ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561107357506110436108ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561145e57601560149054906101000a900460ff16611102576110946108ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f890612ae0565b60405180910390fd5b5b601654811115611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90612b4c565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156111eb5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190612bde565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112d7576017548161128c846106c3565b6112969190612c2d565b106112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90612cf5565b60405180910390fd5b5b60006112e2306106c3565b90506000601854821015905060165482106112fd5760165491505b808015611315575060158054906101000a900460ff16155b801561136f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113875750601560169054906101000a900460ff165b80156113dd5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114335750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561145b5761144182611831565b600047905060008111156114595761145847611ab7565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115055750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115b85750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115b75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156115c6576000905061174d565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116715750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561168957600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117345750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561174c57600a54600c81905550600b54600d819055505b5b61175984848484611b23565b50505050565b60008383111582906117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e91906122e0565b60405180910390fd5b50600083856117b69190612d15565b9050809150509392505050565b600060065482111561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190612dbb565b60405180910390fd5b6000611814611b50565b90506118298184611b7b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561186857611867612ddb565b5b6040519080825280602002602001820160405280156118965781602001602082028036833780820191505090505b50905030816000815181106118ae576118ad612e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195057600080fd5b505afa158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119889190612e4e565b8160018151811061199c5761199b612e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a0330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d0f565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a67959493929190612f74565b600060405180830381600087803b158015611a8157600080fd5b505af1158015611a95573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b1f573d6000803e3d6000fd5b5050565b80611b3157611b30611bc5565b5b611b3c848484611c08565b80611b4a57611b49611dd3565b5b50505050565b6000806000611b5d611de7565b91509150611b748183611b7b90919063ffffffff16565b9250505090565b6000611bbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e43565b905092915050565b6000600c54148015611bd957506000600d54145b15611be357611c06565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611c1a87611ea6565b955095509550955095509550611c7886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f0e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d0d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d5981611fb6565b611d638483612073565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dc0919061249a565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006651b660cdd580009050611e196651b660cdd58000600654611b7b90919063ffffffff16565b821015611e36576006546651b660cdd58000935093505050611e3f565b81819350935050505b9091565b60008083118290611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8191906122e0565b60405180910390fd5b5060008385611e999190612ffd565b9050809150509392505050565b6000806000806000806000806000611ec38a600c54600d546120ad565b9250925092506000611ed3611b50565b90506000806000611ee68e878787612143565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611f5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061175f565b905092915050565b6000808284611f679190612c2d565b905083811015611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa39061307a565b60405180910390fd5b8091505092915050565b6000611fc0611b50565b90506000611fd782846121cc90919063ffffffff16565b905061202b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61208882600654611f0e90919063ffffffff16565b6006819055506120a381600754611f5890919063ffffffff16565b6007819055505050565b6000806000806120d960646120cb888a6121cc90919063ffffffff16565b611b7b90919063ffffffff16565b9050600061210360646120f5888b6121cc90919063ffffffff16565b611b7b90919063ffffffff16565b9050600061212c8261211e858c611f0e90919063ffffffff16565b611f0e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061215c85896121cc90919063ffffffff16565b9050600061217386896121cc90919063ffffffff16565b9050600061218a87896121cc90919063ffffffff16565b905060006121b3826121a58587611f0e90919063ffffffff16565b611f0e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156121df5760009050612241565b600082846121ed919061309a565b90508284826121fc9190612ffd565b1461223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390613166565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612281578082015181840152602081019050612266565b83811115612290576000848401525b50505050565b6000601f19601f8301169050919050565b60006122b282612247565b6122bc8185612252565b93506122cc818560208601612263565b6122d581612296565b840191505092915050565b600060208201905081810360008301526122fa81846122a7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061233282612307565b9050919050565b61234281612327565b811461234d57600080fd5b50565b60008135905061235f81612339565b92915050565b6000819050919050565b61237881612365565b811461238357600080fd5b50565b6000813590506123958161236f565b92915050565b600080604083850312156123b2576123b1612302565b5b60006123c085828601612350565b92505060206123d185828601612386565b9150509250929050565b60008115159050919050565b6123f0816123db565b82525050565b600060208201905061240b60008301846123e7565b92915050565b6000819050919050565b600061243661243161242c84612307565b612411565b612307565b9050919050565b60006124488261241b565b9050919050565b600061245a8261243d565b9050919050565b61246a8161244f565b82525050565b60006020820190506124856000830184612461565b92915050565b61249481612365565b82525050565b60006020820190506124af600083018461248b565b92915050565b6000806000606084860312156124ce576124cd612302565b5b60006124dc86828701612350565b93505060206124ed86828701612350565b92505060406124fe86828701612386565b9150509250925092565b600060ff82169050919050565b61251e81612508565b82525050565b60006020820190506125396000830184612515565b92915050565b61254881612327565b82525050565b6000602082019050612563600083018461253f565b92915050565b60006020828403121561257f5761257e612302565b5b600061258d84828501612350565b91505092915050565b61259f816123db565b81146125aa57600080fd5b50565b6000813590506125bc81612596565b92915050565b6000602082840312156125d8576125d7612302565b5b60006125e6848285016125ad565b91505092915050565b6000806000806080858703121561260957612608612302565b5b600061261787828801612386565b945050602061262887828801612386565b935050604061263987828801612386565b925050606061264a87828801612386565b91505092959194509250565b6000806040838503121561266d5761266c612302565b5b600061267b85828601612350565b925050602061268c85828601612350565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126cc602083612252565b91506126d782612696565b602082019050919050565b600060208201905081810360008301526126fb816126bf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061275e602683612252565b915061276982612702565b604082019050919050565b6000602082019050818103600083015261278d81612751565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127f0602483612252565b91506127fb82612794565b604082019050919050565b6000602082019050818103600083015261281f816127e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612882602283612252565b915061288d82612826565b604082019050919050565b600060208201905081810360008301526128b181612875565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612914602583612252565b915061291f826128b8565b604082019050919050565b6000602082019050818103600083015261294381612907565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129a6602383612252565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612a38602983612252565b9150612a43826129dc565b604082019050919050565b60006020820190508181036000830152612a6781612a2b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612aca603f83612252565b9150612ad582612a6e565b604082019050919050565b60006020820190508181036000830152612af981612abd565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612b36601c83612252565b9150612b4182612b00565b602082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc8602383612252565b9150612bd382612b6c565b604082019050919050565b60006020820190508181036000830152612bf781612bbb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c3882612365565b9150612c4383612365565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c7857612c77612bfe565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612cdf602383612252565b9150612cea82612c83565b604082019050919050565b60006020820190508181036000830152612d0e81612cd2565b9050919050565b6000612d2082612365565b9150612d2b83612365565b925082821015612d3e57612d3d612bfe565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612da5602a83612252565b9150612db082612d49565b604082019050919050565b60006020820190508181036000830152612dd481612d98565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e4881612339565b92915050565b600060208284031215612e6457612e63612302565b5b6000612e7284828501612e39565b91505092915050565b6000819050919050565b6000612ea0612e9b612e9684612e7b565b612411565b612365565b9050919050565b612eb081612e85565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612eeb81612327565b82525050565b6000612efd8383612ee2565b60208301905092915050565b6000602082019050919050565b6000612f2182612eb6565b612f2b8185612ec1565b9350612f3683612ed2565b8060005b83811015612f67578151612f4e8882612ef1565b9750612f5983612f09565b925050600181019050612f3a565b5085935050505092915050565b600060a082019050612f89600083018861248b565b612f966020830187612ea7565b8181036040830152612fa88186612f16565b9050612fb7606083018561253f565b612fc4608083018461248b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061300882612365565b915061301383612365565b92508261302357613022612fce565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613064601b83612252565b915061306f8261302e565b602082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b60006130a582612365565b91506130b083612365565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130e9576130e8612bfe565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613150602183612252565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e8b44c1b9a5aa657abcfbdc92918f136de5350631fea77222812acec44aea8464736f6c63430008090033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c80637d1db4a5116100ab57806395d89b411161006f57806395d89b41146103f1578063a2a957bb1461041c578063a9059cbb14610445578063bfd7928414610482578063dd62ed3e146104bf578063f2fde38b146104fc57610135565b80637d1db4a51461030a5780637f2feddc146103355780638da5cb5b146103725780638f70ccf71461039d5780638f9a55c0146103c657610135565b80632fd689e3116100f25780632fd689e314610235578063313ce5671461026057806349bd5a5e1461028b57806370a08231146102b6578063715018a6146102f357610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610525565b60405161015c91906122e0565b60405180910390f35b34801561017157600080fd5b5061018c6004803603810190610187919061239b565b610562565b60405161019991906123f6565b60405180910390f35b3480156101ae57600080fd5b506101b7610580565b6040516101c49190612470565b60405180910390f35b3480156101d957600080fd5b506101e26105a6565b6040516101ef919061249a565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a91906124b5565b6105b5565b60405161022c91906123f6565b60405180910390f35b34801561024157600080fd5b5061024a61068e565b604051610257919061249a565b60405180910390f35b34801561026c57600080fd5b50610275610694565b6040516102829190612524565b60405180910390f35b34801561029757600080fd5b506102a061069d565b6040516102ad919061254e565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d89190612569565b6106c3565b6040516102ea919061249a565b60405180910390f35b3480156102ff57600080fd5b50610308610714565b005b34801561031657600080fd5b5061031f61088d565b60405161032c919061249a565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190612569565b610893565b604051610369919061249a565b60405180910390f35b34801561037e57600080fd5b506103876108ab565b604051610394919061254e565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf91906125c2565b6108d4565b005b3480156103d257600080fd5b506103db610986565b6040516103e8919061249a565b60405180910390f35b3480156103fd57600080fd5b5061040661098c565b60405161041391906122e0565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906125ef565b6109c9565b005b34801561045157600080fd5b5061046c6004803603810190610467919061239b565b610a80565b60405161047991906123f6565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190612569565b610a9e565b6040516104b691906123f6565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190612656565b610abe565b6040516104f3919061249a565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190612569565b610b45565b005b60606040518060400160405280600881526020017f5477656e74793233000000000000000000000000000000000000000000000000815250905090565b600061057661056f610d07565b8484610d0f565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006651b660cdd58000905090565b60006105c2848484610eda565b610683846105ce610d07565b61067e8560405180606001604052806028815260200161318760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610634610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461175f9092919063ffffffff16565b610d0f565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061070d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c3565b9050919050565b61071c610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906126e2565b60405180910390fd5b7395000c29137f91fde63bb6ca2604ad11c696445573ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a37395000c29137f91fde63bb6ca2604ad11c69644556000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108dc610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610960906126e2565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f5432330000000000000000000000000000000000000000000000000000000000815250905090565b6109d1610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906126e2565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610a94610a8d610d07565b8484610eda565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b4d610d07565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd1906126e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190612774565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690612898565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ecd919061249a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f419061292a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb1906129bc565b60405180910390fd5b60008111610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490612a4e565b60405180910390fd5b6110056108ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561107357506110436108ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561145e57601560149054906101000a900460ff16611102576110946108ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f890612ae0565b60405180910390fd5b5b601654811115611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90612b4c565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156111eb5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190612bde565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112d7576017548161128c846106c3565b6112969190612c2d565b106112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90612cf5565b60405180910390fd5b5b60006112e2306106c3565b90506000601854821015905060165482106112fd5760165491505b808015611315575060158054906101000a900460ff16155b801561136f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113875750601560169054906101000a900460ff165b80156113dd5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114335750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561145b5761144182611831565b600047905060008111156114595761145847611ab7565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115055750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115b85750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115b75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156115c6576000905061174d565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116715750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561168957600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117345750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561174c57600a54600c81905550600b54600d819055505b5b61175984848484611b23565b50505050565b60008383111582906117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e91906122e0565b60405180910390fd5b50600083856117b69190612d15565b9050809150509392505050565b600060065482111561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190612dbb565b60405180910390fd5b6000611814611b50565b90506118298184611b7b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561186857611867612ddb565b5b6040519080825280602002602001820160405280156118965781602001602082028036833780820191505090505b50905030816000815181106118ae576118ad612e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195057600080fd5b505afa158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119889190612e4e565b8160018151811061199c5761199b612e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a0330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d0f565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a67959493929190612f74565b600060405180830381600087803b158015611a8157600080fd5b505af1158015611a95573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b1f573d6000803e3d6000fd5b5050565b80611b3157611b30611bc5565b5b611b3c848484611c08565b80611b4a57611b49611dd3565b5b50505050565b6000806000611b5d611de7565b91509150611b748183611b7b90919063ffffffff16565b9250505090565b6000611bbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e43565b905092915050565b6000600c54148015611bd957506000600d54145b15611be357611c06565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611c1a87611ea6565b955095509550955095509550611c7886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f0e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d0d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d5981611fb6565b611d638483612073565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dc0919061249a565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006651b660cdd580009050611e196651b660cdd58000600654611b7b90919063ffffffff16565b821015611e36576006546651b660cdd58000935093505050611e3f565b81819350935050505b9091565b60008083118290611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8191906122e0565b60405180910390fd5b5060008385611e999190612ffd565b9050809150509392505050565b6000806000806000806000806000611ec38a600c54600d546120ad565b9250925092506000611ed3611b50565b90506000806000611ee68e878787612143565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611f5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061175f565b905092915050565b6000808284611f679190612c2d565b905083811015611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa39061307a565b60405180910390fd5b8091505092915050565b6000611fc0611b50565b90506000611fd782846121cc90919063ffffffff16565b905061202b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61208882600654611f0e90919063ffffffff16565b6006819055506120a381600754611f5890919063ffffffff16565b6007819055505050565b6000806000806120d960646120cb888a6121cc90919063ffffffff16565b611b7b90919063ffffffff16565b9050600061210360646120f5888b6121cc90919063ffffffff16565b611b7b90919063ffffffff16565b9050600061212c8261211e858c611f0e90919063ffffffff16565b611f0e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061215c85896121cc90919063ffffffff16565b9050600061217386896121cc90919063ffffffff16565b9050600061218a87896121cc90919063ffffffff16565b905060006121b3826121a58587611f0e90919063ffffffff16565b611f0e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156121df5760009050612241565b600082846121ed919061309a565b90508284826121fc9190612ffd565b1461223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390613166565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612281578082015181840152602081019050612266565b83811115612290576000848401525b50505050565b6000601f19601f8301169050919050565b60006122b282612247565b6122bc8185612252565b93506122cc818560208601612263565b6122d581612296565b840191505092915050565b600060208201905081810360008301526122fa81846122a7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061233282612307565b9050919050565b61234281612327565b811461234d57600080fd5b50565b60008135905061235f81612339565b92915050565b6000819050919050565b61237881612365565b811461238357600080fd5b50565b6000813590506123958161236f565b92915050565b600080604083850312156123b2576123b1612302565b5b60006123c085828601612350565b92505060206123d185828601612386565b9150509250929050565b60008115159050919050565b6123f0816123db565b82525050565b600060208201905061240b60008301846123e7565b92915050565b6000819050919050565b600061243661243161242c84612307565b612411565b612307565b9050919050565b60006124488261241b565b9050919050565b600061245a8261243d565b9050919050565b61246a8161244f565b82525050565b60006020820190506124856000830184612461565b92915050565b61249481612365565b82525050565b60006020820190506124af600083018461248b565b92915050565b6000806000606084860312156124ce576124cd612302565b5b60006124dc86828701612350565b93505060206124ed86828701612350565b92505060406124fe86828701612386565b9150509250925092565b600060ff82169050919050565b61251e81612508565b82525050565b60006020820190506125396000830184612515565b92915050565b61254881612327565b82525050565b6000602082019050612563600083018461253f565b92915050565b60006020828403121561257f5761257e612302565b5b600061258d84828501612350565b91505092915050565b61259f816123db565b81146125aa57600080fd5b50565b6000813590506125bc81612596565b92915050565b6000602082840312156125d8576125d7612302565b5b60006125e6848285016125ad565b91505092915050565b6000806000806080858703121561260957612608612302565b5b600061261787828801612386565b945050602061262887828801612386565b935050604061263987828801612386565b925050606061264a87828801612386565b91505092959194509250565b6000806040838503121561266d5761266c612302565b5b600061267b85828601612350565b925050602061268c85828601612350565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126cc602083612252565b91506126d782612696565b602082019050919050565b600060208201905081810360008301526126fb816126bf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061275e602683612252565b915061276982612702565b604082019050919050565b6000602082019050818103600083015261278d81612751565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127f0602483612252565b91506127fb82612794565b604082019050919050565b6000602082019050818103600083015261281f816127e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612882602283612252565b915061288d82612826565b604082019050919050565b600060208201905081810360008301526128b181612875565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612914602583612252565b915061291f826128b8565b604082019050919050565b6000602082019050818103600083015261294381612907565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129a6602383612252565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612a38602983612252565b9150612a43826129dc565b604082019050919050565b60006020820190508181036000830152612a6781612a2b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612aca603f83612252565b9150612ad582612a6e565b604082019050919050565b60006020820190508181036000830152612af981612abd565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612b36601c83612252565b9150612b4182612b00565b602082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc8602383612252565b9150612bd382612b6c565b604082019050919050565b60006020820190508181036000830152612bf781612bbb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c3882612365565b9150612c4383612365565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c7857612c77612bfe565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612cdf602383612252565b9150612cea82612c83565b604082019050919050565b60006020820190508181036000830152612d0e81612cd2565b9050919050565b6000612d2082612365565b9150612d2b83612365565b925082821015612d3e57612d3d612bfe565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612da5602a83612252565b9150612db082612d49565b604082019050919050565b60006020820190508181036000830152612dd481612d98565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e4881612339565b92915050565b600060208284031215612e6457612e63612302565b5b6000612e7284828501612e39565b91505092915050565b6000819050919050565b6000612ea0612e9b612e9684612e7b565b612411565b612365565b9050919050565b612eb081612e85565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612eeb81612327565b82525050565b6000612efd8383612ee2565b60208301905092915050565b6000602082019050919050565b6000612f2182612eb6565b612f2b8185612ec1565b9350612f3683612ed2565b8060005b83811015612f67578151612f4e8882612ef1565b9750612f5983612f09565b925050600181019050612f3a565b5085935050505092915050565b600060a082019050612f89600083018861248b565b612f966020830187612ea7565b8181036040830152612fa88186612f16565b9050612fb7606083018561253f565b612fc4608083018461248b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061300882612365565b915061301383612365565b92508261302357613022612fce565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613064601b83612252565b915061306f8261302e565b602082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b60006130a582612365565b91506130b083612365565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130e9576130e8612bfe565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613150602183612252565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e8b44c1b9a5aa657abcfbdc92918f136de5350631fea77222812acec44aea8464736f6c63430008090033

Deployed Bytecode Sourcemap

4167:11869:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6649:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7574:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5503:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6926:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7775:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5797:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6835:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5551:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7029:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1570:232;;;;;;;;;;;;;:::i;:::-;;5693:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5245:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1356:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12225:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5744:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6740:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15732:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7175:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5207:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7382:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1810:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6649:83;6686:13;6719:5;;;;;;;;;;;;;;;;;6712:12;;6649:83;:::o;7574:193::-;7676:4;7698:39;7707:12;:10;:12::i;:::-;7721:7;7730:6;7698:8;:39::i;:::-;7755:4;7748:11;;7574:193;;;;:::o;5503:41::-;;;;;;;;;;;;;:::o;6926:95::-;6979:7;4726:16;6999:14;;6926:95;:::o;7775:446::-;7907:4;7924:36;7934:6;7942:9;7953:6;7924:9;:36::i;:::-;7971:220;7994:6;8015:12;:10;:12::i;:::-;8042:138;8098:6;8042:138;;;;;;;;;;;;;;;;;:11;:19;8054:6;8042:19;;;;;;;;;;;;;;;:33;8062:12;:10;:12::i;:::-;8042:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7971:8;:220::i;:::-;8209:4;8202:11;;7775:446;;;;;:::o;5797:50::-;;;;:::o;6835:83::-;6876:5;4396:1;6894:16;;6835:83;:::o;5551:28::-;;;;;;;;;;;;;:::o;7029:138::-;7095:7;7122:37;7142:7;:16;7150:7;7142:16;;;;;;;;;;;;;;;;7122:19;:37::i;:::-;7115:44;;7029:138;;;:::o;1570:232::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:42:::1;1640:82;;1661:6;::::0;::::1;;;;;;;;1640:82;;;;;;;;;;;;1751:42;1733:6;::::0;:61:::1;;;;;;;;;;;;;;;;;;1570:232::o:0;5693:44::-;;;;:::o;5245:43::-;;;;;;;;;;;;;;;;;:::o;1356:79::-;1394:7;1421:6;;;;;;;;;;;1414:13;;1356:79;:::o;12225:101::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12306:12:::1;12292:11;;:26;;;;;;;;;;;;;;;;;;12225:101:::0;:::o;5744:46::-;;;;:::o;6740:87::-;6779:13;6812:7;;;;;;;;;;;;;;;;;6805:14;;6740:87;:::o;15732:291::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15883:13:::1;15866:14;:30;;;;15925:14;15907:15;:32;;;;15965:11;15950:12;:26;;;;16003:12;15987:13;:28;;;;15732:291:::0;;;;:::o;7175:199::-;7280:4;7302:42;7312:12;:10;:12::i;:::-;7326:9;7337:6;7302:9;:42::i;:::-;7362:4;7355:11;;7175:199;;;;:::o;5207:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;7382:184::-;7499:7;7531:11;:18;7543:5;7531:18;;;;;;;;;;;;;;;:27;7550:7;7531:27;;;;;;;;;;;;;;;;7524:34;;7382:184;;;;:::o;1810:244::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1919:1:::1;1899:22;;:8;:22;;;;1891:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2009:8;1980:38;;2001:6;::::0;::::1;;;;;;;;1980:38;;;;;;;;;;;;2038:8;2029:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1810:244:::0;:::o;115:98::-;168:7;195:10;188:17;;115:98;:::o;8912:369::-;9056:1;9039:19;;:5;:19;;;;9031:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9137:1;9118:21;;:7;:21;;;;9110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9219:6;9189:11;:18;9201:5;9189:18;;;;;;;;;;;;;;;:27;9208:7;9189:27;;;;;;;;;;;;;;;:36;;;;9257:7;9241:32;;9250:5;9241:32;;;9266:6;9241:32;;;;;;:::i;:::-;;;;;;;;8912:369;;;:::o;9289:2330::-;9427:1;9411:18;;:4;:18;;;;9403:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9504:1;9490:16;;:2;:16;;;;9482:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9574:1;9565:6;:10;9557:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9646:7;:5;:7::i;:::-;9638:15;;:4;:15;;;;:32;;;;;9663:7;:5;:7::i;:::-;9657:13;;:2;:13;;;;9638:32;9634:1259;;;9727:11;;;;;;;;;;;9722:144;;9775:7;:5;:7::i;:::-;9767:15;;:4;:15;;;9759:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9722:144;9900:12;;9890:6;:22;;9882:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9969:4;:10;9974:4;9969:10;;;;;;;;;;;;;;;;;;;;;;;;;9968:11;:24;;;;;9984:4;:8;9989:2;9984:8;;;;;;;;;;;;;;;;;;;;;;;;;9983:9;9968:24;9960:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10058:13;;;;;;;;;;;10052:19;;:2;:19;;;10049:146;;10125:14;;10116:6;10100:13;10110:2;10100:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10092:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10049:146;10211:28;10242:24;10260:4;10242:9;:24::i;:::-;10211:55;;10281:12;10320:19;;10296:20;:43;;10281:58;;10383:12;;10359:20;:36;10356:124;;10452:12;;10429:35;;10356:124;10500:7;:18;;;;;10512:6;;;;;;;;;;10511:7;10500:18;:43;;;;;10530:13;;;;;;;;;;;10522:21;;:4;:21;;;;10500:43;:58;;;;;10547:11;;;;;;;;;;;10500:58;:87;;;;;10563:18;:24;10582:4;10563:24;;;;;;;;;;;;;;;;;;;;;;;;;10562:25;10500:87;:114;;;;;10592:18;:22;10611:2;10592:22;;;;;;;;;;;;;;;;;;;;;;;;;10591:23;10500:114;10496:386;;;10635:38;10652:20;10635:16;:38::i;:::-;10692:26;10721:21;10692:50;;10786:1;10765:18;:22;10761:106;;;10812:35;10825:21;10812:12;:35::i;:::-;10761:106;10616:266;10496:386;9672:1221;;9634:1259;10905:12;10920:4;10905:19;;10969:18;:24;10988:4;10969:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10997:18;:22;11016:2;10997:22;;;;;;;;;;;;;;;;;;;;;;;;;10969:50;10968:102;;;;11033:13;;;;;;;;;;;11025:21;;:4;:21;;;;:44;;;;;11056:13;;;;;;;;;;;11050:19;;:2;:19;;;;11025:44;10968:102;10964:594;;;11097:5;11087:15;;10964:594;;;11180:13;;;;;;;;;;;11172:21;;:4;:21;;;:55;;;;;11211:15;;;;;;;;;;;11197:30;;:2;:30;;;;11172:55;11169:162;;;11260:14;;11248:9;:26;;;;11303:12;;11293:7;:22;;;;11169:162;11390:13;;;;;;;;;;;11384:19;;:2;:19;;;:55;;;;;11423:15;;;;;;;;;;;11407:32;;:4;:32;;;;11384:55;11380:165;;;11472:15;;11460:9;:27;;;;11516:13;;11506:7;:23;;;;11380:165;10964:594;11570:41;11585:4;11591:2;11595:6;11603:7;11570:14;:41::i;:::-;9392:2227;9289:2330;;;:::o;2418:224::-;2538:7;2571:1;2566;:6;;2574:12;2558:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2598:9;2614:1;2610;:5;;;;:::i;:::-;2598:17;;2633:1;2626:8;;;2418:224;;;;;:::o;8229:323::-;8324:7;8382;;8371;:18;;8349:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8470:19;8492:10;:8;:10::i;:::-;8470:32;;8520:24;8532:11;8520:7;:11;;:24;;;;:::i;:::-;8513:31;;;8229:323;;;:::o;11627:483::-;5950:4;5941:6;;:13;;;;;;;;;;;;;;;;;;11705:21:::1;11743:1;11729:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11705:40;;11774:4;11756;11761:1;11756:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11800:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11790:4;11795:1;11790:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11833:62;11850:4;11865:15;;;;;;;;;;;11883:11;11833:8;:62::i;:::-;11906:15;;;;;;;;;;;:66;;;11987:11;12013:1;12029:4;12056;12076:15;11906:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11694:416;5986:5:::0;5977:6;;:14;;;;;;;;;;;;;;;;;;11627:483;:::o;12118:99::-;12175:17;;;;;;;;;;;:26;;:34;12202:6;12175:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12118:99;:::o;12334:282::-;12490:7;12485:28;;12499:14;:12;:14::i;:::-;12485:28;12524:44;12542:6;12550:9;12561:6;12524:17;:44::i;:::-;12584:7;12579:29;;12593:15;:13;:15::i;:::-;12579:29;12334:282;;;;:::o;15295:164::-;15337:7;15358:15;15375;15394:19;:17;:19::i;:::-;15357:56;;;;15431:20;15443:7;15431;:11;;:20;;;;:::i;:::-;15424:27;;;;15295:164;:::o;2904:132::-;2962:7;2989:39;2993:1;2996;2989:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2982:46;;2904:132;;;;:::o;8560:219::-;8620:1;8607:9;;:14;:30;;;;;8636:1;8625:7;;:12;8607:30;8603:43;;;8639:7;;8603:43;8678:9;;8658:17;:29;;;;8716:7;;8698:15;:25;;;;8748:1;8736:9;:13;;;;8770:1;8760:7;:11;;;;8560:219;:::o;12624:610::-;12771:15;12801:23;12839:12;12866:23;12904:12;12931:13;12958:19;12969:7;12958:10;:19::i;:::-;12756:221;;;;;;;;;;;;13006:28;13026:7;13006;:15;13014:6;13006:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12988:7;:15;12996:6;12988:15;;;;;;;;;;;;;;;:46;;;;13066:39;13089:15;13066:7;:18;13074:9;13066:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13045:7;:18;13053:9;13045:18;;;;;;;;;;;;;;;:60;;;;13116:16;13126:5;13116:9;:16::i;:::-;13143:23;13155:4;13161;13143:11;:23::i;:::-;13199:9;13182:44;;13191:6;13182:44;;;13210:15;13182:44;;;;;;:::i;:::-;;;;;;;;12745:489;;;;;;12624:610;;;:::o;8787:117::-;8843:17;;8831:9;:29;;;;8881:15;;8871:7;:25;;;;8787:117::o;15467:257::-;15518:7;15527;15547:15;15565:7;;15547:25;;15583:15;4726:16;15583:25;;15633:20;4726:16;15633:7;;:11;;:20;;;;:::i;:::-;15623:7;:30;15619:61;;;15663:7;;4726:16;15655:25;;;;;;;;15619:61;15699:7;15708;15691:25;;;;;;15467:257;;;:::o;3044:223::-;3164:7;3196:1;3192;:5;3199:12;3184:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3223:9;3239:1;3235;:5;;;;:::i;:::-;3223:17;;3258:1;3251:8;;;3044:223;;;;;:::o;13653:615::-;13753:7;13775;13797;13819;13841;13863;13899:23;13924:12;13938:13;13968:40;13980:7;13989:9;;14000:7;;13968:11;:40::i;:::-;13898:110;;;;;;14019:19;14041:10;:8;:10::i;:::-;14019:32;;14063:15;14080:23;14105:12;14134:46;14146:7;14155:4;14161:5;14168:11;14134;:46::i;:::-;14062:118;;;;;;14199:7;14208:15;14225:4;14231:15;14248:4;14254:5;14191:69;;;;;;;;;;;;;;;;;;;13653:615;;;;;;;:::o;2274:136::-;2332:7;2359:43;2363:1;2366;2359:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2352:50;;2274:136;;;;:::o;2087:179::-;2145:7;2165:9;2181:1;2177;:5;;;;:::i;:::-;2165:17;;2206:1;2201;:6;;2193:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2257:1;2250:8;;;2087:179;;;;:::o;13242:211::-;13295:19;13317:10;:8;:10::i;:::-;13295:32;;13338:13;13354:22;13364:11;13354:5;:9;;:22;;;;:::i;:::-;13338:38;;13412:33;13439:5;13412:7;:22;13428:4;13412:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13387:7;:22;13403:4;13387:22;;;;;;;;;;;;;;;:58;;;;13284:169;;13242:211;:::o;13461:147::-;13539:17;13551:4;13539:7;;:11;;:17;;;;:::i;:::-;13529:7;:27;;;;13580:20;13595:4;13580:10;;:14;;:20;;;;:::i;:::-;13567:10;:33;;;;13461:147;;:::o;14276:469::-;14445:7;14467;14489;14524:12;14539:30;14565:3;14539:21;14551:8;14539:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14524:45;;14580:13;14596:28;14620:3;14596:19;14608:6;14596:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14580:44;;14635:23;14661:28;14683:5;14661:17;14673:4;14661:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14635:54;;14708:15;14725:4;14731:5;14700:37;;;;;;;;;14276:469;;;;;;;:::o;14753:534::-;14947:7;14969;14991;15026:15;15044:24;15056:11;15044:7;:11;;:24;;;;:::i;:::-;15026:42;;15079:12;15094:21;15103:11;15094:4;:8;;:21;;;;:::i;:::-;15079:36;;15126:13;15142:22;15152:11;15142:5;:9;;:22;;;;:::i;:::-;15126:38;;15175:23;15201:28;15223:5;15201:17;15213:4;15201:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15175:54;;15248:7;15257:15;15274:4;15240:39;;;;;;;;;;14753:534;;;;;;;;:::o;2650:246::-;2708:7;2737:1;2732;:6;2728:47;;;2762:1;2755:8;;;;2728:47;2785:9;2801:1;2797;:5;;;;:::i;:::-;2785:17;;2830:1;2825;2821;:5;;;;:::i;:::-;:10;2813:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2887:1;2880:8;;;2650:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;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:329::-;6285:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:119;;;6340:79;;:::i;:::-;6302:119;6460:1;6485:53;6530:7;6521:6;6510:9;6506:22;6485:53;:::i;:::-;6475:63;;6431:117;6226:329;;;;:::o;6561:116::-;6631:21;6646:5;6631:21;:::i;:::-;6624:5;6621:32;6611:60;;6667:1;6664;6657:12;6611:60;6561:116;:::o;6683:133::-;6726:5;6764:6;6751:20;6742:29;;6780:30;6804:5;6780:30;:::i;:::-;6683:133;;;;:::o;6822:323::-;6878:6;6927:2;6915:9;6906:7;6902:23;6898:32;6895:119;;;6933:79;;:::i;:::-;6895:119;7053:1;7078:50;7120:7;7111:6;7100:9;7096:22;7078:50;:::i;:::-;7068:60;;7024:114;6822:323;;;;:::o;7151:765::-;7237:6;7245;7253;7261;7310:3;7298:9;7289:7;7285:23;7281:33;7278:120;;;7317:79;;:::i;:::-;7278:120;7437:1;7462:53;7507:7;7498:6;7487:9;7483:22;7462:53;:::i;:::-;7452:63;;7408:117;7564:2;7590:53;7635:7;7626:6;7615:9;7611:22;7590:53;:::i;:::-;7580:63;;7535:118;7692:2;7718:53;7763:7;7754:6;7743:9;7739:22;7718:53;:::i;:::-;7708:63;;7663:118;7820:2;7846:53;7891:7;7882:6;7871:9;7867:22;7846:53;:::i;:::-;7836:63;;7791:118;7151:765;;;;;;;:::o;7922:474::-;7990:6;7998;8047:2;8035:9;8026:7;8022:23;8018:32;8015:119;;;8053:79;;:::i;:::-;8015:119;8173:1;8198:53;8243:7;8234:6;8223:9;8219:22;8198:53;:::i;:::-;8188:63;;8144:117;8300:2;8326:53;8371:7;8362:6;8351:9;8347:22;8326:53;:::i;:::-;8316:63;;8271:118;7922:474;;;;;:::o;8402:182::-;8542:34;8538:1;8530:6;8526:14;8519:58;8402:182;:::o;8590:366::-;8732:3;8753:67;8817:2;8812:3;8753:67;:::i;:::-;8746:74;;8829:93;8918:3;8829:93;:::i;:::-;8947:2;8942:3;8938:12;8931:19;;8590:366;;;:::o;8962:419::-;9128:4;9166:2;9155:9;9151:18;9143:26;;9215:9;9209:4;9205:20;9201:1;9190:9;9186:17;9179:47;9243:131;9369:4;9243:131;:::i;:::-;9235:139;;8962:419;;;:::o;9387:225::-;9527:34;9523:1;9515:6;9511:14;9504:58;9596:8;9591:2;9583:6;9579:15;9572:33;9387:225;:::o;9618:366::-;9760:3;9781:67;9845:2;9840:3;9781:67;:::i;:::-;9774:74;;9857:93;9946:3;9857:93;:::i;:::-;9975:2;9970:3;9966:12;9959:19;;9618:366;;;:::o;9990:419::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10243:9;10237:4;10233:20;10229:1;10218:9;10214:17;10207:47;10271:131;10397:4;10271:131;:::i;:::-;10263:139;;9990:419;;;:::o;10415:223::-;10555:34;10551:1;10543:6;10539:14;10532:58;10624:6;10619:2;10611:6;10607:15;10600:31;10415:223;:::o;10644:366::-;10786:3;10807:67;10871:2;10866:3;10807:67;:::i;:::-;10800:74;;10883:93;10972:3;10883:93;:::i;:::-;11001:2;10996:3;10992:12;10985:19;;10644:366;;;:::o;11016:419::-;11182:4;11220:2;11209:9;11205:18;11197:26;;11269:9;11263:4;11259:20;11255:1;11244:9;11240:17;11233:47;11297:131;11423:4;11297:131;:::i;:::-;11289:139;;11016:419;;;:::o;11441:221::-;11581:34;11577:1;11569:6;11565:14;11558:58;11650:4;11645:2;11637:6;11633:15;11626:29;11441:221;:::o;11668:366::-;11810:3;11831:67;11895:2;11890:3;11831:67;:::i;:::-;11824:74;;11907:93;11996:3;11907:93;:::i;:::-;12025:2;12020:3;12016:12;12009:19;;11668:366;;;:::o;12040:419::-;12206:4;12244:2;12233:9;12229:18;12221:26;;12293:9;12287:4;12283:20;12279:1;12268:9;12264:17;12257:47;12321:131;12447:4;12321:131;:::i;:::-;12313:139;;12040:419;;;:::o;12465:224::-;12605:34;12601:1;12593:6;12589:14;12582:58;12674:7;12669:2;12661:6;12657:15;12650:32;12465:224;:::o;12695:366::-;12837:3;12858:67;12922:2;12917:3;12858:67;:::i;:::-;12851:74;;12934:93;13023:3;12934:93;:::i;:::-;13052:2;13047:3;13043:12;13036:19;;12695:366;;;:::o;13067:419::-;13233:4;13271:2;13260:9;13256:18;13248:26;;13320:9;13314:4;13310:20;13306:1;13295:9;13291:17;13284:47;13348:131;13474:4;13348:131;:::i;:::-;13340:139;;13067:419;;;:::o;13492:222::-;13632:34;13628:1;13620:6;13616:14;13609:58;13701:5;13696:2;13688:6;13684:15;13677:30;13492:222;:::o;13720:366::-;13862:3;13883:67;13947:2;13942:3;13883:67;:::i;:::-;13876:74;;13959:93;14048:3;13959:93;:::i;:::-;14077:2;14072:3;14068:12;14061:19;;13720:366;;;:::o;14092:419::-;14258:4;14296:2;14285:9;14281:18;14273:26;;14345:9;14339:4;14335:20;14331:1;14320:9;14316:17;14309:47;14373:131;14499:4;14373:131;:::i;:::-;14365:139;;14092:419;;;:::o;14517:228::-;14657:34;14653:1;14645:6;14641:14;14634:58;14726:11;14721:2;14713:6;14709:15;14702:36;14517:228;:::o;14751:366::-;14893:3;14914:67;14978:2;14973:3;14914:67;:::i;:::-;14907:74;;14990:93;15079:3;14990:93;:::i;:::-;15108:2;15103:3;15099:12;15092:19;;14751:366;;;:::o;15123:419::-;15289:4;15327:2;15316:9;15312:18;15304:26;;15376:9;15370:4;15366:20;15362:1;15351:9;15347:17;15340:47;15404:131;15530:4;15404:131;:::i;:::-;15396:139;;15123:419;;;:::o;15548:250::-;15688:34;15684:1;15676:6;15672:14;15665:58;15757:33;15752:2;15744:6;15740:15;15733:58;15548:250;:::o;15804:366::-;15946:3;15967:67;16031:2;16026:3;15967:67;:::i;:::-;15960:74;;16043:93;16132:3;16043:93;:::i;:::-;16161:2;16156:3;16152:12;16145:19;;15804:366;;;:::o;16176:419::-;16342:4;16380:2;16369:9;16365:18;16357:26;;16429:9;16423:4;16419:20;16415:1;16404:9;16400:17;16393:47;16457:131;16583:4;16457:131;:::i;:::-;16449:139;;16176:419;;;:::o;16601:178::-;16741:30;16737:1;16729:6;16725:14;16718:54;16601:178;:::o;16785:366::-;16927:3;16948:67;17012:2;17007:3;16948:67;:::i;:::-;16941:74;;17024:93;17113:3;17024:93;:::i;:::-;17142:2;17137:3;17133:12;17126:19;;16785:366;;;:::o;17157:419::-;17323:4;17361:2;17350:9;17346:18;17338:26;;17410:9;17404:4;17400:20;17396:1;17385:9;17381:17;17374:47;17438:131;17564:4;17438:131;:::i;:::-;17430:139;;17157:419;;;:::o;17582:222::-;17722:34;17718:1;17710:6;17706:14;17699:58;17791:5;17786:2;17778:6;17774:15;17767:30;17582:222;:::o;17810:366::-;17952:3;17973:67;18037:2;18032:3;17973:67;:::i;:::-;17966:74;;18049:93;18138:3;18049:93;:::i;:::-;18167:2;18162:3;18158:12;18151:19;;17810:366;;;:::o;18182:419::-;18348:4;18386:2;18375:9;18371:18;18363:26;;18435:9;18429:4;18425:20;18421:1;18410:9;18406:17;18399:47;18463:131;18589:4;18463:131;:::i;:::-;18455:139;;18182:419;;;:::o;18607:180::-;18655:77;18652:1;18645:88;18752:4;18749:1;18742:15;18776:4;18773:1;18766:15;18793:305;18833:3;18852:20;18870:1;18852:20;:::i;:::-;18847:25;;18886:20;18904:1;18886:20;:::i;:::-;18881:25;;19040:1;18972:66;18968:74;18965:1;18962:81;18959:107;;;19046:18;;:::i;:::-;18959:107;19090:1;19087;19083:9;19076:16;;18793:305;;;;:::o;19104:222::-;19244:34;19240:1;19232:6;19228:14;19221:58;19313:5;19308:2;19300:6;19296:15;19289:30;19104:222;:::o;19332:366::-;19474:3;19495:67;19559:2;19554:3;19495:67;:::i;:::-;19488:74;;19571:93;19660:3;19571:93;:::i;:::-;19689:2;19684:3;19680:12;19673:19;;19332:366;;;:::o;19704:419::-;19870:4;19908:2;19897:9;19893:18;19885:26;;19957:9;19951:4;19947:20;19943:1;19932:9;19928:17;19921:47;19985:131;20111:4;19985:131;:::i;:::-;19977:139;;19704:419;;;:::o;20129:191::-;20169:4;20189:20;20207:1;20189:20;:::i;:::-;20184:25;;20223:20;20241:1;20223:20;:::i;:::-;20218:25;;20262:1;20259;20256:8;20253:34;;;20267:18;;:::i;:::-;20253:34;20312:1;20309;20305:9;20297:17;;20129:191;;;;:::o;20326:229::-;20466:34;20462:1;20454:6;20450:14;20443:58;20535:12;20530:2;20522:6;20518:15;20511:37;20326:229;:::o;20561:366::-;20703:3;20724:67;20788:2;20783:3;20724:67;:::i;:::-;20717:74;;20800:93;20889:3;20800:93;:::i;:::-;20918:2;20913:3;20909:12;20902:19;;20561:366;;;:::o;20933:419::-;21099:4;21137:2;21126:9;21122:18;21114:26;;21186:9;21180:4;21176:20;21172:1;21161:9;21157:17;21150:47;21214:131;21340:4;21214:131;:::i;:::-;21206:139;;20933:419;;;:::o;21358:180::-;21406:77;21403:1;21396:88;21503:4;21500:1;21493:15;21527:4;21524:1;21517:15;21544:180;21592:77;21589:1;21582:88;21689:4;21686:1;21679:15;21713:4;21710:1;21703:15;21730:143;21787:5;21818:6;21812:13;21803:22;;21834:33;21861:5;21834:33;:::i;:::-;21730:143;;;;:::o;21879:351::-;21949:6;21998:2;21986:9;21977:7;21973:23;21969:32;21966:119;;;22004:79;;:::i;:::-;21966:119;22124:1;22149:64;22205:7;22196:6;22185:9;22181:22;22149:64;:::i;:::-;22139:74;;22095:128;21879:351;;;;:::o;22236:85::-;22281:7;22310:5;22299:16;;22236:85;;;:::o;22327:158::-;22385:9;22418:61;22436:42;22445:32;22471:5;22445:32;:::i;:::-;22436:42;:::i;:::-;22418:61;:::i;:::-;22405:74;;22327:158;;;:::o;22491:147::-;22586:45;22625:5;22586:45;:::i;:::-;22581:3;22574:58;22491:147;;:::o;22644:114::-;22711:6;22745:5;22739:12;22729:22;;22644:114;;;:::o;22764:184::-;22863:11;22897:6;22892:3;22885:19;22937:4;22932:3;22928:14;22913:29;;22764:184;;;;:::o;22954:132::-;23021:4;23044:3;23036:11;;23074:4;23069:3;23065:14;23057:22;;22954:132;;;:::o;23092:108::-;23169:24;23187:5;23169:24;:::i;:::-;23164:3;23157:37;23092:108;;:::o;23206:179::-;23275:10;23296:46;23338:3;23330:6;23296:46;:::i;:::-;23374:4;23369:3;23365:14;23351:28;;23206:179;;;;:::o;23391:113::-;23461:4;23493;23488:3;23484:14;23476:22;;23391:113;;;:::o;23540:732::-;23659:3;23688:54;23736:5;23688:54;:::i;:::-;23758:86;23837:6;23832:3;23758:86;:::i;:::-;23751:93;;23868:56;23918:5;23868:56;:::i;:::-;23947:7;23978:1;23963:284;23988:6;23985:1;23982:13;23963:284;;;24064:6;24058:13;24091:63;24150:3;24135:13;24091:63;:::i;:::-;24084:70;;24177:60;24230:6;24177:60;:::i;:::-;24167:70;;24023:224;24010:1;24007;24003:9;23998:14;;23963:284;;;23967:14;24263:3;24256:10;;23664:608;;;23540:732;;;;:::o;24278:831::-;24541:4;24579:3;24568:9;24564:19;24556:27;;24593:71;24661:1;24650:9;24646:17;24637:6;24593:71;:::i;:::-;24674:80;24750:2;24739:9;24735:18;24726:6;24674:80;:::i;:::-;24801:9;24795:4;24791:20;24786:2;24775:9;24771:18;24764:48;24829:108;24932:4;24923:6;24829:108;:::i;:::-;24821:116;;24947:72;25015:2;25004:9;25000:18;24991:6;24947:72;:::i;:::-;25029:73;25097:3;25086:9;25082:19;25073:6;25029:73;:::i;:::-;24278:831;;;;;;;;:::o;25115:180::-;25163:77;25160:1;25153:88;25260:4;25257:1;25250:15;25284:4;25281:1;25274:15;25301:185;25341:1;25358:20;25376:1;25358:20;:::i;:::-;25353:25;;25392:20;25410:1;25392:20;:::i;:::-;25387:25;;25431:1;25421:35;;25436:18;;:::i;:::-;25421:35;25478:1;25475;25471:9;25466:14;;25301:185;;;;:::o;25492:177::-;25632:29;25628:1;25620:6;25616:14;25609:53;25492:177;:::o;25675:366::-;25817:3;25838:67;25902:2;25897:3;25838:67;:::i;:::-;25831:74;;25914:93;26003:3;25914:93;:::i;:::-;26032:2;26027:3;26023:12;26016:19;;25675:366;;;:::o;26047:419::-;26213:4;26251:2;26240:9;26236:18;26228:26;;26300:9;26294:4;26290:20;26286:1;26275:9;26271:17;26264:47;26328:131;26454:4;26328:131;:::i;:::-;26320:139;;26047:419;;;:::o;26472:348::-;26512:7;26535:20;26553:1;26535:20;:::i;:::-;26530:25;;26569:20;26587:1;26569:20;:::i;:::-;26564:25;;26757:1;26689:66;26685:74;26682:1;26679:81;26674:1;26667:9;26660:17;26656:105;26653:131;;;26764:18;;:::i;:::-;26653:131;26812:1;26809;26805:9;26794:20;;26472:348;;;;:::o;26826:220::-;26966:34;26962:1;26954:6;26950:14;26943:58;27035:3;27030:2;27022:6;27018:15;27011:28;26826:220;:::o;27052:366::-;27194:3;27215:67;27279:2;27274:3;27215:67;:::i;:::-;27208:74;;27291:93;27380:3;27291:93;:::i;:::-;27409:2;27404:3;27400:12;27393:19;;27052:366;;;:::o;27424:419::-;27590:4;27628:2;27617:9;27613:18;27605:26;;27677:9;27671:4;27667:20;27663:1;27652:9;27648:17;27641:47;27705:131;27831:4;27705:131;:::i;:::-;27697:139;;27424:419;;;:::o

Swarm Source

ipfs://2e8b44c1b9a5aa657abcfbdc92918f136de5350631fea77222812acec44aea84

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.