ETH Price: $3,635.42 (+8.10%)

Contract

0x2a4701ac59E0EC6B95BECBaF88315cA9B722c2bA
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve211082602024-11-03 16:18:4724 days ago1730650727IN
0x2a4701ac...9B722c2bA
0 ETH0.000225279.05109346
Approve209985522024-10-19 8:54:5939 days ago1729328099IN
0x2a4701ac...9B722c2bA
0 ETH0.0004881410.34807617
Approve207904662024-09-20 8:00:1168 days ago1726819211IN
0x2a4701ac...9B722c2bA
0 ETH0.0008061717.08968626
Approve205885742024-08-23 3:18:1196 days ago1724383091IN
0x2a4701ac...9B722c2bA
0 ETH0.000053021.13031029
Approve205788582024-08-21 18:42:4798 days ago1724265767IN
0x2a4701ac...9B722c2bA
0 ETH0.000339227.18376211
Approve203116372024-07-15 11:33:11135 days ago1721043191IN
0x2a4701ac...9B722c2bA
0 ETH0.000133572.83163949
Approve202548262024-07-07 13:07:23143 days ago1720357643IN
0x2a4701ac...9B722c2bA
0 ETH0.000104222.20667867
Approve202546282024-07-07 12:27:11143 days ago1720355231IN
0x2a4701ac...9B722c2bA
0 ETH0.000066521.41789787
Approve201269612024-06-19 16:24:47161 days ago1718814287IN
0x2a4701ac...9B722c2bA
0 ETH0.0005917712.62840855
Approve200524802024-06-09 6:27:59171 days ago1717914479IN
0x2a4701ac...9B722c2bA
0 ETH0.00023454.96488678
Approve200261922024-06-05 14:21:35175 days ago1717597295IN
0x2a4701ac...9B722c2bA
0 ETH0.000789231.70896796
Approve200161922024-06-04 4:52:35176 days ago1717476755IN
0x2a4701ac...9B722c2bA
0 ETH0.000271115.74715823
Approve199435912024-05-25 1:23:59187 days ago1716600239IN
0x2a4701ac...9B722c2bA
0 ETH0.000210954.49593922
Approve199400632024-05-24 13:32:59187 days ago1716557579IN
0x2a4701ac...9B722c2bA
0 ETH0.0004939510.45787158
Approve199315552024-05-23 9:01:23188 days ago1716454883IN
0x2a4701ac...9B722c2bA
0 ETH0.0004419.34860269
Approve199128542024-05-20 18:16:11191 days ago1716228971IN
0x2a4701ac...9B722c2bA
0 ETH0.0005526611.77866499
Transfer199082402024-05-20 2:45:11192 days ago1716173111IN
0x2a4701ac...9B722c2bA
0 ETH0.001396175.99744097
Approve198985272024-05-18 18:09:59193 days ago1716055799IN
0x2a4701ac...9B722c2bA
0 ETH0.000216234.58393155
Approve198493512024-05-11 21:03:11200 days ago1715461391IN
0x2a4701ac...9B722c2bA
0 ETH0.000263735.59075316
Transfer198364212024-05-10 1:39:59202 days ago1715305199IN
0x2a4701ac...9B722c2bA
0 ETH0.000818443.51590106
Approve198160002024-05-07 5:07:11204 days ago1715058431IN
0x2a4701ac...9B722c2bA
0 ETH0.000187464.00044434
Approve197768452024-05-01 17:42:47210 days ago1714585367IN
0x2a4701ac...9B722c2bA
0 ETH0.00044179.36344252
Approve197087272024-04-22 5:03:11219 days ago1713762191IN
0x2a4701ac...9B722c2bA
0 ETH0.000370427.84251876
Approve197044302024-04-21 14:39:23220 days ago1713710363IN
0x2a4701ac...9B722c2bA
0 ETH0.000411858.71974681
Approve196666682024-04-16 7:51:11225 days ago1713253871IN
0x2a4701ac...9B722c2bA
0 ETH0.000445489.44354188
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
209495962024-10-12 12:43:4746 days ago1728737027
0x2a4701ac...9B722c2bA
0.00039877 ETH
209495962024-10-12 12:43:4746 days ago1728737027
0x2a4701ac...9B722c2bA
0.00039877 ETH
208954032024-10-04 23:19:1154 days ago1728083951
0x2a4701ac...9B722c2bA
0.00163841 ETH
208954032024-10-04 23:19:1154 days ago1728083951
0x2a4701ac...9B722c2bA
0.00163841 ETH
207904702024-09-20 8:00:5968 days ago1726819259
0x2a4701ac...9B722c2bA
0.002616 ETH
207904702024-09-20 8:00:5968 days ago1726819259
0x2a4701ac...9B722c2bA
0.002616 ETH
206790062024-09-04 18:27:4784 days ago1725474467
0x2a4701ac...9B722c2bA
0.00013379 ETH
206790062024-09-04 18:27:4784 days ago1725474467
0x2a4701ac...9B722c2bA
0.00013379 ETH
206709352024-09-03 15:26:1185 days ago1725377171
0x2a4701ac...9B722c2bA
0.00028627 ETH
206709352024-09-03 15:26:1185 days ago1725377171
0x2a4701ac...9B722c2bA
0.00028627 ETH
205646602024-08-19 19:08:23100 days ago1724094503
0x2a4701ac...9B722c2bA
0.00322287 ETH
205646602024-08-19 19:08:23100 days ago1724094503
0x2a4701ac...9B722c2bA
0.00322287 ETH
203637552024-07-22 18:07:23128 days ago1721671643
0x2a4701ac...9B722c2bA
0.00025812 ETH
203637552024-07-22 18:07:23128 days ago1721671643
0x2a4701ac...9B722c2bA
0.00025812 ETH
203558942024-07-21 15:45:59129 days ago1721576759
0x2a4701ac...9B722c2bA
0.00065509 ETH
203558942024-07-21 15:45:59129 days ago1721576759
0x2a4701ac...9B722c2bA
0.00065509 ETH
203116392024-07-15 11:33:35135 days ago1721043215
0x2a4701ac...9B722c2bA
0.00021841 ETH
203116392024-07-15 11:33:35135 days ago1721043215
0x2a4701ac...9B722c2bA
0.00021841 ETH
202548432024-07-07 13:10:47143 days ago1720357847
0x2a4701ac...9B722c2bA
0.00021822 ETH
202548432024-07-07 13:10:47143 days ago1720357847
0x2a4701ac...9B722c2bA
0.00021822 ETH
201360682024-06-20 22:58:35160 days ago1718924315
0x2a4701ac...9B722c2bA
0.00100888 ETH
201360682024-06-20 22:58:35160 days ago1718924315
0x2a4701ac...9B722c2bA
0.00100888 ETH
201269622024-06-19 16:24:59161 days ago1718814299
0x2a4701ac...9B722c2bA
0.00013839 ETH
201269622024-06-19 16:24:59161 days ago1718814299
0x2a4701ac...9B722c2bA
0.00013839 ETH
200524832024-06-09 6:28:35171 days ago1717914515
0x2a4701ac...9B722c2bA
0.00094531 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HAO

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-06
*/

