ETH Price: $3,122.52 (-0.26%)

Contract

0x87CA535f52130cEFa655C660f2e6Fb45B35eAa4f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer195022062024-03-24 5:02:23240 days ago1711256543IN
0x87CA535f...5B35eAa4f
0 ETH0.0049224919.27420026
Set Fee193163282024-02-27 3:53:11266 days ago1709005991IN
0x87CA535f...5B35eAa4f
0 ETH0.0018081252.10128668
Approve193160772024-02-27 3:02:35266 days ago1709002955IN
0x87CA535f...5B35eAa4f
0 ETH0.0033071170.01709397
Set Trading193160722024-02-27 3:01:35266 days ago1709002895IN
0x87CA535f...5B35eAa4f
0 ETH0.0014903751.36029098
Set Fee193160522024-02-27 2:57:35266 days ago1709002655IN
0x87CA535f...5B35eAa4f
0 ETH0.001956449.509063
Approve193160482024-02-27 2:56:47266 days ago1709002607IN
0x87CA535f...5B35eAa4f
0 ETH0.0022223347.36331982
0x60806040193160272024-02-27 2:52:35266 days ago1709002355IN
 Create: ForesightAI
0 ETH0.2650188741.13078823

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
195022062024-03-24 5:02:23240 days ago1711256543
0x87CA535f...5B35eAa4f
0 ETH
195022062024-03-24 5:02:23240 days ago1711256543
0x87CA535f...5B35eAa4f
0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ForesightAI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-27
*/

// SPDX-License-Identifier: Unlicensed

/**
___________                         .__       .__     __     _____  .___ 
\_   _____/__________   ____   _____|__| ____ |  |___/  |_  /  _  \ |   |
 |    __)/  _ \_  __ \_/ __ \ /  ___/  |/ ___\|  |  \   __\/  /_\  \|   |
 |     \(  <_> )  | \/\  ___/ \___ \|  / /_/  >   Y  \  | /    |    \   |
 \___  / \____/|__|    \___  >____  >__\___  /|___|  /__| \____|____/___|
     \/                    \/     \/  /_____/      \/                  

Website: https://www.foresightai.tech/
Twitter: https://twitter.com/foresightaieth
Telegram: https://t.me/foresightaieth
WhitePaper: https://foresight-ai.gitbook.io/
**/
pragma solidity ^0.8.18;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract ForesightAI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "ForesightAI";
    string private constant _symbol = "ForeAI";
    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 = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 5;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 5;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _developmentAddress = payable(0x8d74E08895260AA24D8b6B0f469d2F7EB2bdB427); 
    address payable private _marketingAddress = payable(0x8d74E08895260AA24D8b6B0f469d2F7EB2bdB427);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 2000000 * 10**9; 
    uint256 public _maxWalletSize = 2000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    bool private _maxTxn = false;
    bool private _maxWallet = false;
    bool private _maxTxnCan = false;
    bool private _maxWalletCan = false;

    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,
                "the transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount has to 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), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "Only owner can trade before trading activation");
            }
 
            require(amount <= _maxTxAmount, "Exceeded max transaction limit");
            require(!bots[from] && !bots[to], "This account is on the blacklist");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "Exceeds max wallet balance");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 95, "Buy tax must be between 0% and 95%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 95, "Sell tax must be between 0% and 95%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount, bool maxTxn, bool maxTxnCan) public onlyOwner {
           _maxTxAmount = maxTxAmount;
           _maxTxn = maxTxn;
           _maxTxnCan = maxTxnCan;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize, bool maxWallet, bool maxWalletCan) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        _maxWallet = maxWallet;
        _maxWalletCan = maxWalletCan;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

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

608060405267016345785d8a00005f196200001b919062000748565b5f19620000299190620007ac565b6006555f60085560056009555f600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f55738d74e08895260aa24d8b6b0f469d2f7eb2bdb42760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738d74e08895260aa24d8b6b0f469d2f7eb2bdb42760135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066071afd498d000060165566071afd498d000060175564e8d4a510006018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055505f601960026101000a81548160ff0219169083151502179055505f601960036101000a81548160ff021916908315150217905550348015620001c4575f80fd5b505f620001d6620006e460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000288620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000367573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038d91906200084b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200041991906200084b565b6040518363ffffffff1660e01b8152600401620004389291906200088c565b6020604051808303815f875af115801562000455573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200047b91906200084b565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004cf620006eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200066f620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006d59190620008c8565b60405180910390a350620008e3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007548262000712565b9150620007618362000712565b9250826200077457620007736200071b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007b88262000712565b9150620007c58362000712565b9250828203905081811115620007e057620007df6200077f565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200081582620007ea565b9050919050565b620008278162000809565b811462000832575f80fd5b50565b5f8151905062000845816200081c565b92915050565b5f60208284031215620008635762000862620007e6565b5b5f620008728482850162000835565b91505092915050565b620008868162000809565b82525050565b5f604082019050620008a15f8301856200087b565b620008b060208301846200087b565b9392505050565b620008c28162000712565b82525050565b5f602082019050620008dd5f830184620008b7565b92915050565b613eec80620008f15f395ff3fe6080604052600436106101cf575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f9a55c0116100d05780638f9a55c0146104e657806395d89b411461051057806398a5c3151461053a578063a2a957bb14610562576101d6565b80637f2feddc146104585780638da5cb5b146104945780638f70ccf7146104be576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a6146104185780637d1db4a51461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612e0c565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612ecd565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612f20565b610850565b60405161025f9190612f78565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612fec565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190613014565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd919061302d565b6108a1565b6040516102ef9190612f78565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190613014565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190613098565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d91906130c0565b60405180910390f35b348015610381575f80fd5b5061039c600480360381019061039791906130d9565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061312e565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd91906130d9565b610c11565b60405161040f9190613014565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610442610dad565b60405161044f9190613014565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906130d9565b610db3565b60405161048b9190613014565b60405180910390f35b34801561049f575f80fd5b506104a8610dc8565b6040516104b591906130c0565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061312e565b610def565b005b3480156104f1575f80fd5b506104fa610ea0565b6040516105079190613014565b60405180910390f35b34801561051b575f80fd5b50610524610ea6565b6040516105319190612ecd565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613159565b610ee3565b005b34801561056d575f80fd5b5061058860048036038101906105839190613184565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f20565b611177565b6040516105bd9190612f78565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e791906131e8565b611194565b005b3480156105f9575f80fd5b50610614600480360381019061060f91906130d9565b611267565b6040516106219190612f78565b60405180910390f35b348015610635575f80fd5b5061063e611284565b005b34801561064b575f80fd5b5061066660048036038101906106619190613291565b611359565b005b348015610673575f80fd5b5061068e600480360381019061068991906132ee565b611488565b60405161069b9190613014565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c591906130d9565b61150a565b005b3480156106d7575f80fd5b506106f260048036038101906106ed91906131e8565b6116c7565b005b6106fc61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613376565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613394565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600b81526020017f466f726573696768744149000000000000000000000000000000000000000000815250905090565b5f61086361085c61179b565b84846117a2565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108ad848484611965565b61096a846108b961179b565b61096585604051806060016040528060258152602001613e926025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c61179b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c59092919063ffffffff16565b6117a2565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b061179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613376565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613376565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8461179b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e81612227565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f565b9050919050565b610c6761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613376565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f466f726541490000000000000000000000000000000000000000000000000000815250905090565b610eeb61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613376565b60405180910390fd5b8060188190555050565b610f8961179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613376565b60405180910390fd5b5f8410158015611026575060048411155b611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613431565b60405180910390fd5b5f82101580156110765750605f8211155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906134bf565b60405180910390fd5b5f83101580156110c6575060048311155b611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061354d565b60405180910390fd5b5f81101580156111165750605f8111155b611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c906135db565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61118a61118361179b565b8484611965565b6001905092915050565b61119c61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90613376565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c461179b565b73ffffffffffffffffffffffffffffffffffffffff161480611339575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b611341575f80fd5b5f61134b30610c11565b9050611356816122fb565b50565b61136161179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613376565b60405180910390fd5b5f5b83839050811015611482578160055f86868581811061141157611410613394565b5b905060200201602081019061142691906130d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113ef565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61151261179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613669565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116cf61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613376565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906136d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613739565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119589190613014565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906137a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3890613809565b60405180910390fd5b5f8111611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613871565b60405180910390fd5b611a8b610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611af95750611ac9610dc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257601560149054906101000a900460ff16611b8857611b1a610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906138ff565b60405180910390fd5b5b601654811115611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613967565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c6b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906139cf565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d565760175481611d0b84610c11565b611d159190613a1a565b10611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c90613a97565b60405180910390fd5b5b5f611d6030610c11565b90505f60185482101590506016548210611d7a5760165491505b808015611d92575060158054906101000a900460ff16155b8015611deb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e035750601560169054906101000a900460ff165b8015611e56575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea9575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecf57611eb7826122fb565b5f4790505f811115611ecd57611ecc47612227565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f72575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612023575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612022575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612030575f90506121b3565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120d9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120f157600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561219a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121b257600a54600c81905550600b54600d819055505b5b6121bf84848484612564565b50505050565b5f83831115829061220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122039190612ecd565b60405180910390fd5b505f838561221a9190613ab5565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561228b573d5f803e3d5ffd5b5050565b5f6006548211156122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90613b58565b60405180910390fd5b5f6122de612591565b90506122f381846125ba90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233157612330612c76565b5b60405190808252806020026020018201604052801561235f5781602001602082028036833780820191505090505b50905030815f8151811061237657612375613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190613b8a565b8160018151811061245257612451613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b83060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161251a959493929190613ca5565b5f604051808303815f87803b158015612531575f80fd5b505af1158015612543573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061257257612571612603565b5b61257d84848461263c565b8061258b5761258a6127fc565b5b50505050565b5f805f61259c612810565b915091506125b381836125ba90919063ffffffff16565b9250505090565b5f6125fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061286c565b905092915050565b5f600c5414801561261557505f600d54145b61263a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061264b876128cd565b9550955095509550955095506126a78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127388560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612782816129d3565b61278c8483612a8a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127e99190613014565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061284167016345785d8a00006006546125ba90919063ffffffff16565b82101561285f5760065467016345785d8a0000935093505050612868565b81819350935050505b9091565b5f80831182906128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a99190612ecd565b60405180910390fd5b505f83856128c09190613d2a565b9050809150509392505050565b5f805f805f805f805f6128e58a600c54600d54612ac4565b9250925092505f6128f4612591565b90505f805f6129058e878787612b56565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61296e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121c5565b905092915050565b5f8082846129849190613a1a565b9050838110156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c090613da4565b60405180910390fd5b8091505092915050565b5f6129dc612591565b90505f6129f28284612bda90919063ffffffff16565b9050612a448160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a9f8260065461292d90919063ffffffff16565b600681905550612aba8160075461297690919063ffffffff16565b6007819055505050565b5f805f80612aee6064612ae0888a612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b176064612b09888b612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b3f82612b31858c61292d90919063ffffffff16565b61292d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b6d8589612bda90919063ffffffff16565b90505f612b838689612bda90919063ffffffff16565b90505f612b998789612bda90919063ffffffff16565b90505f612bc182612bb3858761292d90919063ffffffff16565b61292d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bea575f9050612c4b565b5f8284612bf79190613dc2565b9050828482612c069190613d2a565b14612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90613e73565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cac82612c66565b810181811067ffffffffffffffff82111715612ccb57612cca612c76565b5b80604052505050565b5f612cdd612c51565b9050612ce98282612ca3565b919050565b5f67ffffffffffffffff821115612d0857612d07612c76565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4682612d1d565b9050919050565b612d5681612d3c565b8114612d60575f80fd5b50565b5f81359050612d7181612d4d565b92915050565b5f612d89612d8484612cee565b612cd4565b90508083825260208201905060208402830185811115612dac57612dab612d19565b5b835b81811015612dd55780612dc18882612d63565b845260208401935050602081019050612dae565b5050509392505050565b5f82601f830112612df357612df2612c62565b5b8135612e03848260208601612d77565b91505092915050565b5f60208284031215612e2157612e20612c5a565b5b5f82013567ffffffffffffffff811115612e3e57612e3d612c5e565b5b612e4a84828501612ddf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8a578082015181840152602081019050612e6f565b5f8484015250505050565b5f612e9f82612e53565b612ea98185612e5d565b9350612eb9818560208601612e6d565b612ec281612c66565b840191505092915050565b5f6020820190508181035f830152612ee58184612e95565b905092915050565b5f819050919050565b612eff81612eed565b8114612f09575f80fd5b50565b5f81359050612f1a81612ef6565b92915050565b5f8060408385031215612f3657612f35612c5a565b5b5f612f4385828601612d63565b9250506020612f5485828601612f0c565b9150509250929050565b5f8115159050919050565b612f7281612f5e565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f819050919050565b5f612fb4612faf612faa84612d1d565b612f91565b612d1d565b9050919050565b5f612fc582612f9a565b9050919050565b5f612fd682612fbb565b9050919050565b612fe681612fcc565b82525050565b5f602082019050612fff5f830184612fdd565b92915050565b61300e81612eed565b82525050565b5f6020820190506130275f830184613005565b92915050565b5f805f6060848603121561304457613043612c5a565b5b5f61305186828701612d63565b935050602061306286828701612d63565b925050604061307386828701612f0c565b9150509250925092565b5f60ff82169050919050565b6130928161307d565b82525050565b5f6020820190506130ab5f830184613089565b92915050565b6130ba81612d3c565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612c5a565b5b5f6130fb84828501612d63565b91505092915050565b61310d81612f5e565b8114613117575f80fd5b50565b5f8135905061312881613104565b92915050565b5f6020828403121561314357613142612c5a565b5b5f6131508482850161311a565b91505092915050565b5f6020828403121561316e5761316d612c5a565b5b5f61317b84828501612f0c565b91505092915050565b5f805f806080858703121561319c5761319b612c5a565b5b5f6131a987828801612f0c565b94505060206131ba87828801612f0c565b93505060406131cb87828801612f0c565b92505060606131dc87828801612f0c565b91505092959194509250565b5f805f606084860312156131ff576131fe612c5a565b5b5f61320c86828701612f0c565b935050602061321d8682870161311a565b925050604061322e8682870161311a565b9150509250925092565b5f80fd5b5f8083601f84011261325157613250612c62565b5b8235905067ffffffffffffffff81111561326e5761326d613238565b5b60208301915083602082028301111561328a57613289612d19565b5b9250929050565b5f805f604084860312156132a8576132a7612c5a565b5b5f84013567ffffffffffffffff8111156132c5576132c4612c5e565b5b6132d18682870161323c565b935093505060206132e48682870161311a565b9150509250925092565b5f806040838503121561330457613303612c5a565b5b5f61331185828601612d63565b925050602061332285828601612d63565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613360602083612e5d565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b5f61341b602583612e5d565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a9602283612e5d565b91506134b48261344f565b604082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b5f613537602683612e5d565b9150613542826134dd565b604082019050919050565b5f6020820190508181035f8301526135648161352b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c5602383612e5d565b91506135d08261356b565b604082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613653602683612e5d565b915061365e826135f9565b604082019050919050565b5f6020820190508181035f83015261368081613647565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6136bb601f83612e5d565b91506136c682613687565b602082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f613723601d83612e5d565b915061372e826136ef565b602082019050919050565b5f6020820190508181035f83015261375081613717565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f61378b601f83612e5d565b915061379682613757565b602082019050919050565b5f6020820190508181035f8301526137b88161377f565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6137f3601d83612e5d565b91506137fe826137bf565b602082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f61385b601b83612e5d565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6138e9602e83612e5d565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f613951601e83612e5d565b915061395c8261391d565b602082019050919050565b5f6020820190508181035f83015261397e81613945565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6139b9602083612e5d565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a2482612eed565b9150613a2f83612eed565b9250828201905080821115613a4757613a466139ed565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f613a81601a83612e5d565b9150613a8c82613a4d565b602082019050919050565b5f6020820190508181035f830152613aae81613a75565b9050919050565b5f613abf82612eed565b9150613aca83612eed565b9250828203905081811115613ae257613ae16139ed565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613b42602c83612e5d565b9150613b4d82613ae8565b604082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b5f81519050613b8481612d4d565b92915050565b5f60208284031215613b9f57613b9e612c5a565b5b5f613bac84828501613b76565b91505092915050565b5f819050919050565b5f613bd8613bd3613bce84613bb5565b612f91565b612eed565b9050919050565b613be881613bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2081612d3c565b82525050565b5f613c318383613c17565b60208301905092915050565b5f602082019050919050565b5f613c5382613bee565b613c5d8185613bf8565b9350613c6883613c08565b805f5b83811015613c98578151613c7f8882613c26565b9750613c8a83613c3d565b925050600181019050613c6b565b5085935050505092915050565b5f60a082019050613cb85f830188613005565b613cc56020830187613bdf565b8181036040830152613cd78186613c49565b9050613ce660608301856130b1565b613cf36080830184613005565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3482612eed565b9150613d3f83612eed565b925082613d4f57613d4e613cfd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d8e601b83612e5d565b9150613d9982613d5a565b602082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b5f613dcc82612eed565b9150613dd783612eed565b9250828202613de581612eed565b91508282048414831517613dfc57613dfb6139ed565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e5d602183612e5d565b9150613e6882613e03565b604082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ddfb1ddaa976f1dae0c613b455e14d8aa43c60dc5d6173659e95edf7acf7f6f864736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f9a55c0116100d05780638f9a55c0146104e657806395d89b411461051057806398a5c3151461053a578063a2a957bb14610562576101d6565b80637f2feddc146104585780638da5cb5b146104945780638f70ccf7146104be576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a6146104185780637d1db4a51461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612e0c565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612ecd565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612f20565b610850565b60405161025f9190612f78565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612fec565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190613014565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd919061302d565b6108a1565b6040516102ef9190612f78565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190613014565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190613098565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d91906130c0565b60405180910390f35b348015610381575f80fd5b5061039c600480360381019061039791906130d9565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061312e565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd91906130d9565b610c11565b60405161040f9190613014565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610442610dad565b60405161044f9190613014565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906130d9565b610db3565b60405161048b9190613014565b60405180910390f35b34801561049f575f80fd5b506104a8610dc8565b6040516104b591906130c0565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061312e565b610def565b005b3480156104f1575f80fd5b506104fa610ea0565b6040516105079190613014565b60405180910390f35b34801561051b575f80fd5b50610524610ea6565b6040516105319190612ecd565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613159565b610ee3565b005b34801561056d575f80fd5b5061058860048036038101906105839190613184565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f20565b611177565b6040516105bd9190612f78565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e791906131e8565b611194565b005b3480156105f9575f80fd5b50610614600480360381019061060f91906130d9565b611267565b6040516106219190612f78565b60405180910390f35b348015610635575f80fd5b5061063e611284565b005b34801561064b575f80fd5b5061066660048036038101906106619190613291565b611359565b005b348015610673575f80fd5b5061068e600480360381019061068991906132ee565b611488565b60405161069b9190613014565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c591906130d9565b61150a565b005b3480156106d7575f80fd5b506106f260048036038101906106ed91906131e8565b6116c7565b005b6106fc61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613376565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613394565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600b81526020017f466f726573696768744149000000000000000000000000000000000000000000815250905090565b5f61086361085c61179b565b84846117a2565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108ad848484611965565b61096a846108b961179b565b61096585604051806060016040528060258152602001613e926025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c61179b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c59092919063ffffffff16565b6117a2565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b061179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613376565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613376565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8461179b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e81612227565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f565b9050919050565b610c6761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613376565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f466f726541490000000000000000000000000000000000000000000000000000815250905090565b610eeb61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613376565b60405180910390fd5b8060188190555050565b610f8961179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613376565b60405180910390fd5b5f8410158015611026575060048411155b611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613431565b60405180910390fd5b5f82101580156110765750605f8211155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906134bf565b60405180910390fd5b5f83101580156110c6575060048311155b611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061354d565b60405180910390fd5b5f81101580156111165750605f8111155b611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c906135db565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61118a61118361179b565b8484611965565b6001905092915050565b61119c61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90613376565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c461179b565b73ffffffffffffffffffffffffffffffffffffffff161480611339575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b611341575f80fd5b5f61134b30610c11565b9050611356816122fb565b50565b61136161179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613376565b60405180910390fd5b5f5b83839050811015611482578160055f86868581811061141157611410613394565b5b905060200201602081019061142691906130d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113ef565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61151261179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613669565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116cf61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613376565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906136d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613739565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119589190613014565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906137a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3890613809565b60405180910390fd5b5f8111611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613871565b60405180910390fd5b611a8b610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611af95750611ac9610dc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257601560149054906101000a900460ff16611b8857611b1a610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906138ff565b60405180910390fd5b5b601654811115611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613967565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c6b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906139cf565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d565760175481611d0b84610c11565b611d159190613a1a565b10611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c90613a97565b60405180910390fd5b5b5f611d6030610c11565b90505f60185482101590506016548210611d7a5760165491505b808015611d92575060158054906101000a900460ff16155b8015611deb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e035750601560169054906101000a900460ff165b8015611e56575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea9575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecf57611eb7826122fb565b5f4790505f811115611ecd57611ecc47612227565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f72575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612023575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612022575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612030575f90506121b3565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120d9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120f157600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561219a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121b257600a54600c81905550600b54600d819055505b5b6121bf84848484612564565b50505050565b5f83831115829061220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122039190612ecd565b60405180910390fd5b505f838561221a9190613ab5565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561228b573d5f803e3d5ffd5b5050565b5f6006548211156122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90613b58565b60405180910390fd5b5f6122de612591565b90506122f381846125ba90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233157612330612c76565b5b60405190808252806020026020018201604052801561235f5781602001602082028036833780820191505090505b50905030815f8151811061237657612375613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190613b8a565b8160018151811061245257612451613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b83060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161251a959493929190613ca5565b5f604051808303815f87803b158015612531575f80fd5b505af1158015612543573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061257257612571612603565b5b61257d84848461263c565b8061258b5761258a6127fc565b5b50505050565b5f805f61259c612810565b915091506125b381836125ba90919063ffffffff16565b9250505090565b5f6125fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061286c565b905092915050565b5f600c5414801561261557505f600d54145b61263a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061264b876128cd565b9550955095509550955095506126a78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127388560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612782816129d3565b61278c8483612a8a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127e99190613014565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061284167016345785d8a00006006546125ba90919063ffffffff16565b82101561285f5760065467016345785d8a0000935093505050612868565b81819350935050505b9091565b5f80831182906128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a99190612ecd565b60405180910390fd5b505f83856128c09190613d2a565b9050809150509392505050565b5f805f805f805f805f6128e58a600c54600d54612ac4565b9250925092505f6128f4612591565b90505f805f6129058e878787612b56565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61296e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121c5565b905092915050565b5f8082846129849190613a1a565b9050838110156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c090613da4565b60405180910390fd5b8091505092915050565b5f6129dc612591565b90505f6129f28284612bda90919063ffffffff16565b9050612a448160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a9f8260065461292d90919063ffffffff16565b600681905550612aba8160075461297690919063ffffffff16565b6007819055505050565b5f805f80612aee6064612ae0888a612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b176064612b09888b612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b3f82612b31858c61292d90919063ffffffff16565b61292d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b6d8589612bda90919063ffffffff16565b90505f612b838689612bda90919063ffffffff16565b90505f612b998789612bda90919063ffffffff16565b90505f612bc182612bb3858761292d90919063ffffffff16565b61292d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bea575f9050612c4b565b5f8284612bf79190613dc2565b9050828482612c069190613d2a565b14612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90613e73565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cac82612c66565b810181811067ffffffffffffffff82111715612ccb57612cca612c76565b5b80604052505050565b5f612cdd612c51565b9050612ce98282612ca3565b919050565b5f67ffffffffffffffff821115612d0857612d07612c76565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4682612d1d565b9050919050565b612d5681612d3c565b8114612d60575f80fd5b50565b5f81359050612d7181612d4d565b92915050565b5f612d89612d8484612cee565b612cd4565b90508083825260208201905060208402830185811115612dac57612dab612d19565b5b835b81811015612dd55780612dc18882612d63565b845260208401935050602081019050612dae565b5050509392505050565b5f82601f830112612df357612df2612c62565b5b8135612e03848260208601612d77565b91505092915050565b5f60208284031215612e2157612e20612c5a565b5b5f82013567ffffffffffffffff811115612e3e57612e3d612c5e565b5b612e4a84828501612ddf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8a578082015181840152602081019050612e6f565b5f8484015250505050565b5f612e9f82612e53565b612ea98185612e5d565b9350612eb9818560208601612e6d565b612ec281612c66565b840191505092915050565b5f6020820190508181035f830152612ee58184612e95565b905092915050565b5f819050919050565b612eff81612eed565b8114612f09575f80fd5b50565b5f81359050612f1a81612ef6565b92915050565b5f8060408385031215612f3657612f35612c5a565b5b5f612f4385828601612d63565b9250506020612f5485828601612f0c565b9150509250929050565b5f8115159050919050565b612f7281612f5e565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f819050919050565b5f612fb4612faf612faa84612d1d565b612f91565b612d1d565b9050919050565b5f612fc582612f9a565b9050919050565b5f612fd682612fbb565b9050919050565b612fe681612fcc565b82525050565b5f602082019050612fff5f830184612fdd565b92915050565b61300e81612eed565b82525050565b5f6020820190506130275f830184613005565b92915050565b5f805f6060848603121561304457613043612c5a565b5b5f61305186828701612d63565b935050602061306286828701612d63565b925050604061307386828701612f0c565b9150509250925092565b5f60ff82169050919050565b6130928161307d565b82525050565b5f6020820190506130ab5f830184613089565b92915050565b6130ba81612d3c565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612c5a565b5b5f6130fb84828501612d63565b91505092915050565b61310d81612f5e565b8114613117575f80fd5b50565b5f8135905061312881613104565b92915050565b5f6020828403121561314357613142612c5a565b5b5f6131508482850161311a565b91505092915050565b5f6020828403121561316e5761316d612c5a565b5b5f61317b84828501612f0c565b91505092915050565b5f805f806080858703121561319c5761319b612c5a565b5b5f6131a987828801612f0c565b94505060206131ba87828801612f0c565b93505060406131cb87828801612f0c565b92505060606131dc87828801612f0c565b91505092959194509250565b5f805f606084860312156131ff576131fe612c5a565b5b5f61320c86828701612f0c565b935050602061321d8682870161311a565b925050604061322e8682870161311a565b9150509250925092565b5f80fd5b5f8083601f84011261325157613250612c62565b5b8235905067ffffffffffffffff81111561326e5761326d613238565b5b60208301915083602082028301111561328a57613289612d19565b5b9250929050565b5f805f604084860312156132a8576132a7612c5a565b5b5f84013567ffffffffffffffff8111156132c5576132c4612c5e565b5b6132d18682870161323c565b935093505060206132e48682870161311a565b9150509250925092565b5f806040838503121561330457613303612c5a565b5b5f61331185828601612d63565b925050602061332285828601612d63565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613360602083612e5d565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b5f61341b602583612e5d565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a9602283612e5d565b91506134b48261344f565b604082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b5f613537602683612e5d565b9150613542826134dd565b604082019050919050565b5f6020820190508181035f8301526135648161352b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c5602383612e5d565b91506135d08261356b565b604082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613653602683612e5d565b915061365e826135f9565b604082019050919050565b5f6020820190508181035f83015261368081613647565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6136bb601f83612e5d565b91506136c682613687565b602082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f613723601d83612e5d565b915061372e826136ef565b602082019050919050565b5f6020820190508181035f83015261375081613717565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f61378b601f83612e5d565b915061379682613757565b602082019050919050565b5f6020820190508181035f8301526137b88161377f565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6137f3601d83612e5d565b91506137fe826137bf565b602082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f61385b601b83612e5d565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6138e9602e83612e5d565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f613951601e83612e5d565b915061395c8261391d565b602082019050919050565b5f6020820190508181035f83015261397e81613945565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6139b9602083612e5d565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a2482612eed565b9150613a2f83612eed565b9250828201905080821115613a4757613a466139ed565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f613a81601a83612e5d565b9150613a8c82613a4d565b602082019050919050565b5f6020820190508181035f830152613aae81613a75565b9050919050565b5f613abf82612eed565b9150613aca83612eed565b9250828203905081811115613ae257613ae16139ed565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613b42602c83612e5d565b9150613b4d82613ae8565b604082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b5f81519050613b8481612d4d565b92915050565b5f60208284031215613b9f57613b9e612c5a565b5b5f613bac84828501613b76565b91505092915050565b5f819050919050565b5f613bd8613bd3613bce84613bb5565b612f91565b612eed565b9050919050565b613be881613bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2081612d3c565b82525050565b5f613c318383613c17565b60208301905092915050565b5f602082019050919050565b5f613c5382613bee565b613c5d8185613bf8565b9350613c6883613c08565b805f5b83811015613c98578151613c7f8882613c26565b9750613c8a83613c3d565b925050600181019050613c6b565b5085935050505092915050565b5f60a082019050613cb85f830188613005565b613cc56020830187613bdf565b8181036040830152613cd78186613c49565b9050613ce660608301856130b1565b613cf36080830184613005565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3482612eed565b9150613d3f83612eed565b925082613d4f57613d4e613cfd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d8e601b83612e5d565b9150613d9982613d5a565b602082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b5f613dcc82612eed565b9150613dd783612eed565b9250828202613de581612eed565b91508282048414831517613dfc57613dfb6139ed565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e5d602183612e5d565b9150613e6882613e03565b604082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ddfb1ddaa976f1dae0c613b455e14d8aa43c60dc5d6173659e95edf7acf7f6f864736f6c63430008180033