// SPDX-License-Identifier: UNLICENSE

/*

Hubtensor offers easy access to distributed computing and secure cloud storage, abstracting complexity for all users. Harness global CPU/GPU power to run demanding workloads and store files reliably. Browse privately, become a hosting node to earn rewards, and tap the full potential of distributed systems through one intuitive platform.


Website: https://hubtensor.com/
Twitter: https://twitter.com/hubtensor
Telegram: https://t.me/hubtensorportal
Whitepaper: https://docs.hubtensor.com/
Dapp: https://dapp.hubtensor.com/
Bot: https://t.me/hubtensor_bot

*/

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 HAO is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "HubTensor";
    string private constant _symbol = "HAO";
    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(0xdee9357D3D2494d67f9Ddb546e2B56ebB20cAFcC); 
    address payable private _marketingAddress = payable(0xdee9357D3D2494d67f9Ddb546e2B56ebB20cAFcC);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 1500000 * 10**9; 
    uint256 public _maxWalletSize = 1500000 * 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"}]

608060405267016345785d8a00005f196200001b919062000748565b5f19620000299190620007ac565b6006555f60085560056009555f600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573dee9357d3d2494d67f9ddb546e2b56ebb20cafcc60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dee9357d3d2494d67f9ddb546e2b56ebb20cafcc60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506605543df729c0006016556605543df729c00060175564e8d4a510006018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055505f601960026101000a81548160ff0219169083151502179055505f601960036101000a81548160ff021916908315150217905550348015620001c4575f80fd5b505f620001d6620006e460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000288620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000367573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038d91906200084b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200041991906200084b565b6040518363ffffffff1660e01b8152600401620004389291906200088c565b6020604051808303815f875af115801562000455573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200047b91906200084b565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004cf620006eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200066f620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006d59190620008c8565b60405180910390a350620008e3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007548262000712565b9150620007618362000712565b9250826200077457620007736200071b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007b88262000712565b9150620007c58362000712565b9250828203905081811115620007e057620007df6200077f565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200081582620007ea565b9050919050565b620008278162000809565b811462000832575f80fd5b50565b5f8151905062000845816200081c565b92915050565b5f60208284031215620008635762000862620007e6565b5b5f620008728482850162000835565b91505092915050565b620008868162000809565b82525050565b5f604082019050620008a15f8301856200087b565b620008b060208301846200087b565b9392505050565b620008c28162000712565b82525050565b5f602082019050620008dd5f830184620008b7565b92915050565b613eec80620008f15f395ff3fe6080604052600436106101cf575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f9a55c0116100d05780638f9a55c0146104e657806395d89b411461051057806398a5c3151461053a578063a2a957bb14610562576101d6565b80637f2feddc146104585780638da5cb5b146104945780638f70ccf7146104be576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a6146104185780637d1db4a51461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612e0c565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612ecd565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612f20565b610850565b60405161025f9190612f78565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612fec565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190613014565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd919061302d565b6108a1565b6040516102ef9190612f78565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190613014565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190613098565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d91906130c0565b60405180910390f35b348015610381575f80fd5b5061039c600480360381019061039791906130d9565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061312e565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd91906130d9565b610c11565b60405161040f9190613014565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610442610dad565b60405161044f9190613014565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906130d9565b610db3565b60405161048b9190613014565b60405180910390f35b34801561049f575f80fd5b506104a8610dc8565b6040516104b591906130c0565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061312e565b610def565b005b3480156104f1575f80fd5b506104fa610ea0565b6040516105079190613014565b60405180910390f35b34801561051b575f80fd5b50610524610ea6565b6040516105319190612ecd565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613159565b610ee3565b005b34801561056d575f80fd5b5061058860048036038101906105839190613184565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f20565b611177565b6040516105bd9190612f78565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e791906131e8565b611194565b005b3480156105f9575f80fd5b50610614600480360381019061060f91906130d9565b611267565b6040516106219190612f78565b60405180910390f35b348015610635575f80fd5b5061063e611284565b005b34801561064b575f80fd5b5061066660048036038101906106619190613291565b611359565b005b348015610673575f80fd5b5061068e600480360381019061068991906132ee565b611488565b60405161069b9190613014565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c591906130d9565b61150a565b005b3480156106d7575f80fd5b506106f260048036038101906106ed91906131e8565b6116c7565b005b6106fc61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613376565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613394565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600981526020017f48756254656e736f720000000000000000000000000000000000000000000000815250905090565b5f61086361085c61179b565b84846117a2565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108ad848484611965565b61096a846108b961179b565b61096585604051806060016040528060258152602001613e926025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c61179b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c59092919063ffffffff16565b6117a2565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b061179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613376565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613376565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8461179b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e81612227565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f565b9050919050565b610c6761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613376565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f48414f0000000000000000000000000000000000000000000000000000000000815250905090565b610eeb61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613376565b60405180910390fd5b8060188190555050565b610f8961179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613376565b60405180910390fd5b5f8410158015611026575060048411155b611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613431565b60405180910390fd5b5f82101580156110765750605f8211155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906134bf565b60405180910390fd5b5f83101580156110c6575060048311155b611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061354d565b60405180910390fd5b5f81101580156111165750605f8111155b611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c906135db565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61118a61118361179b565b8484611965565b6001905092915050565b61119c61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90613376565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c461179b565b73ffffffffffffffffffffffffffffffffffffffff161480611339575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b611341575f80fd5b5f61134b30610c11565b9050611356816122fb565b50565b61136161179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613376565b60405180910390fd5b5f5b83839050811015611482578160055f86868581811061141157611410613394565b5b905060200201602081019061142691906130d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113ef565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61151261179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613669565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116cf61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613376565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906136d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613739565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119589190613014565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906137a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3890613809565b60405180910390fd5b5f8111611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613871565b60405180910390fd5b611a8b610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611af95750611ac9610dc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257601560149054906101000a900460ff16611b8857611b1a610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906138ff565b60405180910390fd5b5b601654811115611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613967565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c6b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906139cf565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d565760175481611d0b84610c11565b611d159190613a1a565b10611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c90613a97565b60405180910390fd5b5b5f611d6030610c11565b90505f60185482101590506016548210611d7a5760165491505b808015611d92575060158054906101000a900460ff16155b8015611deb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e035750601560169054906101000a900460ff165b8015611e56575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea9575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecf57611eb7826122fb565b5f4790505f811115611ecd57611ecc47612227565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f72575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612023575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612022575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612030575f90506121b3565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120d9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120f157600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561219a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121b257600a54600c81905550600b54600d819055505b5b6121bf84848484612564565b50505050565b5f83831115829061220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122039190612ecd565b60405180910390fd5b505f838561221a9190613ab5565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561228b573d5f803e3d5ffd5b5050565b5f6006548211156122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90613b58565b60405180910390fd5b5f6122de612591565b90506122f381846125ba90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233157612330612c76565b5b60405190808252806020026020018201604052801561235f5781602001602082028036833780820191505090505b50905030815f8151811061237657612375613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190613b8a565b8160018151811061245257612451613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b83060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161251a959493929190613ca5565b5f604051808303815f87803b158015612531575f80fd5b505af1158015612543573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061257257612571612603565b5b61257d84848461263c565b8061258b5761258a6127fc565b5b50505050565b5f805f61259c612810565b915091506125b381836125ba90919063ffffffff16565b9250505090565b5f6125fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061286c565b905092915050565b5f600c5414801561261557505f600d54145b61263a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061264b876128cd565b9550955095509550955095506126a78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127388560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612782816129d3565b61278c8483612a8a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127e99190613014565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061284167016345785d8a00006006546125ba90919063ffffffff16565b82101561285f5760065467016345785d8a0000935093505050612868565b81819350935050505b9091565b5f80831182906128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a99190612ecd565b60405180910390fd5b505f83856128c09190613d2a565b9050809150509392505050565b5f805f805f805f805f6128e58a600c54600d54612ac4565b9250925092505f6128f4612591565b90505f805f6129058e878787612b56565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61296e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121c5565b905092915050565b5f8082846129849190613a1a565b9050838110156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c090613da4565b60405180910390fd5b8091505092915050565b5f6129dc612591565b90505f6129f28284612bda90919063ffffffff16565b9050612a448160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a9f8260065461292d90919063ffffffff16565b600681905550612aba8160075461297690919063ffffffff16565b6007819055505050565b5f805f80612aee6064612ae0888a612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b176064612b09888b612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b3f82612b31858c61292d90919063ffffffff16565b61292d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b6d8589612bda90919063ffffffff16565b90505f612b838689612bda90919063ffffffff16565b90505f612b998789612bda90919063ffffffff16565b90505f612bc182612bb3858761292d90919063ffffffff16565b61292d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bea575f9050612c4b565b5f8284612bf79190613dc2565b9050828482612c069190613d2a565b14612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90613e73565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cac82612c66565b810181811067ffffffffffffffff82111715612ccb57612cca612c76565b5b80604052505050565b5f612cdd612c51565b9050612ce98282612ca3565b919050565b5f67ffffffffffffffff821115612d0857612d07612c76565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4682612d1d565b9050919050565b612d5681612d3c565b8114612d60575f80fd5b50565b5f81359050612d7181612d4d565b92915050565b5f612d89612d8484612cee565b612cd4565b90508083825260208201905060208402830185811115612dac57612dab612d19565b5b835b81811015612dd55780612dc18882612d63565b845260208401935050602081019050612dae565b5050509392505050565b5f82601f830112612df357612df2612c62565b5b8135612e03848260208601612d77565b91505092915050565b5f60208284031215612e2157612e20612c5a565b5b5f82013567ffffffffffffffff811115612e3e57612e3d612c5e565b5b612e4a84828501612ddf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8a578082015181840152602081019050612e6f565b5f8484015250505050565b5f612e9f82612e53565b612ea98185612e5d565b9350612eb9818560208601612e6d565b612ec281612c66565b840191505092915050565b5f6020820190508181035f830152612ee58184612e95565b905092915050565b5f819050919050565b612eff81612eed565b8114612f09575f80fd5b50565b5f81359050612f1a81612ef6565b92915050565b5f8060408385031215612f3657612f35612c5a565b5b5f612f4385828601612d63565b9250506020612f5485828601612f0c565b9150509250929050565b5f8115159050919050565b612f7281612f5e565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f819050919050565b5f612fb4612faf612faa84612d1d565b612f91565b612d1d565b9050919050565b5f612fc582612f9a565b9050919050565b5f612fd682612fbb565b9050919050565b612fe681612fcc565b82525050565b5f602082019050612fff5f830184612fdd565b92915050565b61300e81612eed565b82525050565b5f6020820190506130275f830184613005565b92915050565b5f805f6060848603121561304457613043612c5a565b5b5f61305186828701612d63565b935050602061306286828701612d63565b925050604061307386828701612f0c565b9150509250925092565b5f60ff82169050919050565b6130928161307d565b82525050565b5f6020820190506130ab5f830184613089565b92915050565b6130ba81612d3c565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612c5a565b5b5f6130fb84828501612d63565b91505092915050565b61310d81612f5e565b8114613117575f80fd5b50565b5f8135905061312881613104565b92915050565b5f6020828403121561314357613142612c5a565b5b5f6131508482850161311a565b91505092915050565b5f6020828403121561316e5761316d612c5a565b5b5f61317b84828501612f0c565b91505092915050565b5f805f806080858703121561319c5761319b612c5a565b5b5f6131a987828801612f0c565b94505060206131ba87828801612f0c565b93505060406131cb87828801612f0c565b92505060606131dc87828801612f0c565b91505092959194509250565b5f805f606084860312156131ff576131fe612c5a565b5b5f61320c86828701612f0c565b935050602061321d8682870161311a565b925050604061322e8682870161311a565b9150509250925092565b5f80fd5b5f8083601f84011261325157613250612c62565b5b8235905067ffffffffffffffff81111561326e5761326d613238565b5b60208301915083602082028301111561328a57613289612d19565b5b9250929050565b5f805f604084860312156132a8576132a7612c5a565b5b5f84013567ffffffffffffffff8111156132c5576132c4612c5e565b5b6132d18682870161323c565b935093505060206132e48682870161311a565b9150509250925092565b5f806040838503121561330457613303612c5a565b5b5f61331185828601612d63565b925050602061332285828601612d63565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613360602083612e5d565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b5f61341b602583612e5d565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a9602283612e5d565b91506134b48261344f565b604082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b5f613537602683612e5d565b9150613542826134dd565b604082019050919050565b5f6020820190508181035f8301526135648161352b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c5602383612e5d565b91506135d08261356b565b604082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613653602683612e5d565b915061365e826135f9565b604082019050919050565b5f6020820190508181035f83015261368081613647565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6136bb601f83612e5d565b91506136c682613687565b602082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f613723601d83612e5d565b915061372e826136ef565b602082019050919050565b5f6020820190508181035f83015261375081613717565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f61378b601f83612e5d565b915061379682613757565b602082019050919050565b5f6020820190508181035f8301526137b88161377f565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6137f3601d83612e5d565b91506137fe826137bf565b602082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f61385b601b83612e5d565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6138e9602e83612e5d565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f613951601e83612e5d565b915061395c8261391d565b602082019050919050565b5f6020820190508181035f83015261397e81613945565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6139b9602083612e5d565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a2482612eed565b9150613a2f83612eed565b9250828201905080821115613a4757613a466139ed565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f613a81601a83612e5d565b9150613a8c82613a4d565b602082019050919050565b5f6020820190508181035f830152613aae81613a75565b9050919050565b5f613abf82612eed565b9150613aca83612eed565b9250828203905081811115613ae257613ae16139ed565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613b42602c83612e5d565b9150613b4d82613ae8565b604082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b5f81519050613b8481612d4d565b92915050565b5f60208284031215613b9f57613b9e612c5a565b5b5f613bac84828501613b76565b91505092915050565b5f819050919050565b5f613bd8613bd3613bce84613bb5565b612f91565b612eed565b9050919050565b613be881613bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2081612d3c565b82525050565b5f613c318383613c17565b60208301905092915050565b5f602082019050919050565b5f613c5382613bee565b613c5d8185613bf8565b9350613c6883613c08565b805f5b83811015613c98578151613c7f8882613c26565b9750613c8a83613c3d565b925050600181019050613c6b565b5085935050505092915050565b5f60a082019050613cb85f830188613005565b613cc56020830187613bdf565b8181036040830152613cd78186613c49565b9050613ce660608301856130b1565b613cf36080830184613005565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3482612eed565b9150613d3f83612eed565b925082613d4f57613d4e613cfd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d8e601b83612e5d565b9150613d9982613d5a565b602082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b5f613dcc82612eed565b9150613dd783612eed565b9250828202613de581612eed565b91508282048414831517613dfc57613dfb6139ed565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e5d602183612e5d565b9150613e6882613e03565b604082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e86fd1fe33175452a1573add8d34b9f7ffaab7cb6023ebe8f60d6301b7eed0864736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c80637f2feddc116100f6578063a9059cbb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063f2fde38b146106a4578063fc7d9469146106cc576101d6565b8063a9059cbb1461058a578063bd6bba91146105c6578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f9a55c0116100d05780638f9a55c0146104e657806395d89b411461051057806398a5c3151461053a578063a2a957bb14610562576101d6565b80637f2feddc146104585780638da5cb5b146104945780638f70ccf7146104be576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a6146104185780637d1db4a51461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612e0c565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612ecd565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612f20565b610850565b60405161025f9190612f78565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612fec565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190613014565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd919061302d565b6108a1565b6040516102ef9190612f78565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190613014565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190613098565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d91906130c0565b60405180910390f35b348015610381575f80fd5b5061039c600480360381019061039791906130d9565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf919061312e565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd91906130d9565b610c11565b60405161040f9190613014565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610442610dad565b60405161044f9190613014565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906130d9565b610db3565b60405161048b9190613014565b60405180910390f35b34801561049f575f80fd5b506104a8610dc8565b6040516104b591906130c0565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061312e565b610def565b005b3480156104f1575f80fd5b506104fa610ea0565b6040516105079190613014565b60405180910390f35b34801561051b575f80fd5b50610524610ea6565b6040516105319190612ecd565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613159565b610ee3565b005b34801561056d575f80fd5b5061058860048036038101906105839190613184565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f20565b611177565b6040516105bd9190612f78565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e791906131e8565b611194565b005b3480156105f9575f80fd5b50610614600480360381019061060f91906130d9565b611267565b6040516106219190612f78565b60405180910390f35b348015610635575f80fd5b5061063e611284565b005b34801561064b575f80fd5b5061066660048036038101906106619190613291565b611359565b005b348015610673575f80fd5b5061068e600480360381019061068991906132ee565b611488565b60405161069b9190613014565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c591906130d9565b61150a565b005b3480156106d7575f80fd5b506106f260048036038101906106ed91906131e8565b6116c7565b005b6106fc61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613376565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613394565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600981526020017f48756254656e736f720000000000000000000000000000000000000000000000815250905090565b5f61086361085c61179b565b84846117a2565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108ad848484611965565b61096a846108b961179b565b61096585604051806060016040528060258152602001613e926025913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c61179b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c59092919063ffffffff16565b6117a2565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b061179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613376565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613376565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8461179b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e81612227565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f565b9050919050565b610c6761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df761179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613376565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f48414f0000000000000000000000000000000000000000000000000000000000815250905090565b610eeb61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613376565b60405180910390fd5b8060188190555050565b610f8961179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613376565b60405180910390fd5b5f8410158015611026575060048411155b611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613431565b60405180910390fd5b5f82101580156110765750605f8211155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906134bf565b60405180910390fd5b5f83101580156110c6575060048311155b611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061354d565b60405180910390fd5b5f81101580156111165750605f8111155b611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c906135db565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61118a61118361179b565b8484611965565b6001905092915050565b61119c61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90613376565b60405180910390fd5b826016819055508160195f6101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c461179b565b73ffffffffffffffffffffffffffffffffffffffff161480611339575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132161179b565b73ffffffffffffffffffffffffffffffffffffffff16145b611341575f80fd5b5f61134b30610c11565b9050611356816122fb565b50565b61136161179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613376565b60405180910390fd5b5f5b83839050811015611482578160055f86868581811061141157611410613394565b5b905060200201602081019061142691906130d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113ef565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61151261179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613376565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613669565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116cf61179b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613376565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906136d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613739565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119589190613014565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca906137a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3890613809565b60405180910390fd5b5f8111611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613871565b60405180910390fd5b611a8b610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611af95750611ac9610dc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257601560149054906101000a900460ff16611b8857611b1a610dc8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906138ff565b60405180910390fd5b5b601654811115611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613967565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c6b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906139cf565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d565760175481611d0b84610c11565b611d159190613a1a565b10611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c90613a97565b60405180910390fd5b5b5f611d6030610c11565b90505f60185482101590506016548210611d7a5760165491505b808015611d92575060158054906101000a900460ff16155b8015611deb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e035750601560169054906101000a900460ff165b8015611e56575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea9575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecf57611eb7826122fb565b5f4790505f811115611ecd57611ecc47612227565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f72575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612023575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612022575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612030575f90506121b3565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120d9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120f157600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561219a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121b257600a54600c81905550600b54600d819055505b5b6121bf84848484612564565b50505050565b5f83831115829061220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122039190612ecd565b60405180910390fd5b505f838561221a9190613ab5565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561228b573d5f803e3d5ffd5b5050565b5f6006548211156122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90613b58565b60405180910390fd5b5f6122de612591565b90506122f381846125ba90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233157612330612c76565b5b60405190808252806020026020018201604052801561235f5781602001602082028036833780820191505090505b50905030815f8151811061237657612375613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190613b8a565b8160018151811061245257612451613394565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b83060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161251a959493929190613ca5565b5f604051808303815f87803b158015612531575f80fd5b505af1158015612543573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061257257612571612603565b5b61257d84848461263c565b8061258b5761258a6127fc565b5b50505050565b5f805f61259c612810565b915091506125b381836125ba90919063ffffffff16565b9250505090565b5f6125fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061286c565b905092915050565b5f600c5414801561261557505f600d54145b61263a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061264b876128cd565b9550955095509550955095506126a78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292d90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127388560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612782816129d3565b61278c8483612a8a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127e99190613014565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061284167016345785d8a00006006546125ba90919063ffffffff16565b82101561285f5760065467016345785d8a0000935093505050612868565b81819350935050505b9091565b5f80831182906128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a99190612ecd565b60405180910390fd5b505f83856128c09190613d2a565b9050809150509392505050565b5f805f805f805f805f6128e58a600c54600d54612ac4565b9250925092505f6128f4612591565b90505f805f6129058e878787612b56565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61296e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121c5565b905092915050565b5f8082846129849190613a1a565b9050838110156129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c090613da4565b60405180910390fd5b8091505092915050565b5f6129dc612591565b90505f6129f28284612bda90919063ffffffff16565b9050612a448160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612a9f8260065461292d90919063ffffffff16565b600681905550612aba8160075461297690919063ffffffff16565b6007819055505050565b5f805f80612aee6064612ae0888a612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b176064612b09888b612bda90919063ffffffff16565b6125ba90919063ffffffff16565b90505f612b3f82612b31858c61292d90919063ffffffff16565b61292d90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b6d8589612bda90919063ffffffff16565b90505f612b838689612bda90919063ffffffff16565b90505f612b998789612bda90919063ffffffff16565b90505f612bc182612bb3858761292d90919063ffffffff16565b61292d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bea575f9050612c4b565b5f8284612bf79190613dc2565b9050828482612c069190613d2a565b14612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90613e73565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cac82612c66565b810181811067ffffffffffffffff82111715612ccb57612cca612c76565b5b80604052505050565b5f612cdd612c51565b9050612ce98282612ca3565b919050565b5f67ffffffffffffffff821115612d0857612d07612c76565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4682612d1d565b9050919050565b612d5681612d3c565b8114612d60575f80fd5b50565b5f81359050612d7181612d4d565b92915050565b5f612d89612d8484612cee565b612cd4565b90508083825260208201905060208402830185811115612dac57612dab612d19565b5b835b81811015612dd55780612dc18882612d63565b845260208401935050602081019050612dae565b5050509392505050565b5f82601f830112612df357612df2612c62565b5b8135612e03848260208601612d77565b91505092915050565b5f60208284031215612e2157612e20612c5a565b5b5f82013567ffffffffffffffff811115612e3e57612e3d612c5e565b5b612e4a84828501612ddf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8a578082015181840152602081019050612e6f565b5f8484015250505050565b5f612e9f82612e53565b612ea98185612e5d565b9350612eb9818560208601612e6d565b612ec281612c66565b840191505092915050565b5f6020820190508181035f830152612ee58184612e95565b905092915050565b5f819050919050565b612eff81612eed565b8114612f09575f80fd5b50565b5f81359050612f1a81612ef6565b92915050565b5f8060408385031215612f3657612f35612c5a565b5b5f612f4385828601612d63565b9250506020612f5485828601612f0c565b9150509250929050565b5f8115159050919050565b612f7281612f5e565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f819050919050565b5f612fb4612faf612faa84612d1d565b612f91565b612d1d565b9050919050565b5f612fc582612f9a565b9050919050565b5f612fd682612fbb565b9050919050565b612fe681612fcc565b82525050565b5f602082019050612fff5f830184612fdd565b92915050565b61300e81612eed565b82525050565b5f6020820190506130275f830184613005565b92915050565b5f805f6060848603121561304457613043612c5a565b5b5f61305186828701612d63565b935050602061306286828701612d63565b925050604061307386828701612f0c565b9150509250925092565b5f60ff82169050919050565b6130928161307d565b82525050565b5f6020820190506130ab5f830184613089565b92915050565b6130ba81612d3c565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612c5a565b5b5f6130fb84828501612d63565b91505092915050565b61310d81612f5e565b8114613117575f80fd5b50565b5f8135905061312881613104565b92915050565b5f6020828403121561314357613142612c5a565b5b5f6131508482850161311a565b91505092915050565b5f6020828403121561316e5761316d612c5a565b5b5f61317b84828501612f0c565b91505092915050565b5f805f806080858703121561319c5761319b612c5a565b5b5f6131a987828801612f0c565b94505060206131ba87828801612f0c565b93505060406131cb87828801612f0c565b92505060606131dc87828801612f0c565b91505092959194509250565b5f805f606084860312156131ff576131fe612c5a565b5b5f61320c86828701612f0c565b935050602061321d8682870161311a565b925050604061322e8682870161311a565b9150509250925092565b5f80fd5b5f8083601f84011261325157613250612c62565b5b8235905067ffffffffffffffff81111561326e5761326d613238565b5b60208301915083602082028301111561328a57613289612d19565b5b9250929050565b5f805f604084860312156132a8576132a7612c5a565b5b5f84013567ffffffffffffffff8111156132c5576132c4612c5e565b5b6132d18682870161323c565b935093505060206132e48682870161311a565b9150509250925092565b5f806040838503121561330457613303612c5a565b5b5f61331185828601612d63565b925050602061332285828601612d63565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613360602083612e5d565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b5f61341b602583612e5d565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a9602283612e5d565b91506134b48261344f565b604082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b5f613537602683612e5d565b9150613542826134dd565b604082019050919050565b5f6020820190508181035f8301526135648161352b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c5602383612e5d565b91506135d08261356b565b604082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613653602683612e5d565b915061365e826135f9565b604082019050919050565b5f6020820190508181035f83015261368081613647565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6136bb601f83612e5d565b91506136c682613687565b602082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f613723601d83612e5d565b915061372e826136ef565b602082019050919050565b5f6020820190508181035f83015261375081613717565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f61378b601f83612e5d565b915061379682613757565b602082019050919050565b5f6020820190508181035f8301526137b88161377f565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f6137f3601d83612e5d565b91506137fe826137bf565b602082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f61385b601b83612e5d565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f6138e9602e83612e5d565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f613951601e83612e5d565b915061395c8261391d565b602082019050919050565b5f6020820190508181035f83015261397e81613945565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c6973745f82015250565b5f6139b9602083612e5d565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a2482612eed565b9150613a2f83612eed565b9250828201905080821115613a4757613a466139ed565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e63650000000000005f82015250565b5f613a81601a83612e5d565b9150613a8c82613a4d565b602082019050919050565b5f6020820190508181035f830152613aae81613a75565b9050919050565b5f613abf82612eed565b9150613aca83612eed565b9250828203905081811115613ae257613ae16139ed565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613b42602c83612e5d565b9150613b4d82613ae8565b604082019050919050565b5f6020820190508181035f830152613b6f81613b36565b9050919050565b5f81519050613b8481612d4d565b92915050565b5f60208284031215613b9f57613b9e612c5a565b5b5f613bac84828501613b76565b91505092915050565b5f819050919050565b5f613bd8613bd3613bce84613bb5565b612f91565b612eed565b9050919050565b613be881613bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2081612d3c565b82525050565b5f613c318383613c17565b60208301905092915050565b5f602082019050919050565b5f613c5382613bee565b613c5d8185613bf8565b9350613c6883613c08565b805f5b83811015613c98578151613c7f8882613c26565b9750613c8a83613c3d565b925050600181019050613c6b565b5085935050505092915050565b5f60a082019050613cb85f830188613005565b613cc56020830187613bdf565b8181036040830152613cd78186613c49565b9050613ce660608301856130b1565b613cf36080830184613005565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3482612eed565b9150613d3f83612eed565b925082613d4f57613d4e613cfd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d8e601b83612e5d565b9150613d9982613d5a565b602082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b5f613dcc82612eed565b9150613dd783612eed565b9250828202613de581612eed565b91508282048414831517613dfc57613dfb6139ed565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e5d602183612e5d565b9150613e6882613e03565b604082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e86fd1fe33175452a1573add8d34b9f7ffaab7cb6023ebe8f60d6301b7eed0864736f6c63430008170033

Deployed Bytecode Sourcemap

4677:14264:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13480:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7336:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8268:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6027:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7616:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8470:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6327:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7524:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6075:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13658:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18105:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13236:235;;;;;;;;;;;;;:::i;:::-;;7720:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2150:148;;;;;;;;;;;;;:::i;:::-;;6219:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5766:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1934:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12881:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6272:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7428:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17913:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17167:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7867:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18246:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5728:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12991:236;;;;;;;;;;;;;:::i;:::-;;18702:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8075:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2307:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18471:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13480:169;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13556:9:::1;13551:91;13575:5;:12;13571:1;:16;13551:91;;;13626:4;13609;:14;13614:5;13620:1;13614:8;;;;;;;;:::i;:::-;;;;;;;;13609:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13589:3;;;;;;;13551:91;;;;13480:169:::0;:::o;7336:83::-;7373:13;7406:5;;;;;;;;;;;;;;;;;7399:12;;7336:83;:::o;8268:193::-;8370:4;8392:39;8401:12;:10;:12::i;:::-;8415:7;8424:6;8392:8;:39::i;:::-;8449:4;8442:11;;8268:193;;;;:::o;6027:41::-;;;;;;;;;;;;;:::o;7616:95::-;7669:7;5222:17;7689:14;;7616:95;:::o;8470:443::-;8602:4;8619:36;8629:6;8637:9;8648:6;8619:9;:36::i;:::-;8666:217;8689:6;8710:12;:10;:12::i;:::-;8737:135;8793:6;8737:135;;;;;;;;;;;;;;;;;:11;:19;8749:6;8737:19;;;;;;;;;;;;;;;:33;8757:12;:10;:12::i;:::-;8737:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8666:8;:217::i;:::-;8901:4;8894:11;;8470:443;;;;;:::o;6327:49::-;;;;:::o;7524:83::-;7565:5;4895:1;7583:16;;7524:83;:::o;6075:28::-;;;;;;;;;;;;;:::o;13658:92::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13737:5:::1;13722:4;:12;13727:6;13722:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13658:92:::0;:::o;18105:101::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18186:12:::1;18172:11;;:26;;;;;;;;;;;;;;;;;;18105:101:::0;:::o;13236:235::-;13302:19;;;;;;;;;;;13286:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13341:17;;;;;;;;;;;13325:33;;:12;:10;:12::i;:::-;:33;;;13286:72;13278:81;;;;;;13370:26;13399:21;13370:50;;13431:32;13444:18;13431:12;:32::i;:::-;13267:204;13236:235::o;7720:138::-;7786:7;7813:37;7833:7;:16;7841:7;7833:16;;;;;;;;;;;;;;;;7813:19;:37::i;:::-;7806:44;;7720:138;;;:::o;2150:148::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2257:1:::1;2220:40;;2241:6;::::0;::::1;;;;;;;;2220:40;;;;;;;;;;;;2288:1;2271:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2150:148::o:0;6219:45::-;;;;:::o;5766:43::-;;;;;;;;;;;;;;;;;:::o;1934:79::-;1972:7;1999:6;;;;;;;;;;;1992:13;;1934:79;:::o;12881:101::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12962:12:::1;12948:11;;:26;;;;;;;;;;;;;;;;;;12881:101:::0;:::o;6272:47::-;;;;:::o;7428:87::-;7467:13;7500:7;;;;;;;;;;;;;;;;;7493:14;;7428:87;:::o;17913:139::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18026:18:::1;18004:19;:40;;;;17913:139:::0;:::o;17167:693::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17326:1:::1;17309:13;:18;;:40;;;;;17348:1;17331:13;:18;;17309:40;17301:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17425:1;17410:11;:16;;:37;;;;;17445:2;17430:11;:17;;17410:37;17402:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17523:1;17505:14;:19;;:42;;;;;17546:1;17528:14;:19;;17505:42;17497:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17625:1;17609:12;:17;;:39;;;;;17646:2;17630:12;:18;;17609:39;17601:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17718:13;17701:14;:30;;;;17760:14;17742:15;:32;;;;17800:11;17785:12;:26;;;;17838:12;17822:13;:28;;;;17167:693:::0;;;;:::o;7867:199::-;7972:4;7994:42;8004:12;:10;:12::i;:::-;8018:9;8029:6;7994:9;:42::i;:::-;8054:4;8047:11;;7867:199;;;;:::o;18246:216::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18367:11:::1;18352:12;:26;;;;18402:6;18392:7;;:16;;;;;;;;;;;;;;;;;;18435:9;18422:10;;:22;;;;;;;;;;;;;;;;;;18246:216:::0;;;:::o;5728:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12991:236::-;13057:19;;;;;;;;;;;13041:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13096:17;;;;;;;;;;;13080:33;;:12;:10;:12::i;:::-;:33;;;13041:72;13033:81;;;;;;13125:23;13151:24;13169:4;13151:9;:24::i;:::-;13125:50;;13186:33;13203:15;13186:16;:33::i;:::-;13022:205;12991:236::o;18702:234::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18819:9:::1;18815:114;18838:8;;:15;;18834:1;:19;18815:114;;;18909:8;18875:18;:31;18894:8;;18903:1;18894:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18875:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18855:3;;;;;;;18815:114;;;;18702:234:::0;;;:::o;8075:184::-;8192:7;8224:11;:18;8236:5;8224:18;;;;;;;;;;;;;;;:27;8243:7;8224:27;;;;;;;;;;;;;;;;8217:34;;8075:184;;;;:::o;2307:244::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2416:1:::1;2396:22;;:8;:22;;::::0;2388:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2506:8;2477:38;;2498:6;::::0;::::1;;;;;;;;2477:38;;;;;;;;;;;;2535:8;2526:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2307:244:::0;:::o;18471:222::-;2072:12;:10;:12::i;:::-;2062:22;;:6;;;;;;;;;;:22;;;2054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18600:13:::1;18583:14;:30;;;;18637:9;18624:10;;:22;;;;;;;;;;;;;;;;;;18673:12;18657:13;;:28;;;;;;;;;;;;;;;;;;18471:222:::0;;;:::o;683:98::-;736:7;763:10;756:17;;683:98;:::o;9612:361::-;9756:1;9739:19;;:5;:19;;;9731:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9832:1;9813:21;;:7;:21;;;9805:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9911:6;9881:11;:18;9893:5;9881:18;;;;;;;;;;;;;;;:27;9900:7;9881:27;;;;;;;;;;;;;;;:36;;;;9949:7;9933:32;;9942:5;9933:32;;;9958:6;9933:32;;;;;;:::i;:::-;;;;;;;;9612:361;;;:::o;9982:2290::-;10120:1;10104:18;;:4;:18;;;10096:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10191:1;10177:16;;:2;:16;;;10169:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10255:1;10246:6;:10;10238:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10314:7;:5;:7::i;:::-;10306:15;;:4;:15;;;;:32;;;;;10331:7;:5;:7::i;:::-;10325:13;;:2;:13;;;;10306:32;10302:1238;;;10396:11;;;;;;;;;;;10391:127;;10444:7;:5;:7::i;:::-;10436:15;;:4;:15;;;10428:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10391:127;10553:12;;10543:6;:22;;10535:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10624:4;:10;10629:4;10624:10;;;;;;;;;;;;;;;;;;;;;;;;;10623:11;:24;;;;;10639:4;:8;10644:2;10639:8;;;;;;;;;;;;;;;;;;;;;;;;;10638:9;10623:24;10615:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10711:13;;;;;;;;;;;10705:19;;:2;:19;;;10702:137;;10778:14;;10769:6;10753:13;10763:2;10753:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10745:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10702:137;10856:28;10887:24;10905:4;10887:9;:24::i;:::-;10856:55;;10926:12;10965:19;;10941:20;:43;;10926:58;;11029:12;;11005:20;:36;11002:124;;11098:12;;11075:35;;11002:124;11147:7;:18;;;;;11159:6;;;;;;;;;;11158:7;11147:18;:43;;;;;11177:13;;;;;;;;;;;11169:21;;:4;:21;;;;11147:43;:58;;;;;11194:11;;;;;;;;;;;11147:58;:87;;;;;11210:18;:24;11229:4;11210:24;;;;;;;;;;;;;;;;;;;;;;;;;11209:25;11147:87;:114;;;;;11239:18;:22;11258:2;11239:22;;;;;;;;;;;;;;;;;;;;;;;;;11238:23;11147:114;11143:386;;;11282:38;11299:20;11282:16;:38::i;:::-;11339:26;11368:21;11339:50;;11433:1;11412:18;:22;11408:106;;;11459:35;11472:21;11459:12;:35::i;:::-;11408:106;11263:266;11143:386;10340:1200;;10302:1238;11553:12;11568:4;11553:19;;11618:18;:24;11637:4;11618:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11646:18;:22;11665:2;11646:22;;;;;;;;;;;;;;;;;;;;;;;;;11618:50;11617:102;;;;11682:13;;;;;;;;;;;11674:21;;:4;:21;;;;:44;;;;;11705:13;;;;;;;;;;;11699:19;;:2;:19;;;;11674:44;11617:102;11613:597;;;11746:5;11736:15;;11613:597;;;11830:13;;;;;;;;;;;11822:21;;:4;:21;;;:55;;;;;11861:15;;;;;;;;;;;11847:30;;:2;:30;;;;11822:55;11819:162;;;11910:14;;11898:9;:26;;;;11953:12;;11943:7;:22;;;;11819:162;12041:13;;;;;;;;;;;12035:19;;:2;:19;;;:55;;;;;12074:15;;;;;;;;;;;12058:32;;:4;:32;;;;12035:55;12031:165;;;12123:15;;12111:9;:27;;;;12167:13;;12157:7;:23;;;;12031:165;11613:597;12223:41;12238:4;12244:2;12248:6;12256:7;12223:14;:41::i;:::-;10085:2187;9982:2290;;;:::o;2919:224::-;3039:7;3072:1;3067;:6;;3075:12;3059:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3099:9;3115:1;3111;:5;;;;:::i;:::-;3099:17;;3134:1;3127:8;;;2919:224;;;;;:::o;12773:99::-;12830:17;;;;;;;;;;;:26;;:34;12857:6;12830:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12773:99;:::o;8922:325::-;9017:7;9075;;9064;:18;;9042:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;9165:19;9187:10;:8;:10::i;:::-;9165:32;;9215:24;9227:11;9215:7;:11;;:24;;;;:::i;:::-;9208:31;;;8922:325;;;:::o;12281:483::-;6633:4;6624:6;;:13;;;;;;;;;;;;;;;;;;12359:21:::1;12397:1;12383:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12359:40;;12428:4;12410;12415:1;12410:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12454:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12444:4;12449:1;12444:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12487:62;12504:4;12519:15;;;;;;;;;;;12537:11;12487:8;:62::i;:::-;12560:15;;;;;;;;;;;:66;;;12641:11;12667:1;12683:4;12710;12730:15;12560:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12348:416;6669:5:::0;6660:6;;:14;;;;;;;;;;;;;;;;;;12281:483;:::o;13759:282::-;13915:7;13910:28;;13924:14;:12;:14::i;:::-;13910:28;13949:44;13967:6;13975:9;13986:6;13949:17;:44::i;:::-;14009:7;14004:29;;14018:15;:13;:15::i;:::-;14004:29;13759:282;;;;:::o;16728:164::-;16770:7;16791:15;16808;16827:19;:17;:19::i;:::-;16790:56;;;;16864:20;16876:7;16864;:11;;:20;;;;:::i;:::-;16857:27;;;;16728:164;:::o;3407:132::-;3465:7;3492:39;3496:1;3499;3492:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3485:46;;3407:132;;;;:::o;9256:221::-;9316:1;9303:9;;:14;:30;;;;;9332:1;9321:7;;:12;9303:30;9335:7;9299:43;9375:9;;9355:17;:29;;;;9413:7;;9395:15;:25;;;;9446:1;9434:9;:13;;;;9468:1;9458:7;:11;;;;9256:221;:::o;14050:610::-;14197:15;14227:23;14265:12;14292:23;14330:12;14357:13;14384:19;14395:7;14384:10;:19::i;:::-;14182:221;;;;;;;;;;;;14432:28;14452:7;14432;:15;14440:6;14432:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14414:7;:15;14422:6;14414:15;;;;;;;;;;;;;;;:46;;;;14492:39;14515:15;14492:7;:18;14500:9;14492:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14471:7;:18;14479:9;14471:18;;;;;;;;;;;;;;;:60;;;;14542:16;14552:5;14542:9;:16::i;:::-;14569:23;14581:4;14587;14569:11;:23::i;:::-;14625:9;14608:44;;14617:6;14608:44;;;14636:15;14608:44;;;;;;:::i;:::-;;;;;;;;14171:489;;;;;;14050:610;;;:::o;9486:117::-;9542:17;;9530:9;:29;;;;9580:15;;9570:7;:25;;;;9486:117::o;16901:257::-;16952:7;16961;16981:15;16999:7;;16981:25;;17017:15;5222:17;17017:25;;17067:20;5222:17;17067:7;;:11;;:20;;;;:::i;:::-;17057:7;:30;17053:61;;;17097:7;;5222:17;17089:25;;;;;;;;17053:61;17133:7;17142;17125:25;;;;;;16901:257;;;:::o;3548:223::-;3668:7;3700:1;3696;:5;3703:12;3688:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3727:9;3743:1;3739;:5;;;;:::i;:::-;3727:17;;3762:1;3755:8;;;3548:223;;;;;:::o;15083:615::-;15183:7;15205;15227;15249;15271;15293;15329:23;15354:12;15368:13;15398:40;15410:7;15419:9;;15430:7;;15398:11;:40::i;:::-;15328:110;;;;;;15449:19;15471:10;:8;:10::i;:::-;15449:32;;15493:15;15510:23;15535:12;15564:46;15576:7;15585:4;15591:5;15598:11;15564;:46::i;:::-;15492:118;;;;;;15629:7;15638:15;15655:4;15661:15;15678:4;15684:5;15621:69;;;;;;;;;;;;;;;;;;;15083:615;;;;;;;:::o;2774:136::-;2832:7;2859:43;2863:1;2866;2859:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2852:50;;2774:136;;;;:::o;2586:179::-;2644:7;2664:9;2680:1;2676;:5;;;;:::i;:::-;2664:17;;2705:1;2700;:6;;2692:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2756:1;2749:8;;;2586:179;;;;:::o;14669:211::-;14722:19;14744:10;:8;:10::i;:::-;14722:32;;14765:13;14781:22;14791:11;14781:5;:9;;:22;;;;:::i;:::-;14765:38;;14839:33;14866:5;14839:7;:22;14855:4;14839:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14814:7;:22;14830:4;14814:22;;;;;;;;;;;;;;;:58;;;;14711:169;;14669:211;:::o;14889:147::-;14967:17;14979:4;14967:7;;:11;;:17;;;;:::i;:::-;14957:7;:27;;;;15008:20;15023:4;15008:10;;:14;;:20;;;;:::i;:::-;14995:10;:33;;;;14889:147;;:::o;15707:469::-;15876:7;15898;15920;15955:12;15970:30;15996:3;15970:21;15982:8;15970:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15955:45;;16011:13;16027:28;16051:3;16027:19;16039:6;16027:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16011:44;;16066:23;16092:28;16114:5;16092:17;16104:4;16092:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16066:54;;16139:15;16156:4;16162:5;16131:37;;;;;;;;;15707:469;;;;;;;:::o;16185:534::-;16379:7;16401;16423;16458:15;16476:24;16488:11;16476:7;:11;;:24;;;;:::i;:::-;16458:42;;16511:12;16526:21;16535:11;16526:4;:8;;:21;;;;:::i;:::-;16511:36;;16558:13;16574:22;16584:11;16574:5;:9;;:22;;;;:::i;:::-;16558:38;;16607:23;16633:28;16655:5;16633:17;16645:4;16633:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16607:54;;16680:7;16689:15;16706:4;16672:39;;;;;;;;;;16185:534;;;;;;;;:::o;3152:246::-;3210:7;3239:1;3234;:6;3230:47;;3264:1;3257:8;;;;3230:47;3287:9;3303:1;3299;:5;;;;:::i;:::-;3287:17;;3332:1;3327;3323;:5;;;;:::i;:::-;:10;3315:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3389:1;3382:8;;;3152: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://0e86fd1fe33175452a1573add8d34b9f7ffaab7cb6023ebe8f60d6301b7eed08

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.