Deployed Bytecode Sourcemap

4728:14277:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13544:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7400:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8332:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6091:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7680:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8534:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6391:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7588:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6139:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13722:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18169:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13300:235;;;;;;;;;;;;;:::i;:::-;;7784:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2201:148;;;;;;;;;;;;;:::i;:::-;;6283:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5830:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1985:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12945:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6336:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7492:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17977:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17231:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7931:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18310:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5792:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13055:236;;;;;;;;;;;;;:::i;:::-;;18766:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8139:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2358:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18535:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13544:169;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13620:9:::1;13615:91;13639:5;:12;13635:1;:16;13615:91;;;13690:4;13673;:14;13678:5;13684:1;13678:8;;;;;;;;:::i;:::-;;;;;;;;13673:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13653:3;;;;;;;13615:91;;;;13544:169:::0;:::o;7400:83::-;7437:13;7470:5;;;;;;;;;;;;;;;;;7463:12;;7400:83;:::o;8332:193::-;8434:4;8456:39;8465:12;:10;:12::i;:::-;8479:7;8488:6;8456:8;:39::i;:::-;8513:4;8506:11;;8332:193;;;;:::o;6091:41::-;;;;;;;;;;;;;:::o;7680:95::-;7733:7;5286:17;7753:14;;7680:95;:::o;8534:443::-;8666:4;8683:36;8693:6;8701:9;8712:6;8683:9;:36::i;:::-;8730:217;8753:6;8774:12;:10;:12::i;:::-;8801:135;8857:6;8801:135;;;;;;;;;;;;;;;;;:11;:19;8813:6;8801:19;;;;;;;;;;;;;;;:33;8821:12;:10;:12::i;:::-;8801:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8730:8;:217::i;:::-;8965:4;8958:11;;8534:443;;;;;:::o;6391:49::-;;;;:::o;7588:83::-;7629:5;4959:1;7647:16;;7588:83;:::o;6139:28::-;;;;;;;;;;;;;:::o;13722:92::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13801:5:::1;13786:4;:12;13791:6;13786:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13722:92:::0;:::o;18169:101::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18250:12:::1;18236:11;;:26;;;;;;;;;;;;;;;;;;18169:101:::0;:::o;13300:235::-;13366:19;;;;;;;;;;;13350:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13405:17;;;;;;;;;;;13389:33;;:12;:10;:12::i;:::-;:33;;;13350:72;13342:81;;;;;;13434:26;13463:21;13434:50;;13495:32;13508:18;13495:12;:32::i;:::-;13331:204;13300:235::o;7784:138::-;7850:7;7877:37;7897:7;:16;7905:7;7897:16;;;;;;;;;;;;;;;;7877:19;:37::i;:::-;7870:44;;7784:138;;;:::o;2201:148::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2308:1:::1;2271:40;;2292:6;::::0;::::1;;;;;;;;2271:40;;;;;;;;;;;;2339:1;2322:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2201:148::o:0;6283:45::-;;;;:::o;5830:43::-;;;;;;;;;;;;;;;;;:::o;1985:79::-;2023:7;2050:6;;;;;;;;;;;2043:13;;1985:79;:::o;12945:101::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13026:12:::1;13012:11;;:26;;;;;;;;;;;;;;;;;;12945:101:::0;:::o;6336:47::-;;;;:::o;7492:87::-;7531:13;7564:7;;;;;;;;;;;;;;;;;7557:14;;7492:87;:::o;17977:139::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18090:18:::1;18068:19;:40;;;;17977:139:::0;:::o;17231:693::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17390:1:::1;17373:13;:18;;:40;;;;;17412:1;17395:13;:18;;17373:40;17365:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:1;17474:11;:16;;:37;;;;;17509:2;17494:11;:17;;17474:37;17466:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17587:1;17569:14;:19;;:42;;;;;17610:1;17592:14;:19;;17569:42;17561:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17689:1;17673:12;:17;;:39;;;;;17710:2;17694:12;:18;;17673:39;17665:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17782:13;17765:14;:30;;;;17824:14;17806:15;:32;;;;17864:11;17849:12;:26;;;;17902:12;17886:13;:28;;;;17231:693:::0;;;;:::o;7931:199::-;8036:4;8058:42;8068:12;:10;:12::i;:::-;8082:9;8093:6;8058:9;:42::i;:::-;8118:4;8111:11;;7931:199;;;;:::o;18310:216::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18431:11:::1;18416:12;:26;;;;18466:6;18456:7;;:16;;;;;;;;;;;;;;;;;;18499:9;18486:10;;:22;;;;;;;;;;;;;;;;;;18310:216:::0;;;:::o;5792:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13055:236::-;13121:19;;;;;;;;;;;13105:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13160:17;;;;;;;;;;;13144:33;;:12;:10;:12::i;:::-;:33;;;13105:72;13097:81;;;;;;13189:23;13215:24;13233:4;13215:9;:24::i;:::-;13189:50;;13250:33;13267:15;13250:16;:33::i;:::-;13086:205;13055:236::o;18766:234::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18883:9:::1;18879:114;18902:8;;:15;;18898:1;:19;18879:114;;;18973:8;18939:18;:31;18958:8;;18967:1;18958:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18939:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18919:3;;;;;;;18879:114;;;;18766:234:::0;;;:::o;8139:184::-;8256:7;8288:11;:18;8300:5;8288:18;;;;;;;;;;;;;;;:27;8307:7;8288:27;;;;;;;;;;;;;;;;8281:34;;8139:184;;;;:::o;2358:244::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2467:1:::1;2447:22;;:8;:22;;::::0;2439:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2557:8;2528:38;;2549:6;::::0;::::1;;;;;;;;2528:38;;;;;;;;;;;;2586:8;2577:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2358:244:::0;:::o;18535:222::-;2123:12;:10;:12::i;:::-;2113:22;;:6;;;;;;;;;;:22;;;2105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18664:13:::1;18647:14;:30;;;;18701:9;18688:10;;:22;;;;;;;;;;;;;;;;;;18737:12;18721:13;;:28;;;;;;;;;;;;;;;;;;18535:222:::0;;;:::o;734:98::-;787:7;814:10;807:17;;734:98;:::o;9676:361::-;9820:1;9803:19;;:5;:19;;;9795:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9896:1;9877:21;;:7;:21;;;9869:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9975:6;9945:11;:18;9957:5;9945:18;;;;;;;;;;;;;;;:27;9964:7;9945:27;;;;;;;;;;;;;;;:36;;;;10013:7;9997:32;;10006:5;9997:32;;;10022:6;9997:32;;;;;;:::i;:::-;;;;;;;;9676:361;;;:::o;10046:2290::-;10184:1;10168:18;;:4;:18;;;10160:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10255:1;10241:16;;:2;:16;;;10233:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10319:1;10310:6;:10;10302:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10378:7;:5;:7::i;:::-;10370:15;;:4;:15;;;;:32;;;;;10395:7;:5;:7::i;:::-;10389:13;;:2;:13;;;;10370:32;10366:1238;;;10460:11;;;;;;;;;;;10455:127;;10508:7;:5;:7::i;:::-;10500:15;;:4;:15;;;10492:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10455:127;10617:12;;10607:6;:22;;10599:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10688:4;:10;10693:4;10688:10;;;;;;;;;;;;;;;;;;;;;;;;;10687:11;:24;;;;;10703:4;:8;10708:2;10703:8;;;;;;;;;;;;;;;;;;;;;;;;;10702:9;10687:24;10679:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10775:13;;;;;;;;;;;10769:19;;:2;:19;;;10766:137;;10842:14;;10833:6;10817:13;10827:2;10817:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10809:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10766:137;10920:28;10951:24;10969:4;10951:9;:24::i;:::-;10920:55;;10990:12;11029:19;;11005:20;:43;;10990:58;;11093:12;;11069:20;:36;11066:124;;11162:12;;11139:35;;11066:124;11211:7;:18;;;;;11223:6;;;;;;;;;;11222:7;11211:18;:43;;;;;11241:13;;;;;;;;;;;11233:21;;:4;:21;;;;11211:43;:58;;;;;11258:11;;;;;;;;;;;11211:58;:87;;;;;11274:18;:24;11293:4;11274:24;;;;;;;;;;;;;;;;;;;;;;;;;11273:25;11211:87;:114;;;;;11303:18;:22;11322:2;11303:22;;;;;;;;;;;;;;;;;;;;;;;;;11302:23;11211:114;11207:386;;;11346:38;11363:20;11346:16;:38::i;:::-;11403:26;11432:21;11403:50;;11497:1;11476:18;:22;11472:106;;;11523:35;11536:21;11523:12;:35::i;:::-;11472:106;11327:266;11207:386;10404:1200;;10366:1238;11617:12;11632:4;11617:19;;11682:18;:24;11701:4;11682:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11710:18;:22;11729:2;11710:22;;;;;;;;;;;;;;;;;;;;;;;;;11682:50;11681:102;;;;11746:13;;;;;;;;;;;11738:21;;:4;:21;;;;:44;;;;;11769:13;;;;;;;;;;;11763:19;;:2;:19;;;;11738:44;11681:102;11677:597;;;11810:5;11800:15;;11677:597;;;11894:13;;;;;;;;;;;11886:21;;:4;:21;;;:55;;;;;11925:15;;;;;;;;;;;11911:30;;:2;:30;;;;11886:55;11883:162;;;11974:14;;11962:9;:26;;;;12017:12;;12007:7;:22;;;;11883:162;12105:13;;;;;;;;;;;12099:19;;:2;:19;;;:55;;;;;12138:15;;;;;;;;;;;12122:32;;:4;:32;;;;12099:55;12095:165;;;12187:15;;12175:9;:27;;;;12231:13;;12221:7;:23;;;;12095:165;11677:597;12287:41;12302:4;12308:2;12312:6;12320:7;12287:14;:41::i;:::-;10149:2187;10046:2290;;;:::o;2970:224::-;3090:7;3123:1;3118;:6;;3126:12;3110:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3150:9;3166:1;3162;:5;;;;:::i;:::-;3150:17;;3185:1;3178:8;;;2970:224;;;;;:::o;12837:99::-;12894:17;;;;;;;;;;;:26;;:34;12921:6;12894:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12837:99;:::o;8986:325::-;9081:7;9139;;9128;:18;;9106:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:19;9251:10;:8;:10::i;:::-;9229:32;;9279:24;9291:11;9279:7;:11;;:24;;;;:::i;:::-;9272:31;;;8986:325;;;:::o;12345:483::-;6697:4;6688:6;;:13;;;;;;;;;;;;;;;;;;12423:21:::1;12461:1;12447:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12423:40;;12492:4;12474;12479:1;12474:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12518:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12508:4;12513:1;12508:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12551:62;12568:4;12583:15;;;;;;;;;;;12601:11;12551:8;:62::i;:::-;12624:15;;;;;;;;;;;:66;;;12705:11;12731:1;12747:4;12774;12794:15;12624:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12412:416;6733:5:::0;6724:6;;:14;;;;;;;;;;;;;;;;;;12345:483;:::o;13823:282::-;13979:7;13974:28;;13988:14;:12;:14::i;:::-;13974:28;14013:44;14031:6;14039:9;14050:6;14013:17;:44::i;:::-;14073:7;14068:29;;14082:15;:13;:15::i;:::-;14068:29;13823:282;;;;:::o;16792:164::-;16834:7;16855:15;16872;16891:19;:17;:19::i;:::-;16854:56;;;;16928:20;16940:7;16928;:11;;:20;;;;:::i;:::-;16921:27;;;;16792:164;:::o;3458:132::-;3516:7;3543:39;3547:1;3550;3543:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3536:46;;3458:132;;;;:::o;9320:221::-;9380:1;9367:9;;:14;:30;;;;;9396:1;9385:7;;:12;9367:30;9399:7;9363:43;9439:9;;9419:17;:29;;;;9477:7;;9459:15;:25;;;;9510:1;9498:9;:13;;;;9532:1;9522:7;:11;;;;9320:221;:::o;14114:610::-;14261:15;14291:23;14329:12;14356:23;14394:12;14421:13;14448:19;14459:7;14448:10;:19::i;:::-;14246:221;;;;;;;;;;;;14496:28;14516:7;14496;:15;14504:6;14496:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14478:7;:15;14486:6;14478:15;;;;;;;;;;;;;;;:46;;;;14556:39;14579:15;14556:7;:18;14564:9;14556:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14535:7;:18;14543:9;14535:18;;;;;;;;;;;;;;;:60;;;;14606:16;14616:5;14606:9;:16::i;:::-;14633:23;14645:4;14651;14633:11;:23::i;:::-;14689:9;14672:44;;14681:6;14672:44;;;14700:15;14672:44;;;;;;:::i;:::-;;;;;;;;14235:489;;;;;;14114:610;;;:::o;9550:117::-;9606:17;;9594:9;:29;;;;9644:15;;9634:7;:25;;;;9550:117::o;16965:257::-;17016:7;17025;17045:15;17063:7;;17045:25;;17081:15;5286:17;17081:25;;17131:20;5286:17;17131:7;;:11;;:20;;;;:::i;:::-;17121:7;:30;17117:61;;;17161:7;;5286:17;17153:25;;;;;;;;17117:61;17197:7;17206;17189:25;;;;;;16965:257;;;:::o;3599:223::-;3719:7;3751:1;3747;:5;3754:12;3739:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3778:9;3794:1;3790;:5;;;;:::i;:::-;3778:17;;3813:1;3806:8;;;3599:223;;;;;:::o;15147:615::-;15247:7;15269;15291;15313;15335;15357;15393:23;15418:12;15432:13;15462:40;15474:7;15483:9;;15494:7;;15462:11;:40::i;:::-;15392:110;;;;;;15513:19;15535:10;:8;:10::i;:::-;15513:32;;15557:15;15574:23;15599:12;15628:46;15640:7;15649:4;15655:5;15662:11;15628;:46::i;:::-;15556:118;;;;;;15693:7;15702:15;15719:4;15725:15;15742:4;15748:5;15685:69;;;;;;;;;;;;;;;;;;;15147:615;;;;;;;:::o;2825:136::-;2883:7;2910:43;2914:1;2917;2910:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2903:50;;2825:136;;;;:::o;2637:179::-;2695:7;2715:9;2731:1;2727;:5;;;;:::i;:::-;2715:17;;2756:1;2751;:6;;2743:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2807:1;2800:8;;;2637:179;;;;:::o;14733:211::-;14786:19;14808:10;:8;:10::i;:::-;14786:32;;14829:13;14845:22;14855:11;14845:5;:9;;:22;;;;:::i;:::-;14829:38;;14903:33;14930:5;14903:7;:22;14919:4;14903:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14878:7;:22;14894:4;14878:22;;;;;;;;;;;;;;;:58;;;;14775:169;;14733:211;:::o;14953:147::-;15031:17;15043:4;15031:7;;:11;;:17;;;;:::i;:::-;15021:7;:27;;;;15072:20;15087:4;15072:10;;:14;;:20;;;;:::i;:::-;15059:10;:33;;;;14953:147;;:::o;15771:469::-;15940:7;15962;15984;16019:12;16034:30;16060:3;16034:21;16046:8;16034:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16019:45;;16075:13;16091:28;16115:3;16091:19;16103:6;16091:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16075:44;;16130:23;16156:28;16178:5;16156:17;16168:4;16156:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16130:54;;16203:15;16220:4;16226:5;16195:37;;;;;;;;;15771:469;;;;;;;:::o;16249:534::-;16443:7;16465;16487;16522:15;16540:24;16552:11;16540:7;:11;;:24;;;;:::i;:::-;16522:42;;16575:12;16590:21;16599:11;16590:4;:8;;:21;;;;:::i;:::-;16575:36;;16622:13;16638:22;16648:11;16638:5;:9;;:22;;;;:::i;:::-;16622:38;;16671:23;16697:28;16719:5;16697:17;16709:4;16697:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16671:54;;16744:7;16753:15;16770:4;16736:39;;;;;;;;;;16249:534;;;;;;;;:::o;3203:246::-;3261:7;3290:1;3285;:6;3281:47;;3315:1;3308:8;;;;3281:47;3338:9;3354:1;3350;:5;;;;:::i;:::-;3338:17;;3383:1;3378;3374;:5;;;;:::i;:::-;:10;3366:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3440:1;3433:8;;;3203:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:607::-;11122:6;11130;11138;11187:2;11175:9;11166:7;11162:23;11158:32;11155:119;;;11193:79;;:::i;:::-;11155:119;11313:1;11338:53;11383:7;11374:6;11363:9;11359:22;11338:53;:::i;:::-;11328:63;;11284:117;11440:2;11466:50;11508:7;11499:6;11488:9;11484:22;11466:50;:::i;:::-;11456:60;;11411:115;11565:2;11591:50;11633:7;11624:6;11613:9;11609:22;11591:50;:::i;:::-;11581:60;;11536:115;11051:607;;;;;:::o;11664:117::-;11773:1;11770;11763:12;11804:568;11877:8;11887:6;11937:3;11930:4;11922:6;11918:17;11914:27;11904:122;;11945:79;;:::i;:::-;11904:122;12058:6;12045:20;12035:30;;12088:18;12080:6;12077:30;12074:117;;;12110:79;;:::i;:::-;12074:117;12224:4;12216:6;12212:17;12200:29;;12278:3;12270:4;12262:6;12258:17;12248:8;12244:32;12241:41;12238:128;;;12285:79;;:::i;:::-;12238:128;11804:568;;;;;:::o;12378:698::-;12470:6;12478;12486;12535:2;12523:9;12514:7;12510:23;12506:32;12503:119;;;12541:79;;:::i;:::-;12503:119;12689:1;12678:9;12674:17;12661:31;12719:18;12711:6;12708:30;12705:117;;;12741:79;;:::i;:::-;12705:117;12854:80;12926:7;12917:6;12906:9;12902:22;12854:80;:::i;:::-;12836:98;;;;12632:312;12983:2;13009:50;13051:7;13042:6;13031:9;13027:22;13009:50;:::i;:::-;12999:60;;12954:115;12378:698;;;;;:::o;13082:474::-;13150:6;13158;13207:2;13195:9;13186:7;13182:23;13178:32;13175:119;;;13213:79;;:::i;:::-;13175:119;13333:1;13358:53;13403:7;13394:6;13383:9;13379:22;13358:53;:::i;:::-;13348:63;;13304:117;13460:2;13486:53;13531:7;13522:6;13511:9;13507:22;13486:53;:::i;:::-;13476:63;;13431:118;13082:474;;;;;:::o;13562:182::-;13702:34;13698:1;13690:6;13686:14;13679:58;13562:182;:::o;13750:366::-;13892:3;13913:67;13977:2;13972:3;13913:67;:::i;:::-;13906:74;;13989:93;14078:3;13989:93;:::i;:::-;14107:2;14102:3;14098:12;14091:19;;13750:366;;;:::o;14122:419::-;14288:4;14326:2;14315:9;14311:18;14303:26;;14375:9;14369:4;14365:20;14361:1;14350:9;14346:17;14339:47;14403:131;14529:4;14403:131;:::i;:::-;14395:139;;14122:419;;;:::o;14547:180::-;14595:77;14592:1;14585:88;14692:4;14689:1;14682:15;14716:4;14713:1;14706:15;14733:224;14873:34;14869:1;14861:6;14857:14;14850:58;14942:7;14937:2;14929:6;14925:15;14918:32;14733:224;:::o;14963:366::-;15105:3;15126:67;15190:2;15185:3;15126:67;:::i;:::-;15119:74;;15202:93;15291:3;15202:93;:::i;:::-;15320:2;15315:3;15311:12;15304:19;;14963:366;;;:::o;15335:419::-;15501:4;15539:2;15528:9;15524:18;15516:26;;15588:9;15582:4;15578:20;15574:1;15563:9;15559:17;15552:47;15616:131;15742:4;15616:131;:::i;:::-;15608:139;;15335:419;;;:::o;15760:221::-;15900:34;15896:1;15888:6;15884:14;15877:58;15969:4;15964:2;15956:6;15952:15;15945:29;15760:221;:::o;15987:366::-;16129:3;16150:67;16214:2;16209:3;16150:67;:::i;:::-;16143:74;;16226:93;16315:3;16226:93;:::i;:::-;16344:2;16339:3;16335:12;16328:19;;15987:366;;;:::o;16359:419::-;16525:4;16563:2;16552:9;16548:18;16540:26;;16612:9;16606:4;16602:20;16598:1;16587:9;16583:17;16576:47;16640:131;16766:4;16640:131;:::i;:::-;16632:139;;16359:419;;;:::o;16784:225::-;16924:34;16920:1;16912:6;16908:14;16901:58;16993:8;16988:2;16980:6;16976:15;16969:33;16784:225;:::o;17015:366::-;17157:3;17178:67;17242:2;17237:3;17178:67;:::i;:::-;17171:74;;17254:93;17343:3;17254:93;:::i;:::-;17372:2;17367:3;17363:12;17356:19;;17015:366;;;:::o;17387:419::-;17553:4;17591:2;17580:9;17576:18;17568:26;;17640:9;17634:4;17630:20;17626:1;17615:9;17611:17;17604:47;17668:131;17794:4;17668:131;:::i;:::-;17660:139;;17387:419;;;:::o;17812:222::-;17952:34;17948:1;17940:6;17936:14;17929:58;18021:5;18016:2;18008:6;18004:15;17997:30;17812:222;:::o;18040:366::-;18182:3;18203:67;18267:2;18262:3;18203:67;:::i;:::-;18196:74;;18279:93;18368:3;18279:93;:::i;:::-;18397:2;18392:3;18388:12;18381:19;;18040:366;;;:::o;18412:419::-;18578:4;18616:2;18605:9;18601:18;18593:26;;18665:9;18659:4;18655:20;18651:1;18640:9;18636:17;18629:47;18693:131;18819:4;18693:131;:::i;:::-;18685:139;;18412:419;;;:::o;18837:225::-;18977:34;18973:1;18965:6;18961:14;18954:58;19046:8;19041:2;19033:6;19029:15;19022:33;18837:225;:::o;19068:366::-;19210:3;19231:67;19295:2;19290:3;19231:67;:::i;:::-;19224:74;;19307:93;19396:3;19307:93;:::i;:::-;19425:2;19420:3;19416:12;19409:19;;19068:366;;;:::o;19440:419::-;19606:4;19644:2;19633:9;19629:18;19621:26;;19693:9;19687:4;19683:20;19679:1;19668:9;19664:17;19657:47;19721:131;19847:4;19721:131;:::i;:::-;19713:139;;19440:419;;;:::o;19865:181::-;20005:33;20001:1;19993:6;19989:14;19982:57;19865:181;:::o;20052:366::-;20194:3;20215:67;20279:2;20274:3;20215:67;:::i;:::-;20208:74;;20291:93;20380:3;20291:93;:::i;:::-;20409:2;20404:3;20400:12;20393:19;;20052:366;;;:::o;20424:419::-;20590:4;20628:2;20617:9;20613:18;20605:26;;20677:9;20671:4;20667:20;20663:1;20652:9;20648:17;20641:47;20705:131;20831:4;20705:131;:::i;:::-;20697:139;;20424:419;;;:::o;20849:179::-;20989:31;20985:1;20977:6;20973:14;20966:55;20849:179;:::o;21034:366::-;21176:3;21197:67;21261:2;21256:3;21197:67;:::i;:::-;21190:74;;21273:93;21362:3;21273:93;:::i;:::-;21391:2;21386:3;21382:12;21375:19;;21034:366;;;:::o;21406:419::-;21572:4;21610:2;21599:9;21595:18;21587:26;;21659:9;21653:4;21649:20;21645:1;21634:9;21630:17;21623:47;21687:131;21813:4;21687:131;:::i;:::-;21679:139;;21406:419;;;:::o;21831:181::-;21971:33;21967:1;21959:6;21955:14;21948:57;21831:181;:::o;22018:366::-;22160:3;22181:67;22245:2;22240:3;22181:67;:::i;:::-;22174:74;;22257:93;22346:3;22257:93;:::i;:::-;22375:2;22370:3;22366:12;22359:19;;22018:366;;;:::o;22390:419::-;22556:4;22594:2;22583:9;22579:18;22571:26;;22643:9;22637:4;22633:20;22629:1;22618:9;22614:17;22607:47;22671:131;22797:4;22671:131;:::i;:::-;22663:139;;22390:419;;;:::o;22815:179::-;22955:31;22951:1;22943:6;22939:14;22932:55;22815:179;:::o;23000:366::-;23142:3;23163:67;23227:2;23222:3;23163:67;:::i;:::-;23156:74;;23239:93;23328:3;23239:93;:::i;:::-;23357:2;23352:3;23348:12;23341:19;;23000:366;;;:::o;23372:419::-;23538:4;23576:2;23565:9;23561:18;23553:26;;23625:9;23619:4;23615:20;23611:1;23600:9;23596:17;23589:47;23653:131;23779:4;23653:131;:::i;:::-;23645:139;;23372:419;;;:::o;23797:177::-;23937:29;23933:1;23925:6;23921:14;23914:53;23797:177;:::o;23980:366::-;24122:3;24143:67;24207:2;24202:3;24143:67;:::i;:::-;24136:74;;24219:93;24308:3;24219:93;:::i;:::-;24337:2;24332:3;24328:12;24321:19;;23980:366;;;:::o;24352:419::-;24518:4;24556:2;24545:9;24541:18;24533:26;;24605:9;24599:4;24595:20;24591:1;24580:9;24576:17;24569:47;24633:131;24759:4;24633:131;:::i;:::-;24625:139;;24352:419;;;:::o;24777:233::-;24917:34;24913:1;24905:6;24901:14;24894:58;24986:16;24981:2;24973:6;24969:15;24962:41;24777:233;:::o;25016:366::-;25158:3;25179:67;25243:2;25238:3;25179:67;:::i;:::-;25172:74;;25255:93;25344:3;25255:93;:::i;:::-;25373:2;25368:3;25364:12;25357:19;;25016:366;;;:::o;25388:419::-;25554:4;25592:2;25581:9;25577:18;25569:26;;25641:9;25635:4;25631:20;25627:1;25616:9;25612:17;25605:47;25669:131;25795:4;25669:131;:::i;:::-;25661:139;;25388:419;;;:::o;25813:180::-;25953:32;25949:1;25941:6;25937:14;25930:56;25813:180;:::o;25999:366::-;26141:3;26162:67;26226:2;26221:3;26162:67;:::i;:::-;26155:74;;26238:93;26327:3;26238:93;:::i;:::-;26356:2;26351:3;26347:12;26340:19;;25999:366;;;:::o;26371:419::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26624:9;26618:4;26614:20;26610:1;26599:9;26595:17;26588:47;26652:131;26778:4;26652:131;:::i;:::-;26644:139;;26371:419;;;:::o;26796:182::-;26936:34;26932:1;26924:6;26920:14;26913:58;26796:182;:::o;26984:366::-;27126:3;27147:67;27211:2;27206:3;27147:67;:::i;:::-;27140:74;;27223:93;27312:3;27223:93;:::i;:::-;27341:2;27336:3;27332:12;27325:19;;26984:366;;;:::o;27356:419::-;27522:4;27560:2;27549:9;27545:18;27537:26;;27609:9;27603:4;27599:20;27595:1;27584:9;27580:17;27573:47;27637:131;27763:4;27637:131;:::i;:::-;27629:139;;27356:419;;;:::o;27781:180::-;27829:77;27826:1;27819:88;27926:4;27923:1;27916:15;27950:4;27947:1;27940:15;27967:191;28007:3;28026:20;28044:1;28026:20;:::i;:::-;28021:25;;28060:20;28078:1;28060:20;:::i;:::-;28055:25;;28103:1;28100;28096:9;28089:16;;28124:3;28121:1;28118:10;28115:36;;;28131:18;;:::i;:::-;28115:36;27967:191;;;;:::o;28164:176::-;28304:28;28300:1;28292:6;28288:14;28281:52;28164:176;:::o;28346:366::-;28488:3;28509:67;28573:2;28568:3;28509:67;:::i;:::-;28502:74;;28585:93;28674:3;28585:93;:::i;:::-;28703:2;28698:3;28694:12;28687:19;;28346:366;;;:::o;28718:419::-;28884:4;28922:2;28911:9;28907:18;28899:26;;28971:9;28965:4;28961:20;28957:1;28946:9;28942:17;28935:47;28999:131;29125:4;28999:131;:::i;:::-;28991:139;;28718:419;;;:::o;29143:194::-;29183:4;29203:20;29221:1;29203:20;:::i;:::-;29198:25;;29237:20;29255:1;29237:20;:::i;:::-;29232:25;;29281:1;29278;29274:9;29266:17;;29305:1;29299:4;29296:11;29293:37;;;29310:18;;:::i;:::-;29293:37;29143:194;;;;:::o;29343:231::-;29483:34;29479:1;29471:6;29467:14;29460:58;29552:14;29547:2;29539:6;29535:15;29528:39;29343:231;:::o;29580:366::-;29722:3;29743:67;29807:2;29802:3;29743:67;:::i;:::-;29736:74;;29819:93;29908:3;29819:93;:::i;:::-;29937:2;29932:3;29928:12;29921:19;;29580:366;;;:::o;29952:419::-;30118:4;30156:2;30145:9;30141:18;30133:26;;30205:9;30199:4;30195:20;30191:1;30180:9;30176:17;30169:47;30233:131;30359:4;30233:131;:::i;:::-;30225:139;;29952:419;;;:::o;30377:143::-;30434:5;30465:6;30459:13;30450:22;;30481:33;30508:5;30481:33;:::i;:::-;30377:143;;;;:::o;30526:351::-;30596:6;30645:2;30633:9;30624:7;30620:23;30616:32;30613:119;;;30651:79;;:::i;:::-;30613:119;30771:1;30796:64;30852:7;30843:6;30832:9;30828:22;30796:64;:::i;:::-;30786:74;;30742:128;30526:351;;;;:::o;30883:85::-;30928:7;30957:5;30946:16;;30883:85;;;:::o;30974:158::-;31032:9;31065:61;31083:42;31092:32;31118:5;31092:32;:::i;:::-;31083:42;:::i;:::-;31065:61;:::i;:::-;31052:74;;30974:158;;;:::o;31138:147::-;31233:45;31272:5;31233:45;:::i;:::-;31228:3;31221:58;31138:147;;:::o;31291:114::-;31358:6;31392:5;31386:12;31376:22;;31291:114;;;:::o;31411:184::-;31510:11;31544:6;31539:3;31532:19;31584:4;31579:3;31575:14;31560:29;;31411:184;;;;:::o;31601:132::-;31668:4;31691:3;31683:11;;31721:4;31716:3;31712:14;31704:22;;31601:132;;;:::o;31739:108::-;31816:24;31834:5;31816:24;:::i;:::-;31811:3;31804:37;31739:108;;:::o;31853:179::-;31922:10;31943:46;31985:3;31977:6;31943:46;:::i;:::-;32021:4;32016:3;32012:14;31998:28;;31853:179;;;;:::o;32038:113::-;32108:4;32140;32135:3;32131:14;32123:22;;32038:113;;;:::o;32187:732::-;32306:3;32335:54;32383:5;32335:54;:::i;:::-;32405:86;32484:6;32479:3;32405:86;:::i;:::-;32398:93;;32515:56;32565:5;32515:56;:::i;:::-;32594:7;32625:1;32610:284;32635:6;32632:1;32629:13;32610:284;;;32711:6;32705:13;32738:63;32797:3;32782:13;32738:63;:::i;:::-;32731:70;;32824:60;32877:6;32824:60;:::i;:::-;32814:70;;32670:224;32657:1;32654;32650:9;32645:14;;32610:284;;;32614:14;32910:3;32903:10;;32311:608;;;32187:732;;;;:::o;32925:831::-;33188:4;33226:3;33215:9;33211:19;33203:27;;33240:71;33308:1;33297:9;33293:17;33284:6;33240:71;:::i;:::-;33321:80;33397:2;33386:9;33382:18;33373:6;33321:80;:::i;:::-;33448:9;33442:4;33438:20;33433:2;33422:9;33418:18;33411:48;33476:108;33579:4;33570:6;33476:108;:::i;:::-;33468:116;;33594:72;33662:2;33651:9;33647:18;33638:6;33594:72;:::i;:::-;33676:73;33744:3;33733:9;33729:19;33720:6;33676:73;:::i;:::-;32925:831;;;;;;;;:::o;33762:180::-;33810:77;33807:1;33800:88;33907:4;33904:1;33897:15;33931:4;33928:1;33921:15;33948:185;33988:1;34005:20;34023:1;34005:20;:::i;:::-;34000:25;;34039:20;34057:1;34039:20;:::i;:::-;34034:25;;34078:1;34068:35;;34083:18;;:::i;:::-;34068:35;34125:1;34122;34118:9;34113:14;;33948:185;;;;:::o;34139:177::-;34279:29;34275:1;34267:6;34263:14;34256:53;34139:177;:::o;34322:366::-;34464:3;34485:67;34549:2;34544:3;34485:67;:::i;:::-;34478:74;;34561:93;34650:3;34561:93;:::i;:::-;34679:2;34674:3;34670:12;34663:19;;34322:366;;;:::o;34694:419::-;34860:4;34898:2;34887:9;34883:18;34875:26;;34947:9;34941:4;34937:20;34933:1;34922:9;34918:17;34911:47;34975:131;35101:4;34975:131;:::i;:::-;34967:139;;34694:419;;;:::o;35119:410::-;35159:7;35182:20;35200:1;35182:20;:::i;:::-;35177:25;;35216:20;35234:1;35216:20;:::i;:::-;35211:25;;35271:1;35268;35264:9;35293:30;35311:11;35293:30;:::i;:::-;35282:41;;35472:1;35463:7;35459:15;35456:1;35453:22;35433:1;35426:9;35406:83;35383:139;;35502:18;;:::i;:::-;35383:139;35167:362;35119:410;;;;:::o;35535:220::-;35675:34;35671:1;35663:6;35659:14;35652:58;35744:3;35739:2;35731:6;35727:15;35720:28;35535:220;:::o;35761:366::-;35903:3;35924:67;35988:2;35983:3;35924:67;:::i;:::-;35917:74;;36000:93;36089:3;36000:93;:::i;:::-;36118:2;36113:3;36109:12;36102:19;;35761:366;;;:::o;36133:419::-;36299:4;36337:2;36326:9;36322:18;36314:26;;36386:9;36380:4;36376:20;36372:1;36361:9;36357:17;36350:47;36414:131;36540:4;36414:131;:::i;:::-;36406:139;;36133:419;;;:::o

Swarm Source

ipfs://ddfb1ddaa976f1dae0c613b455e14d8aa43c60dc5d6173659e95edf7acf7f6f8

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.