ETH Price: $3,449.34 (+1.51%)
Gas: 11 Gwei

Contract

0xE29C7a8d975F45907aF186D87F8a923c507654B9
 

Overview

ETH Balance

0.000240914912560931 ETH

Eth Value

$0.83 (@ $3,449.34/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve175982122023-07-01 9:05:59382 days ago1688202359IN
0xE29C7a8d...c507654B9
0 ETH0.0004586115.34049444
Approve175982122023-07-01 9:05:59382 days ago1688202359IN
0xE29C7a8d...c507654B9
0 ETH0.0007169315.25519859
Approve170963722023-04-21 17:55:35452 days ago1682099735IN
0xE29C7a8d...c507654B9
0 ETH0.0015010331.94787343
Approve170889862023-04-20 16:51:11453 days ago1682009471IN
0xE29C7a8d...c507654B9
0 ETH0.00557051117.95949192
Approve170539642023-04-15 17:46:59458 days ago1681580819IN
0xE29C7a8d...c507654B9
0 ETH0.0011593524.55020804
Approve170503352023-04-15 5:24:11459 days ago1681536251IN
0xE29C7a8d...c507654B9
0 ETH0.0006244120.88635039
Approve170503262023-04-15 5:22:23459 days ago1681536143IN
0xE29C7a8d...c507654B9
0 ETH0.001038322.09345208
Approve170478272023-04-14 20:46:11459 days ago1681505171IN
0xE29C7a8d...c507654B9
0 ETH0.0014025629.70034433
Approve170476982023-04-14 20:18:59459 days ago1681503539IN
0xE29C7a8d...c507654B9
0 ETH0.0012419626.29947515
Approve170474922023-04-14 19:35:59459 days ago1681500959IN
0xE29C7a8d...c507654B9
0 ETH0.0011025223.34669644
Approve170473622023-04-14 19:09:23459 days ago1681499363IN
0xE29C7a8d...c507654B9
0 ETH0.0014280230.23931948
Approve170470322023-04-14 18:01:59459 days ago1681495319IN
0xE29C7a8d...c507654B9
0 ETH0.0016264234.39686596
Approve170470232023-04-14 18:00:11459 days ago1681495211IN
0xE29C7a8d...c507654B9
0 ETH0.0014275130.19033798
Approve170470112023-04-14 17:57:35459 days ago1681495055IN
0xE29C7a8d...c507654B9
0 ETH0.0014138529.90131284
Transfer170462852023-04-14 15:28:47459 days ago1681486127IN
0xE29C7a8d...c507654B9
0 ETH0.0012895740.63330959
Approve170461532023-04-14 15:01:23459 days ago1681484483IN
0xE29C7a8d...c507654B9
0 ETH0.00392404131.52063545
Approve170459912023-04-14 14:27:47459 days ago1681482467IN
0xE29C7a8d...c507654B9
0 ETH0.0016484234.86213698
Approve170451902023-04-14 11:41:59460 days ago1681472519IN
0xE29C7a8d...c507654B9
0 ETH0.0012352426.15715298
Approve170450852023-04-14 11:20:35460 days ago1681471235IN
0xE29C7a8d...c507654B9
0 ETH0.0014702231.32405381
Approve170421862023-04-14 1:25:47460 days ago1681435547IN
0xE29C7a8d...c507654B9
0 ETH0.0013548528.65356456
Approve170284382023-04-12 0:40:11462 days ago1681260011IN
0xE29C7a8d...c507654B9
0 ETH0.0010197121.59311507
Approve170272712023-04-11 20:43:11462 days ago1681245791IN
0xE29C7a8d...c507654B9
0 ETH0.0013597128.79292072
Approve170272212023-04-11 20:33:11462 days ago1681245191IN
0xE29C7a8d...c507654B9
0 ETH0.0013676829.13939204
Approve170269202023-04-11 19:30:59462 days ago1681241459IN
0xE29C7a8d...c507654B9
0 ETH0.0025742454.51139622
Approve170246712023-04-11 11:50:47463 days ago1681213847IN
0xE29C7a8d...c507654B9
0 ETH0.0010990823.27393948
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
170964272023-04-21 18:06:59452 days ago1682100419
0xE29C7a8d...c507654B9
0.00132393 ETH
170964272023-04-21 18:06:59452 days ago1682100419
0xE29C7a8d...c507654B9
0.00088232 ETH
170964272023-04-21 18:06:59452 days ago1682100419
0xE29C7a8d...c507654B9
0.00022058 ETH
170964272023-04-21 18:06:59452 days ago1682100419
0xE29C7a8d...c507654B9
0.00242684 ETH
170963422023-04-21 17:49:35452 days ago1682099375
0xE29C7a8d...c507654B9
0.00128541 ETH
170963422023-04-21 17:49:35452 days ago1682099375
0xE29C7a8d...c507654B9
0.00085675 ETH
170963422023-04-21 17:49:35452 days ago1682099375
0xE29C7a8d...c507654B9
0.00021418 ETH
170963422023-04-21 17:49:35452 days ago1682099375
0xE29C7a8d...c507654B9
0.00235636 ETH
170539712023-04-15 17:48:23458 days ago1681580903
0xE29C7a8d...c507654B9
0.00066271 ETH
170539712023-04-15 17:48:23458 days ago1681580903
0xE29C7a8d...c507654B9
0.00044148 ETH
170539712023-04-15 17:48:23458 days ago1681580903
0xE29C7a8d...c507654B9
0.00011037 ETH
170539712023-04-15 17:48:23458 days ago1681580903
0xE29C7a8d...c507654B9
0.00121457 ETH
170503532023-04-15 5:27:47459 days ago1681536467
0xE29C7a8d...c507654B9
0.00143299 ETH
170503532023-04-15 5:27:47459 days ago1681536467
0xE29C7a8d...c507654B9
0.00095514 ETH
170503532023-04-15 5:27:47459 days ago1681536467
0xE29C7a8d...c507654B9
0.00023878 ETH
170503532023-04-15 5:27:47459 days ago1681536467
0xE29C7a8d...c507654B9
0.00262692 ETH
170500482023-04-15 4:23:59459 days ago1681532639
0xE29C7a8d...c507654B9
0.0006868 ETH
170500482023-04-15 4:23:59459 days ago1681532639
0xE29C7a8d...c507654B9
0.00045753 ETH
170500482023-04-15 4:23:59459 days ago1681532639
0xE29C7a8d...c507654B9
0.00011438 ETH
170500482023-04-15 4:23:59459 days ago1681532639
0xE29C7a8d...c507654B9
0.00125872 ETH
170500452023-04-15 4:23:23459 days ago1681532603
0xE29C7a8d...c507654B9
0.00150071 ETH
170500452023-04-15 4:23:23459 days ago1681532603
0xE29C7a8d...c507654B9
0.00100023 ETH
170500452023-04-15 4:23:23459 days ago1681532603
0xE29C7a8d...c507654B9
0.00025005 ETH
170500452023-04-15 4:23:23459 days ago1681532603
0xE29C7a8d...c507654B9
0.00275101 ETH
170480262023-04-14 21:27:47459 days ago1681507667
0xE29C7a8d...c507654B9
0.00092545 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BabySharbiToken

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-01
*/

//Tg: t.me/baby_sharbi
//Website: babysharbi.net

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.10;

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

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

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

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

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

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

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

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract BabySharbiToken is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;
    mapping(address => bool) public isClaimed;
    mapping(address => bool) public isBot;

    string private _name = "Baby Sharbi";
    string private _symbol = "$BSHARBI";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000_000 * 1e9;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;
    address public sharbiWallet;
    address public liquidityReceiverWallet;
    address public oldBabySharbi;

    uint256 public minTokenToSwap = _totalSupply.div(1e5); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply.div(100); // this is the max wallet holding limit
    uint256 public maxTxnLimit = _totalSupply.div(100); // this is the max transaction limit
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 60 seconds;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus = true; // enable by default
    bool public trading; // once enable can't be disable afterwards

    uint256 public liquidityFeeOnBuying = 10; // 1% will be added to the liquidity
    uint256 public marketingFeeOnBuying = 20; // 2% will be added to the marketing address
    uint256 public sharbiFeeOnBuying = 30; // 3% will be added to the SHARBI address

    uint256 public liquidityFeeOnSelling = 10; // 1% will be added to the liquidity
    uint256 public marketingFeeOnSelling = 20; // 2% will be added to the marketing address
    uint256 public sharbiFeeOnSelling = 30; // 3% will be added to the SHARBI address

    uint256 liquidityFeeCounter = 0;
    uint256 marketingFeeCounter = 0;
    uint256 sharbiFeeCounter = 0;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[owner()] = _totalSupply;
        liquidityReceiverWallet = msg.sender;
        marketingWallet = address(0xFbE80249C95D20f8c87327dB3721c77581999493);
        sharbiWallet = address(0x2441056132D344D57326344AAdd0E0C1A3945688);
        oldBabySharbi = address(0xc99808C486D2A4cb5c0a0402066098FbDB77a2EC);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[sharbiWallet] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;
        isExcludedFromMaxTxn[marketingWallet] = true;
        isExcludedFromMaxTxn[sharbiWallet] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;
        isExcludedFromMaxHolding[sharbiWallet] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

    function name() public view returns (string memory) {
        return _name;
    }

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "$BSHARBI: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "$BSHARBI: decreased allowance or below zero"
            )
        );
        return true;
    }

    function includeOrExcludeFromFee(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(address[] memory account, bool value)
        external
        onlyOwner
    {
        for (uint256 i; i < account.length; i++) {
            isExcludedFromMaxTxn[account[i]] = value;
        }
    }

    function includeOrExcludeFromMaxHolding(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxHolding[account] = value;
    }

    function setIsClaimed(address account, bool value)
        external
        onlyOwner
    {
        isClaimed[account] = value;
    }

    function addOrRemoveBots(address[] memory accounts, bool exempt)
        external
        onlyOwner
    {
        for (uint256 i; i < accounts.length; i++) {
            isBot[accounts[i]] = exempt;
        }
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0,"$BSHARBI: can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        require(_amount >= _totalSupply.div(percentDivider), "$BSHARBI: should be greater than 0.1%");
        maxHoldLimit = _amount;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        require(_amount >= _totalSupply.div(percentDivider), "$BSHARBI: should be greater than 0.1%");
        maxTxnLimit = _amount;
    }

    function setBabySharbi(address _token) external onlyOwner {
        oldBabySharbi = _token;
    }

    function setBuyFeePercent(uint256 _lwFee, uint256 _marketingFee, uint256 _bsFee)
        external
        onlyOwner
    {
        marketingFeeOnBuying = _lwFee;
        sharbiFeeOnBuying = _bsFee;
        liquidityFeeOnBuying = _marketingFee;
        require(
            _lwFee.add(_marketingFee).add(_bsFee) <= percentDivider.div(10),
            "$BSHARBI: can't be more than 15%"
        );
    }

    function setSellFeePercent(uint256 _lwFee, uint256 _marketingFee, uint256 _bsFee)
        external
        onlyOwner
    {
        marketingFeeOnSelling = _lwFee;
        sharbiFeeOnSelling = _bsFee;
        liquidityFeeOnSelling = _marketingFee;
        require(
            _lwFee.add(_marketingFee).add(_bsFee) <= percentDivider.mul(15).div(100),
            "$BSHARBI: can't be more than 15%"
        );
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function updateAddresses(address _marketingWallet, address _sharbiWallet, address _liquidityReceiverWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
        sharbiWallet = _sharbiWallet;
        liquidityReceiverWallet = _liquidityReceiverWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, "$BSHARBI: already enabled");
        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnBuying.add(liquidityFeeOnBuying).add(sharbiFeeOnBuying)).div(
            percentDivider
        );
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnSelling.add(liquidityFeeOnSelling).add(sharbiFeeOnSelling))
            .div(percentDivider);
        return fee;
    }

    function migrateBabySharbi() public {
        require(!isClaimed[msg.sender],"Already claimed");
        uint256 _amount = IERC20(oldBabySharbi).balanceOf(msg.sender);
        require(_amount > 0,"0 balance");
        _transfer(owner(), msg.sender, _amount);
        IERC20(oldBabySharbi).transferFrom(msg.sender, owner(), _amount);
        isClaimed[msg.sender] = true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "$BSHARBI: approve from the zero address");
        require(spender != address(0), "$BSHARBI: approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "$BSHARBI: transfer from the zero address");
        require(to != address(0), "$BSHARBI: transfer to the zero address");
        require(amount > 0, "$BSHARBI: Amount must be greater than zero");
        require(!isBot[from], "$BSHARBI: Bot detected");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "$BSHARBI: max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "$BSHARBI: trading is disable"
                );
            }
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                from != address(dexRouter)
            ) {
                if (dexPair == from) {
                    isBot[to] = true;
                } else if (dexPair == to) {
                    isBot[from] = true;
                }
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "$BSHARBI: max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee = totalBuyFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(amount,"$BSHARBI: insufficient balance");
            _balances[recipient] = _balances[recipient].add(tTransferAmount);

            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
            setFeeCountersOnBuying(amount);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(amount,"$BSHARBI: insufficient balance");
            _balances[recipient] = _balances[recipient].add(tTransferAmount);

            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
            setFeeCountersOnSelling(amount);
        } else {
            _balances[sender] = _balances[sender].sub(amount,"$BSHARBI: insufficient balance");
            _balances[recipient] = _balances[recipient].add(amount);

            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function setFeeCountersOnBuying(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnBuying).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnBuying).div(percentDivider);
        sharbiFeeCounter += amount.mul(sharbiFeeOnBuying).div(percentDivider);
    }

    function setFeeCountersOnSelling(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnSelling).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnSelling).div(percentDivider);
        sharbiFeeCounter += amount.mul(sharbiFeeOnSelling).div(percentDivider);
    }

    function distributeAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == address(dexPair)) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            uint256 halfLiquidity = liquidityFeeCounter.div(2);
            uint256 otherHalfLiquidity = liquidityFeeCounter.sub(halfLiquidity);

            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherHalfLiquidity
            );

            uint256 balanceBefore = address(this).balance;

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped);

            uint256 deltaBalance = address(this).balance.sub(balanceBefore);
            uint256 ethToBeAddedToLiquidity = deltaBalance
                .mul(halfLiquidity)
                .div(tokenAmountToBeSwapped);
            uint256 ethFormarketing = deltaBalance.mul(marketingFeeCounter).div(
                tokenAmountToBeSwapped
            );
            uint256 ethForSharbi = deltaBalance.sub(ethToBeAddedToLiquidity).sub(
                ethFormarketing
            );

            // add liquidity to Dex
            if (ethToBeAddedToLiquidity > 0) {
                Utils.addLiquidity(
                    address(dexRouter),
                    liquidityReceiverWallet,
                    otherHalfLiquidity,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquidity,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquidity
                );
            }

            // sending eth to marketing wallet
            if (ethFormarketing > 0) payable(marketingWallet).transfer(ethFormarketing);

            // sending eth to development wallet
            if (ethForSharbi > 0) payable(sharbiWallet).transfer(ethForSharbi);

            // Reset all fee counters
            liquidityFeeCounter = 0;
            marketingFeeCounter = 0;
            sharbiFeeCounter = 0;
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp + 300
        );
    }
}

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"addOrRemoveBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"account","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","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":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiverWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrateBabySharbi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minTokenToSwap","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":"oldBabySharbi","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setBabySharbi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lwFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_bsFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsClaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lwFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_bsFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharbiFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharbiFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharbiWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_sharbiWallet","type":"address"},{"internalType":"address","name":"_liquidityReceiverWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600b81526020017f4261627920536861726269000000000000000000000000000000000000000000815250600890805190602001906200005192919062000e5b565b506040518060400160405280600881526020017f2442534841524249000000000000000000000000000000000000000000000000815250600990805190602001906200009f92919062000e5b565b506009600a60006101000a81548160ff021916908360ff160217905550683635c9adc5dea00000600b55620000e8620186a0600b5462000d7060201b62002b6e1790919060201c565b601255620001086064600b5462000d7060201b62002b6e1790919060201c565b601355620001286064600b5462000d7060201b62002b6e1790919060201c565b6014556103e8601555603c6016556001601860016101000a81548160ff021916908315150217905550600a6019556014601a55601e601b55600a601c556014601d55601e80556000601f55600060205560006021553480156200018a57600080fd5b506200019b62000dc260201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600b54600160006200026c62000dca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fbe80249c95d20f8c87327db3721c77581999493600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732441056132d344d57326344aadd0e0c1a3945688600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c99808c486d2a4cb5c0a0402066098fbdb77a2ec601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000477919062000f75565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000505919062000f75565b6040518363ffffffff1660e01b81526004016200052492919062000fb8565b6020604051808303816000875af115801562000544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056a919062000f75565b905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200060462000dca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200083162000dca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600062000a5e62000dca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000cff62000dca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b5460405162000d60919062001000565b60405180910390a35050620011b1565b600062000dba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000df360201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e349190620010c1565b60405180910390fd5b506000838562000e4e919062001114565b9050809150509392505050565b82805462000e69906200117b565b90600052602060002090601f01602090048101928262000e8d576000855562000ed9565b82601f1062000ea857805160ff191683800117855562000ed9565b8280016001018555821562000ed9579182015b8281111562000ed857825182559160200191906001019062000ebb565b5b50905062000ee8919062000eec565b5090565b5b8082111562000f0757600081600090555060010162000eed565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f3d8262000f10565b9050919050565b62000f4f8162000f30565b811462000f5b57600080fd5b50565b60008151905062000f6f8162000f44565b92915050565b60006020828403121562000f8e5762000f8d62000f0b565b5b600062000f9e8482850162000f5e565b91505092915050565b62000fb28162000f30565b82525050565b600060408201905062000fcf600083018562000fa7565b62000fde602083018462000fa7565b9392505050565b6000819050919050565b62000ffa8162000fe5565b82525050565b600060208201905062001017600083018462000fef565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015620010595780820151818401526020810190506200103c565b8381111562001069576000848401525b50505050565b6000601f19601f8301169050919050565b60006200108d826200101d565b62001099818562001028565b9350620010ab81856020860162001039565b620010b6816200106f565b840191505092915050565b60006020820190508181036000830152620010dd818462001080565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011218262000fe5565b91506200112e8362000fe5565b925082620011415762001140620010e5565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200119457607f821691505b60208210811415620011ab57620011aa6200114c565b5b50919050565b615c1a80620011c16000396000f3fe6080604052600436106103905760003560e01c8063879dd3c5116101dc578063ce5c0cfc11610102578063ec44acf2116100a0578063f242ab411161006f578063f242ab4114610d69578063f2fde38b14610d94578063f4b3dbc314610dbd578063fe6f1b0514610dfa57610397565b8063ec44acf214610cc1578063ed42142914610cec578063f097ea1a14610d29578063f14250ee14610d5257610397565b8063de26b6dd116100dc578063de26b6dd14610c17578063e5ffda2a14610c42578063e6c84dc614610c6d578063ea5b9e8514610c9857610397565b8063ce5c0cfc14610b84578063d2e4f00f14610baf578063dd62ed3e14610bda57610397565b80639a36dfa11161017a578063b0a30f6a11610149578063b0a30f6a14610adc578063b0bc2a2d14610b07578063be19674b14610b30578063bf56b37114610b5957610397565b80639a36dfa114610a0e5780639b6a275014610a39578063a457c2d714610a62578063a9059cbb14610a9f57610397565b80638da5cb5b116101b65780638da5cb5b1461095257806391ce43ac1461097d57806395d89b41146109a657806399b102b5146109d157610397565b8063879dd3c5146108d35780638a8c523c146108fe5780638cc080251461091557610397565b806339509351116102c1578063715018a61161025f5780637d99c66d1161022e5780637d99c66d14610817578063844af78e1461084257806384ea21bc1461086d5780638756aabd146108aa57610397565b8063715018a61461077f57806375f0a8741461079657806379777b4e146107c15780637c6a9a9c146107ec57610397565b80635e8960321161029b5780635e896032146106c5578063679a3c59146106ee578063681aa3621461071757806370a082311461074257610397565b8063395093511461060e5780633bbac5791461064b5780635342acb41461068857610397565b806318160ddd1161032e5780632d129390116103085780632d12939014610566578063313ce5671461058f5780633326d7f2146105ba578063334c1439146105e557610397565b806318160ddd146104d35780631884f1e6146104fe57806323b872dd1461052957610397565b80630a2d140c1161036a5780630a2d140c1461042f5780630d0688b31461045857806310a60f0214610481578063151cd1c2146104aa57610397565b806306fdde031461039c5780630758d924146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e25565b6040516103be91906146be565b60405180910390f35b3480156103d357600080fd5b506103dc610eb7565b6040516103e9919061475f565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614802565b610edd565b604051610426919061485d565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906148a4565b610efb565b005b34801561046457600080fd5b5061047f600480360381019061047a91906148d1565b610fad565b005b34801561048d57600080fd5b506104a860048036038101906104a39190614a46565b611086565b005b3480156104b657600080fd5b506104d160048036038101906104cc9190614aa2565b6111b0565b005b3480156104df57600080fd5b506104e86112ee565b6040516104f59190614b04565b60405180910390f35b34801561050a57600080fd5b506105136112f8565b6040516105209190614b04565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190614b1f565b6112fe565b60405161055d919061485d565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190614b72565b6113d7565b005b34801561059b57600080fd5b506105a46114c7565b6040516105b19190614bce565b60405180910390f35b3480156105c657600080fd5b506105cf6114de565b6040516105dc9190614b04565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614be9565b6114e4565b005b34801561061a57600080fd5b5061063560048036038101906106309190614802565b611641565b604051610642919061485d565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d91906148d1565b6116f4565b60405161067f919061485d565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa91906148d1565b611714565b6040516106bc919061485d565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190614b72565b611734565b005b3480156106fa57600080fd5b50610715600480360381019061071091906148d1565b611824565b005b34801561072357600080fd5b5061072c611903565b6040516107399190614b04565b60405180910390f35b34801561074e57600080fd5b50610769600480360381019061076491906148d1565b611909565b6040516107769190614b04565b60405180910390f35b34801561078b57600080fd5b50610794611952565b005b3480156107a257600080fd5b506107ab611aa5565b6040516107b89190614c4b565b60405180910390f35b3480156107cd57600080fd5b506107d6611acb565b6040516107e3919061485d565b60405180910390f35b3480156107f857600080fd5b50610801611ade565b60405161080e9190614b04565b60405180910390f35b34801561082357600080fd5b5061082c611ae4565b6040516108399190614b04565b60405180910390f35b34801561084e57600080fd5b50610857611aea565b6040516108649190614b04565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f91906148d1565b611af0565b6040516108a1919061485d565b60405180910390f35b3480156108b657600080fd5b506108d160048036038101906108cc9190614c66565b611b10565b005b3480156108df57600080fd5b506108e8611c08565b6040516108f5919061485d565b60405180910390f35b34801561090a57600080fd5b50610913611c1b565b005b34801561092157600080fd5b5061093c600480360381019061093791906148d1565b611d5a565b604051610949919061485d565b60405180910390f35b34801561095e57600080fd5b50610967611d7a565b6040516109749190614c4b565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f9190614a46565b611da3565b005b3480156109b257600080fd5b506109bb611ecd565b6040516109c891906146be565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f391906148d1565b611f5f565b604051610a05919061485d565b60405180910390f35b348015610a1a57600080fd5b50610a23611f7f565b604051610a309190614b04565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b9190614c66565b611f85565b005b348015610a6e57600080fd5b50610a896004803603810190610a849190614802565b61207d565b604051610a96919061485d565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac19190614802565b61214a565b604051610ad3919061485d565b60405180910390f35b348015610ae857600080fd5b50610af1612168565b604051610afe9190614c4b565b60405180910390f35b348015610b1357600080fd5b50610b2e6004803603810190610b2991906148a4565b61218e565b005b348015610b3c57600080fd5b50610b576004803603810190610b529190614aa2565b612240565b005b348015610b6557600080fd5b50610b6e61236b565b604051610b7b9190614b04565b60405180910390f35b348015610b9057600080fd5b50610b99612371565b604051610ba69190614c4b565b60405180910390f35b348015610bbb57600080fd5b50610bc4612397565b604051610bd19190614c4b565b60405180910390f35b348015610be657600080fd5b50610c016004803603810190610bfc9190614c93565b6123bd565b604051610c0e9190614b04565b60405180910390f35b348015610c2357600080fd5b50610c2c612444565b604051610c399190614b04565b60405180910390f35b348015610c4e57600080fd5b50610c5761244a565b604051610c649190614b04565b60405180910390f35b348015610c7957600080fd5b50610c82612450565b604051610c8f9190614b04565b60405180910390f35b348015610ca457600080fd5b50610cbf6004803603810190610cba9190614b72565b612456565b005b348015610ccd57600080fd5b50610cd6612546565b604051610ce3919061485d565b60405180910390f35b348015610cf857600080fd5b50610d136004803603810190610d0e9190614c66565b612559565b604051610d209190614b04565b60405180910390f35b348015610d3557600080fd5b50610d506004803603810190610d4b9190614c66565b6125b8565b005b348015610d5e57600080fd5b50610d6761269a565b005b348015610d7557600080fd5b50610d7e612921565b604051610d8b9190614c4b565b60405180910390f35b348015610da057600080fd5b50610dbb6004803603810190610db691906148d1565b612947565b005b348015610dc957600080fd5b50610de46004803603810190610ddf9190614c66565b612b09565b604051610df19190614b04565b60405180910390f35b348015610e0657600080fd5b50610e0f612b68565b604051610e1c9190614b04565b60405180910390f35b606060088054610e3490614d02565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6090614d02565b8015610ead5780601f10610e8257610100808354040283529160200191610ead565b820191906000526020600020905b815481529060010190602001808311610e9057829003601f168201915b5050505050905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ef1610eea612bb8565b8484612bc0565b6001905092915050565b610f03612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790614d80565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b610fb5612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614d80565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61108e612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290614d80565b60405180910390fd5b60005b82518110156111ab57816007600085848151811061113f5761113e614da0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111a390614dfe565b91505061111e565b505050565b6111b8612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90614d80565b60405180910390fd5b82601d8190555080601e8190555081601c819055506112836064611275600f601554612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6112a88261129a8587612e0690919063ffffffff16565b612e0690919063ffffffff16565b11156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090614e93565b60405180910390fd5b505050565b6000600b54905090565b60125481565b600061130b848484612e64565b6113cc84611317612bb8565b6113c7856040518060600160405280602b8152602001615b8f602b9139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137d612bb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b612bc0565b600190509392505050565b6113df612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390614d80565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a60009054906101000a900460ff16905090565b60195481565b6114ec612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157090614d80565b60405180910390fd5b82600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006116ea61164e612bb8565b846116e5856002600061165f612bb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b612bc0565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61173c612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090614d80565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61182c612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614d80565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b5050565b60145481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61195a612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de90614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900460ff1681565b601a5481565b60165481565b601d5481565b60056020528060005260406000206000915054906101000a900460ff1681565b611b18612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614d80565b60405180910390fd5b611bbc601554600b54612b6e90919063ffffffff16565b811015611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590614f25565b60405180910390fd5b8060138190555050565b601860019054906101000a900460ff1681565b611c23612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790614d80565b60405180910390fd5b601860029054906101000a900460ff1615611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790614f91565b60405180910390fd5b6001601860026101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff02191690831515021790555042601781905550565b60066020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dab612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f90614d80565b60405180910390fd5b60005b8251811015611ec8578160046000858481518110611e5c57611e5b614da0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ec090614dfe565b915050611e3b565b505050565b606060098054611edc90614d02565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0890614d02565b8015611f555780601f10611f2a57610100808354040283529160200191611f55565b820191906000526020600020905b815481529060010190602001808311611f3857829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60135481565b611f8d612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201190614d80565b60405180910390fd5b612031601554600b54612b6e90919063ffffffff16565b811015612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a90614f25565b60405180910390fd5b8060148190555050565b600061214061208a612bb8565b8461213b856040518060600160405280602b8152602001615bba602b9139600260006120b4612bb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b612bc0565b6001905092915050565b600061215e612157612bb8565b8484612e64565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612196612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a90614d80565b60405180910390fd5b80601860016101000a81548160ff02191690831515021790555050565b612248612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614d80565b60405180910390fd5b82601a8190555080601b8190555081601981905550612300600a601554612b6e90919063ffffffff16565b612325826123178587612e0690919063ffffffff16565b612e0690919063ffffffff16565b1115612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90614e93565b60405180910390fd5b505050565b60175481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601e5481565b601b5481565b601c5481565b61245e612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e290614d80565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860029054906101000a900460ff1681565b6000806125ad60155461259f612590601b54612582601954601a54612e0690919063ffffffff16565b612e0690919063ffffffff16565b86612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b905080915050919050565b6125c0612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264490614d80565b60405180910390fd5b60008111612690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268790614ffd565b60405180910390fd5b8060128190555050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e90615069565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016127849190614c4b565b602060405180830381865afa1580156127a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c5919061509e565b90506000811161280a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280190615117565b60405180910390fd5b61281c612815611d7a565b3383612e64565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33612863611d7a565b846040518463ffffffff1660e01b815260040161288293929190615137565b6020604051808303816000875af11580156128a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c59190615183565b506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61294f612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d390614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4390615222565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080612b5d601554612b4f612b40601e54612b32601c54601d54612e0690919063ffffffff16565b612e0690919063ffffffff16565b86612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b905080915050919050565b60155481565b6000612bb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135d2565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c27906152b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790615346565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d7e9190614b04565b60405180910390a3505050565b600080831415612d9e5760009050612e00565b60008284612dac9190615366565b9050828482612dbb91906153ef565b14612dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df290615492565b60405180910390fd5b809150505b92915050565b6000808284612e1591906154b2565b905083811015612e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5190615554565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecb906155e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3b90615678565b60405180910390fd5b60008111612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e9061570a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300b90615776565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130b85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133d857601454811115613102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f9906157e2565b60405180910390fd5b601860029054906101000a900460ff16613202578273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156131c257508173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b613201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f89061584e565b60405180910390fd5b5b60165460175461321291906154b2565b4210801561326e5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133d7578273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613326576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506133d6565b8173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133d5576001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613489576013546134478261343985611909565b612e0690919063ffffffff16565b1115613488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347f906158ba565b60405180910390fd5b5b6134938383613635565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061353a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135525750601860019054906101000a900460ff16155b1561355c57600090505b61356884848484613a33565b50505050565b60008383111582906135b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ad91906146be565b60405180910390fd5b50600083856135c591906158da565b9050809150509392505050565b60008083118290613619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361091906146be565b60405180910390fd5b506000838561362891906153ef565b9050809150509392505050565b600061364030611909565b9050600060125482101590508080156136a75750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156136bf5750601860009054906101000a900460ff165b801561375057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561374e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15613a2d5761378230600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bc0565b600061379a6002601f54612b6e90919063ffffffff16565b905060006137b382601f546140c790919063ffffffff16565b905060006137ca82866140c790919063ffffffff16565b905060004790506137fd600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614111565b600061381282476140c790919063ffffffff16565b9050600061383b8461382d8885612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b905060006138668561385860205486612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b9050600061388f8261388185876140c790919063ffffffff16565b6140c790919063ffffffff16565b90506000831115613926576138ea600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689866142f7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188848960405161391d9392919061590e565b60405180910390a15b600082111561399957600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613997573d6000803e3d6000fd5b505b6000811115613a0c57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a0a573d6000803e3d6000fd5b505b6000601f819055506000602081905550600060218190555050505050505050505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613a8d5750805b15613c96576000613a9d83612559565b90506000613ab482856140c790919063ffffffff16565b9050613b3f846040518060400160405280601e81526020017f24425348415242493a20696e73756666696369656e742062616c616e63650000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bd481600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c749190614b04565b60405180910390a3613c86868361439b565b613c8f84614499565b50506140c1565b8273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613cf05750805b15613ef9576000613d0083612b09565b90506000613d1782856140c790919063ffffffff16565b9050613da2846040518060400160405280601e81526020017f24425348415242493a20696e73756666696369656e742062616c616e63650000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e3781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ed79190614b04565b60405180910390a3613ee9868361439b565b613ef28461455f565b50506140c0565b613f82826040518060400160405280601e81526020017f24425348415242493a20696e73756666696369656e742062616c616e63650000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061401782600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140b79190614b04565b60405180910390a35b5b50505050565b600061410983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061356e565b905092915050565b60008290506000600267ffffffffffffffff81111561413357614132614903565b5b6040519080825280602002602001820160405280156141615781602001602082028036833780820191505090505b509050308160008151811061417957614178614da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614222919061595a565b8160018151811061423657614235614da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261429f91906154b2565b6040518663ffffffff1660e01b81526004016142bf959493929190615a80565b600060405180830381600087803b1580156142d957600080fd5b505af11580156142ed573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c4261432d91906154b2565b6040518863ffffffff1660e01b815260040161434e96959493929190615ada565b60606040518083038185885af115801561436c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143919190615b3b565b5050505050505050565b6143ed81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161448d9190614b04565b60405180910390a35050565b6144c26015546144b460195484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b601f60008282546144d391906154b2565b925050819055506145036015546144f5601a5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6020600082825461451491906154b2565b92505081905550614544601554614536601b5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6021600082825461455591906154b2565b9250508190555050565b61458860155461457a601c5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b601f600082825461459991906154b2565b925050819055506145c96015546145bb601d5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b602060008282546145da91906154b2565b9250508190555061460a6015546145fc601e5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6021600082825461461b91906154b2565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561465f578082015181840152602081019050614644565b8381111561466e576000848401525b50505050565b6000601f19601f8301169050919050565b600061469082614625565b61469a8185614630565b93506146aa818560208601614641565b6146b381614674565b840191505092915050565b600060208201905081810360008301526146d88184614685565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061472561472061471b846146e0565b614700565b6146e0565b9050919050565b60006147378261470a565b9050919050565b60006147498261472c565b9050919050565b6147598161473e565b82525050565b60006020820190506147746000830184614750565b92915050565b6000604051905090565b600080fd5b600080fd5b6000614799826146e0565b9050919050565b6147a98161478e565b81146147b457600080fd5b50565b6000813590506147c6816147a0565b92915050565b6000819050919050565b6147df816147cc565b81146147ea57600080fd5b50565b6000813590506147fc816147d6565b92915050565b6000806040838503121561481957614818614784565b5b6000614827858286016147b7565b9250506020614838858286016147ed565b9150509250929050565b60008115159050919050565b61485781614842565b82525050565b6000602082019050614872600083018461484e565b92915050565b61488181614842565b811461488c57600080fd5b50565b60008135905061489e81614878565b92915050565b6000602082840312156148ba576148b9614784565b5b60006148c88482850161488f565b91505092915050565b6000602082840312156148e7576148e6614784565b5b60006148f5848285016147b7565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61493b82614674565b810181811067ffffffffffffffff8211171561495a57614959614903565b5b80604052505050565b600061496d61477a565b90506149798282614932565b919050565b600067ffffffffffffffff82111561499957614998614903565b5b602082029050602081019050919050565b600080fd5b60006149c26149bd8461497e565b614963565b905080838252602082019050602084028301858111156149e5576149e46149aa565b5b835b81811015614a0e57806149fa88826147b7565b8452602084019350506020810190506149e7565b5050509392505050565b600082601f830112614a2d57614a2c6148fe565b5b8135614a3d8482602086016149af565b91505092915050565b60008060408385031215614a5d57614a5c614784565b5b600083013567ffffffffffffffff811115614a7b57614a7a614789565b5b614a8785828601614a18565b9250506020614a988582860161488f565b9150509250929050565b600080600060608486031215614abb57614aba614784565b5b6000614ac9868287016147ed565b9350506020614ada868287016147ed565b9250506040614aeb868287016147ed565b9150509250925092565b614afe816147cc565b82525050565b6000602082019050614b196000830184614af5565b92915050565b600080600060608486031215614b3857614b37614784565b5b6000614b46868287016147b7565b9350506020614b57868287016147b7565b9250506040614b68868287016147ed565b9150509250925092565b60008060408385031215614b8957614b88614784565b5b6000614b97858286016147b7565b9250506020614ba88582860161488f565b9150509250929050565b600060ff82169050919050565b614bc881614bb2565b82525050565b6000602082019050614be36000830184614bbf565b92915050565b600080600060608486031215614c0257614c01614784565b5b6000614c10868287016147b7565b9350506020614c21868287016147b7565b9250506040614c32868287016147b7565b9150509250925092565b614c458161478e565b82525050565b6000602082019050614c606000830184614c3c565b92915050565b600060208284031215614c7c57614c7b614784565b5b6000614c8a848285016147ed565b91505092915050565b60008060408385031215614caa57614ca9614784565b5b6000614cb8858286016147b7565b9250506020614cc9858286016147b7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d1a57607f821691505b60208210811415614d2e57614d2d614cd3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614d6a602083614630565b9150614d7582614d34565b602082019050919050565b60006020820190508181036000830152614d9981614d5d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e09826147cc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e3c57614e3b614dcf565b5b600182019050919050565b7f24425348415242493a2063616e2774206265206d6f7265207468616e20313525600082015250565b6000614e7d602083614630565b9150614e8882614e47565b602082019050919050565b60006020820190508181036000830152614eac81614e70565b9050919050565b7f24425348415242493a2073686f756c642062652067726561746572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b6000614f0f602583614630565b9150614f1a82614eb3565b604082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b7f24425348415242493a20616c726561647920656e61626c656400000000000000600082015250565b6000614f7b601983614630565b9150614f8682614f45565b602082019050919050565b60006020820190508181036000830152614faa81614f6e565b9050919050565b7f24425348415242493a2063616e27742062652030000000000000000000000000600082015250565b6000614fe7601483614630565b9150614ff282614fb1565b602082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000615053600f83614630565b915061505e8261501d565b602082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b600081519050615098816147d6565b92915050565b6000602082840312156150b4576150b3614784565b5b60006150c284828501615089565b91505092915050565b7f302062616c616e63650000000000000000000000000000000000000000000000600082015250565b6000615101600983614630565b915061510c826150cb565b602082019050919050565b60006020820190508181036000830152615130816150f4565b9050919050565b600060608201905061514c6000830186614c3c565b6151596020830185614c3c565b6151666040830184614af5565b949350505050565b60008151905061517d81614878565b92915050565b60006020828403121561519957615198614784565b5b60006151a78482850161516e565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061520c602683614630565b9150615217826151b0565b604082019050919050565b6000602082019050818103600083015261523b816151ff565b9050919050565b7f24425348415242493a20617070726f76652066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061529e602783614630565b91506152a982615242565b604082019050919050565b600060208201905081810360008301526152cd81615291565b9050919050565b7f24425348415242493a20617070726f766520746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615330602583614630565b915061533b826152d4565b604082019050919050565b6000602082019050818103600083015261535f81615323565b9050919050565b6000615371826147cc565b915061537c836147cc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b5576153b4614dcf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006153fa826147cc565b9150615405836147cc565b925082615415576154146153c0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547c602183614630565b915061548782615420565b604082019050919050565b600060208201905081810360008301526154ab8161546f565b9050919050565b60006154bd826147cc565b91506154c8836147cc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154fd576154fc614dcf565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061553e601b83614630565b915061554982615508565b602082019050919050565b6000602082019050818103600083015261556d81615531565b9050919050565b7f24425348415242493a207472616e736665722066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006155d0602883614630565b91506155db82615574565b604082019050919050565b600060208201905081810360008301526155ff816155c3565b9050919050565b7f24425348415242493a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615662602683614630565b915061566d82615606565b604082019050919050565b6000602082019050818103600083015261569181615655565b9050919050565b7f24425348415242493a20416d6f756e74206d757374206265206772656174657260008201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b60006156f4602a83614630565b91506156ff82615698565b604082019050919050565b60006020820190508181036000830152615723816156e7565b9050919050565b7f24425348415242493a20426f7420646574656374656400000000000000000000600082015250565b6000615760601683614630565b915061576b8261572a565b602082019050919050565b6000602082019050818103600083015261578f81615753565b9050919050565b7f24425348415242493a206d61782074786e206c696d6974206578636565647300600082015250565b60006157cc601f83614630565b91506157d782615796565b602082019050919050565b600060208201905081810360008301526157fb816157bf565b9050919050565b7f24425348415242493a2074726164696e672069732064697361626c6500000000600082015250565b6000615838601c83614630565b915061584382615802565b602082019050919050565b600060208201905081810360008301526158678161582b565b9050919050565b7f24425348415242493a206d617820686f6c64206c696d69742065786365656473600082015250565b60006158a4602083614630565b91506158af8261586e565b602082019050919050565b600060208201905081810360008301526158d381615897565b9050919050565b60006158e5826147cc565b91506158f0836147cc565b92508282101561590357615902614dcf565b5b828203905092915050565b60006060820190506159236000830186614af5565b6159306020830185614af5565b61593d6040830184614af5565b949350505050565b600081519050615954816147a0565b92915050565b6000602082840312156159705761596f614784565b5b600061597e84828501615945565b91505092915050565b6000819050919050565b60006159ac6159a76159a284615987565b614700565b6147cc565b9050919050565b6159bc81615991565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159f78161478e565b82525050565b6000615a0983836159ee565b60208301905092915050565b6000602082019050919050565b6000615a2d826159c2565b615a3781856159cd565b9350615a42836159de565b8060005b83811015615a73578151615a5a88826159fd565b9750615a6583615a15565b925050600181019050615a46565b5085935050505092915050565b600060a082019050615a956000830188614af5565b615aa260208301876159b3565b8181036040830152615ab48186615a22565b9050615ac36060830185614c3c565b615ad06080830184614af5565b9695505050505050565b600060c082019050615aef6000830189614c3c565b615afc6020830188614af5565b615b0960408301876159b3565b615b1660608301866159b3565b615b236080830185614c3c565b615b3060a0830184614af5565b979650505050505050565b600080600060608486031215615b5457615b53614784565b5b6000615b6286828701615089565b9350506020615b7386828701615089565b9250506040615b8486828701615089565b915050925092509256fe24425348415242493a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636524425348415242493a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220d653eda006c08e0940deedb3e0d1987c48610993031c86ee67543f04b9a5ace864736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103905760003560e01c8063879dd3c5116101dc578063ce5c0cfc11610102578063ec44acf2116100a0578063f242ab411161006f578063f242ab4114610d69578063f2fde38b14610d94578063f4b3dbc314610dbd578063fe6f1b0514610dfa57610397565b8063ec44acf214610cc1578063ed42142914610cec578063f097ea1a14610d29578063f14250ee14610d5257610397565b8063de26b6dd116100dc578063de26b6dd14610c17578063e5ffda2a14610c42578063e6c84dc614610c6d578063ea5b9e8514610c9857610397565b8063ce5c0cfc14610b84578063d2e4f00f14610baf578063dd62ed3e14610bda57610397565b80639a36dfa11161017a578063b0a30f6a11610149578063b0a30f6a14610adc578063b0bc2a2d14610b07578063be19674b14610b30578063bf56b37114610b5957610397565b80639a36dfa114610a0e5780639b6a275014610a39578063a457c2d714610a62578063a9059cbb14610a9f57610397565b80638da5cb5b116101b65780638da5cb5b1461095257806391ce43ac1461097d57806395d89b41146109a657806399b102b5146109d157610397565b8063879dd3c5146108d35780638a8c523c146108fe5780638cc080251461091557610397565b806339509351116102c1578063715018a61161025f5780637d99c66d1161022e5780637d99c66d14610817578063844af78e1461084257806384ea21bc1461086d5780638756aabd146108aa57610397565b8063715018a61461077f57806375f0a8741461079657806379777b4e146107c15780637c6a9a9c146107ec57610397565b80635e8960321161029b5780635e896032146106c5578063679a3c59146106ee578063681aa3621461071757806370a082311461074257610397565b8063395093511461060e5780633bbac5791461064b5780635342acb41461068857610397565b806318160ddd1161032e5780632d129390116103085780632d12939014610566578063313ce5671461058f5780633326d7f2146105ba578063334c1439146105e557610397565b806318160ddd146104d35780631884f1e6146104fe57806323b872dd1461052957610397565b80630a2d140c1161036a5780630a2d140c1461042f5780630d0688b31461045857806310a60f0214610481578063151cd1c2146104aa57610397565b806306fdde031461039c5780630758d924146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e25565b6040516103be91906146be565b60405180910390f35b3480156103d357600080fd5b506103dc610eb7565b6040516103e9919061475f565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614802565b610edd565b604051610426919061485d565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906148a4565b610efb565b005b34801561046457600080fd5b5061047f600480360381019061047a91906148d1565b610fad565b005b34801561048d57600080fd5b506104a860048036038101906104a39190614a46565b611086565b005b3480156104b657600080fd5b506104d160048036038101906104cc9190614aa2565b6111b0565b005b3480156104df57600080fd5b506104e86112ee565b6040516104f59190614b04565b60405180910390f35b34801561050a57600080fd5b506105136112f8565b6040516105209190614b04565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190614b1f565b6112fe565b60405161055d919061485d565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190614b72565b6113d7565b005b34801561059b57600080fd5b506105a46114c7565b6040516105b19190614bce565b60405180910390f35b3480156105c657600080fd5b506105cf6114de565b6040516105dc9190614b04565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614be9565b6114e4565b005b34801561061a57600080fd5b5061063560048036038101906106309190614802565b611641565b604051610642919061485d565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d91906148d1565b6116f4565b60405161067f919061485d565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa91906148d1565b611714565b6040516106bc919061485d565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190614b72565b611734565b005b3480156106fa57600080fd5b50610715600480360381019061071091906148d1565b611824565b005b34801561072357600080fd5b5061072c611903565b6040516107399190614b04565b60405180910390f35b34801561074e57600080fd5b50610769600480360381019061076491906148d1565b611909565b6040516107769190614b04565b60405180910390f35b34801561078b57600080fd5b50610794611952565b005b3480156107a257600080fd5b506107ab611aa5565b6040516107b89190614c4b565b60405180910390f35b3480156107cd57600080fd5b506107d6611acb565b6040516107e3919061485d565b60405180910390f35b3480156107f857600080fd5b50610801611ade565b60405161080e9190614b04565b60405180910390f35b34801561082357600080fd5b5061082c611ae4565b6040516108399190614b04565b60405180910390f35b34801561084e57600080fd5b50610857611aea565b6040516108649190614b04565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f91906148d1565b611af0565b6040516108a1919061485d565b60405180910390f35b3480156108b657600080fd5b506108d160048036038101906108cc9190614c66565b611b10565b005b3480156108df57600080fd5b506108e8611c08565b6040516108f5919061485d565b60405180910390f35b34801561090a57600080fd5b50610913611c1b565b005b34801561092157600080fd5b5061093c600480360381019061093791906148d1565b611d5a565b604051610949919061485d565b60405180910390f35b34801561095e57600080fd5b50610967611d7a565b6040516109749190614c4b565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f9190614a46565b611da3565b005b3480156109b257600080fd5b506109bb611ecd565b6040516109c891906146be565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f391906148d1565b611f5f565b604051610a05919061485d565b60405180910390f35b348015610a1a57600080fd5b50610a23611f7f565b604051610a309190614b04565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b9190614c66565b611f85565b005b348015610a6e57600080fd5b50610a896004803603810190610a849190614802565b61207d565b604051610a96919061485d565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac19190614802565b61214a565b604051610ad3919061485d565b60405180910390f35b348015610ae857600080fd5b50610af1612168565b604051610afe9190614c4b565b60405180910390f35b348015610b1357600080fd5b50610b2e6004803603810190610b2991906148a4565b61218e565b005b348015610b3c57600080fd5b50610b576004803603810190610b529190614aa2565b612240565b005b348015610b6557600080fd5b50610b6e61236b565b604051610b7b9190614b04565b60405180910390f35b348015610b9057600080fd5b50610b99612371565b604051610ba69190614c4b565b60405180910390f35b348015610bbb57600080fd5b50610bc4612397565b604051610bd19190614c4b565b60405180910390f35b348015610be657600080fd5b50610c016004803603810190610bfc9190614c93565b6123bd565b604051610c0e9190614b04565b60405180910390f35b348015610c2357600080fd5b50610c2c612444565b604051610c399190614b04565b60405180910390f35b348015610c4e57600080fd5b50610c5761244a565b604051610c649190614b04565b60405180910390f35b348015610c7957600080fd5b50610c82612450565b604051610c8f9190614b04565b60405180910390f35b348015610ca457600080fd5b50610cbf6004803603810190610cba9190614b72565b612456565b005b348015610ccd57600080fd5b50610cd6612546565b604051610ce3919061485d565b60405180910390f35b348015610cf857600080fd5b50610d136004803603810190610d0e9190614c66565b612559565b604051610d209190614b04565b60405180910390f35b348015610d3557600080fd5b50610d506004803603810190610d4b9190614c66565b6125b8565b005b348015610d5e57600080fd5b50610d6761269a565b005b348015610d7557600080fd5b50610d7e612921565b604051610d8b9190614c4b565b60405180910390f35b348015610da057600080fd5b50610dbb6004803603810190610db691906148d1565b612947565b005b348015610dc957600080fd5b50610de46004803603810190610ddf9190614c66565b612b09565b604051610df19190614b04565b60405180910390f35b348015610e0657600080fd5b50610e0f612b68565b604051610e1c9190614b04565b60405180910390f35b606060088054610e3490614d02565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6090614d02565b8015610ead5780601f10610e8257610100808354040283529160200191610ead565b820191906000526020600020905b815481529060010190602001808311610e9057829003601f168201915b5050505050905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ef1610eea612bb8565b8484612bc0565b6001905092915050565b610f03612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790614d80565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b610fb5612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614d80565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61108e612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290614d80565b60405180910390fd5b60005b82518110156111ab57816007600085848151811061113f5761113e614da0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111a390614dfe565b91505061111e565b505050565b6111b8612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90614d80565b60405180910390fd5b82601d8190555080601e8190555081601c819055506112836064611275600f601554612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6112a88261129a8587612e0690919063ffffffff16565b612e0690919063ffffffff16565b11156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090614e93565b60405180910390fd5b505050565b6000600b54905090565b60125481565b600061130b848484612e64565b6113cc84611317612bb8565b6113c7856040518060600160405280602b8152602001615b8f602b9139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137d612bb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b612bc0565b600190509392505050565b6113df612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390614d80565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a60009054906101000a900460ff16905090565b60195481565b6114ec612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157090614d80565b60405180910390fd5b82600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006116ea61164e612bb8565b846116e5856002600061165f612bb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b612bc0565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61173c612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090614d80565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61182c612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614d80565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b5050565b60145481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61195a612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de90614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900460ff1681565b601a5481565b60165481565b601d5481565b60056020528060005260406000206000915054906101000a900460ff1681565b611b18612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614d80565b60405180910390fd5b611bbc601554600b54612b6e90919063ffffffff16565b811015611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590614f25565b60405180910390fd5b8060138190555050565b601860019054906101000a900460ff1681565b611c23612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790614d80565b60405180910390fd5b601860029054906101000a900460ff1615611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790614f91565b60405180910390fd5b6001601860026101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff02191690831515021790555042601781905550565b60066020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dab612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f90614d80565b60405180910390fd5b60005b8251811015611ec8578160046000858481518110611e5c57611e5b614da0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ec090614dfe565b915050611e3b565b505050565b606060098054611edc90614d02565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0890614d02565b8015611f555780601f10611f2a57610100808354040283529160200191611f55565b820191906000526020600020905b815481529060010190602001808311611f3857829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60135481565b611f8d612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201190614d80565b60405180910390fd5b612031601554600b54612b6e90919063ffffffff16565b811015612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a90614f25565b60405180910390fd5b8060148190555050565b600061214061208a612bb8565b8461213b856040518060600160405280602b8152602001615bba602b9139600260006120b4612bb8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b612bc0565b6001905092915050565b600061215e612157612bb8565b8484612e64565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612196612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a90614d80565b60405180910390fd5b80601860016101000a81548160ff02191690831515021790555050565b612248612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614d80565b60405180910390fd5b82601a8190555080601b8190555081601981905550612300600a601554612b6e90919063ffffffff16565b612325826123178587612e0690919063ffffffff16565b612e0690919063ffffffff16565b1115612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90614e93565b60405180910390fd5b505050565b60175481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601e5481565b601b5481565b601c5481565b61245e612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e290614d80565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860029054906101000a900460ff1681565b6000806125ad60155461259f612590601b54612582601954601a54612e0690919063ffffffff16565b612e0690919063ffffffff16565b86612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b905080915050919050565b6125c0612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264490614d80565b60405180910390fd5b60008111612690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268790614ffd565b60405180910390fd5b8060128190555050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e90615069565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016127849190614c4b565b602060405180830381865afa1580156127a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c5919061509e565b90506000811161280a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280190615117565b60405180910390fd5b61281c612815611d7a565b3383612e64565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33612863611d7a565b846040518463ffffffff1660e01b815260040161288293929190615137565b6020604051808303816000875af11580156128a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c59190615183565b506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61294f612bb8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d390614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4390615222565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080612b5d601554612b4f612b40601e54612b32601c54601d54612e0690919063ffffffff16565b612e0690919063ffffffff16565b86612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b905080915050919050565b60155481565b6000612bb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135d2565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c27906152b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790615346565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d7e9190614b04565b60405180910390a3505050565b600080831415612d9e5760009050612e00565b60008284612dac9190615366565b9050828482612dbb91906153ef565b14612dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df290615492565b60405180910390fd5b809150505b92915050565b6000808284612e1591906154b2565b905083811015612e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5190615554565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecb906155e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3b90615678565b60405180910390fd5b60008111612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e9061570a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300b90615776565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130b85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133d857601454811115613102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f9906157e2565b60405180910390fd5b601860029054906101000a900460ff16613202578273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156131c257508173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b613201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f89061584e565b60405180910390fd5b5b60165460175461321291906154b2565b4210801561326e5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133d7578273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613326576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506133d6565b8173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133d5576001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613489576013546134478261343985611909565b612e0690919063ffffffff16565b1115613488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347f906158ba565b60405180910390fd5b5b6134938383613635565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061353a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135525750601860019054906101000a900460ff16155b1561355c57600090505b61356884848484613a33565b50505050565b60008383111582906135b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ad91906146be565b60405180910390fd5b50600083856135c591906158da565b9050809150509392505050565b60008083118290613619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361091906146be565b60405180910390fd5b506000838561362891906153ef565b9050809150509392505050565b600061364030611909565b9050600060125482101590508080156136a75750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156136bf5750601860009054906101000a900460ff165b801561375057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561374e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15613a2d5761378230600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bc0565b600061379a6002601f54612b6e90919063ffffffff16565b905060006137b382601f546140c790919063ffffffff16565b905060006137ca82866140c790919063ffffffff16565b905060004790506137fd600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614111565b600061381282476140c790919063ffffffff16565b9050600061383b8461382d8885612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b905060006138668561385860205486612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b9050600061388f8261388185876140c790919063ffffffff16565b6140c790919063ffffffff16565b90506000831115613926576138ea600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689866142f7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188848960405161391d9392919061590e565b60405180910390a15b600082111561399957600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613997573d6000803e3d6000fd5b505b6000811115613a0c57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a0a573d6000803e3d6000fd5b505b6000601f819055506000602081905550600060218190555050505050505050505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613a8d5750805b15613c96576000613a9d83612559565b90506000613ab482856140c790919063ffffffff16565b9050613b3f846040518060400160405280601e81526020017f24425348415242493a20696e73756666696369656e742062616c616e63650000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bd481600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c749190614b04565b60405180910390a3613c86868361439b565b613c8f84614499565b50506140c1565b8273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613cf05750805b15613ef9576000613d0083612b09565b90506000613d1782856140c790919063ffffffff16565b9050613da2846040518060400160405280601e81526020017f24425348415242493a20696e73756666696369656e742062616c616e63650000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e3781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ed79190614b04565b60405180910390a3613ee9868361439b565b613ef28461455f565b50506140c0565b613f82826040518060400160405280601e81526020017f24425348415242493a20696e73756666696369656e742062616c616e63650000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061401782600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140b79190614b04565b60405180910390a35b5b50505050565b600061410983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061356e565b905092915050565b60008290506000600267ffffffffffffffff81111561413357614132614903565b5b6040519080825280602002602001820160405280156141615781602001602082028036833780820191505090505b509050308160008151811061417957614178614da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614222919061595a565b8160018151811061423657614235614da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261429f91906154b2565b6040518663ffffffff1660e01b81526004016142bf959493929190615a80565b600060405180830381600087803b1580156142d957600080fd5b505af11580156142ed573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c4261432d91906154b2565b6040518863ffffffff1660e01b815260040161434e96959493929190615ada565b60606040518083038185885af115801561436c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143919190615b3b565b5050505050505050565b6143ed81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161448d9190614b04565b60405180910390a35050565b6144c26015546144b460195484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b601f60008282546144d391906154b2565b925050819055506145036015546144f5601a5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6020600082825461451491906154b2565b92505081905550614544601554614536601b5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6021600082825461455591906154b2565b9250508190555050565b61458860155461457a601c5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b601f600082825461459991906154b2565b925050819055506145c96015546145bb601d5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b602060008282546145da91906154b2565b9250508190555061460a6015546145fc601e5484612d8b90919063ffffffff16565b612b6e90919063ffffffff16565b6021600082825461461b91906154b2565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561465f578082015181840152602081019050614644565b8381111561466e576000848401525b50505050565b6000601f19601f8301169050919050565b600061469082614625565b61469a8185614630565b93506146aa818560208601614641565b6146b381614674565b840191505092915050565b600060208201905081810360008301526146d88184614685565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061472561472061471b846146e0565b614700565b6146e0565b9050919050565b60006147378261470a565b9050919050565b60006147498261472c565b9050919050565b6147598161473e565b82525050565b60006020820190506147746000830184614750565b92915050565b6000604051905090565b600080fd5b600080fd5b6000614799826146e0565b9050919050565b6147a98161478e565b81146147b457600080fd5b50565b6000813590506147c6816147a0565b92915050565b6000819050919050565b6147df816147cc565b81146147ea57600080fd5b50565b6000813590506147fc816147d6565b92915050565b6000806040838503121561481957614818614784565b5b6000614827858286016147b7565b9250506020614838858286016147ed565b9150509250929050565b60008115159050919050565b61485781614842565b82525050565b6000602082019050614872600083018461484e565b92915050565b61488181614842565b811461488c57600080fd5b50565b60008135905061489e81614878565b92915050565b6000602082840312156148ba576148b9614784565b5b60006148c88482850161488f565b91505092915050565b6000602082840312156148e7576148e6614784565b5b60006148f5848285016147b7565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61493b82614674565b810181811067ffffffffffffffff8211171561495a57614959614903565b5b80604052505050565b600061496d61477a565b90506149798282614932565b919050565b600067ffffffffffffffff82111561499957614998614903565b5b602082029050602081019050919050565b600080fd5b60006149c26149bd8461497e565b614963565b905080838252602082019050602084028301858111156149e5576149e46149aa565b5b835b81811015614a0e57806149fa88826147b7565b8452602084019350506020810190506149e7565b5050509392505050565b600082601f830112614a2d57614a2c6148fe565b5b8135614a3d8482602086016149af565b91505092915050565b60008060408385031215614a5d57614a5c614784565b5b600083013567ffffffffffffffff811115614a7b57614a7a614789565b5b614a8785828601614a18565b9250506020614a988582860161488f565b9150509250929050565b600080600060608486031215614abb57614aba614784565b5b6000614ac9868287016147ed565b9350506020614ada868287016147ed565b9250506040614aeb868287016147ed565b9150509250925092565b614afe816147cc565b82525050565b6000602082019050614b196000830184614af5565b92915050565b600080600060608486031215614b3857614b37614784565b5b6000614b46868287016147b7565b9350506020614b57868287016147b7565b9250506040614b68868287016147ed565b9150509250925092565b60008060408385031215614b8957614b88614784565b5b6000614b97858286016147b7565b9250506020614ba88582860161488f565b9150509250929050565b600060ff82169050919050565b614bc881614bb2565b82525050565b6000602082019050614be36000830184614bbf565b92915050565b600080600060608486031215614c0257614c01614784565b5b6000614c10868287016147b7565b9350506020614c21868287016147b7565b9250506040614c32868287016147b7565b9150509250925092565b614c458161478e565b82525050565b6000602082019050614c606000830184614c3c565b92915050565b600060208284031215614c7c57614c7b614784565b5b6000614c8a848285016147ed565b91505092915050565b60008060408385031215614caa57614ca9614784565b5b6000614cb8858286016147b7565b9250506020614cc9858286016147b7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d1a57607f821691505b60208210811415614d2e57614d2d614cd3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614d6a602083614630565b9150614d7582614d34565b602082019050919050565b60006020820190508181036000830152614d9981614d5d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e09826147cc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e3c57614e3b614dcf565b5b600182019050919050565b7f24425348415242493a2063616e2774206265206d6f7265207468616e20313525600082015250565b6000614e7d602083614630565b9150614e8882614e47565b602082019050919050565b60006020820190508181036000830152614eac81614e70565b9050919050565b7f24425348415242493a2073686f756c642062652067726561746572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b6000614f0f602583614630565b9150614f1a82614eb3565b604082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b7f24425348415242493a20616c726561647920656e61626c656400000000000000600082015250565b6000614f7b601983614630565b9150614f8682614f45565b602082019050919050565b60006020820190508181036000830152614faa81614f6e565b9050919050565b7f24425348415242493a2063616e27742062652030000000000000000000000000600082015250565b6000614fe7601483614630565b9150614ff282614fb1565b602082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000615053600f83614630565b915061505e8261501d565b602082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b600081519050615098816147d6565b92915050565b6000602082840312156150b4576150b3614784565b5b60006150c284828501615089565b91505092915050565b7f302062616c616e63650000000000000000000000000000000000000000000000600082015250565b6000615101600983614630565b915061510c826150cb565b602082019050919050565b60006020820190508181036000830152615130816150f4565b9050919050565b600060608201905061514c6000830186614c3c565b6151596020830185614c3c565b6151666040830184614af5565b949350505050565b60008151905061517d81614878565b92915050565b60006020828403121561519957615198614784565b5b60006151a78482850161516e565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061520c602683614630565b9150615217826151b0565b604082019050919050565b6000602082019050818103600083015261523b816151ff565b9050919050565b7f24425348415242493a20617070726f76652066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061529e602783614630565b91506152a982615242565b604082019050919050565b600060208201905081810360008301526152cd81615291565b9050919050565b7f24425348415242493a20617070726f766520746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615330602583614630565b915061533b826152d4565b604082019050919050565b6000602082019050818103600083015261535f81615323565b9050919050565b6000615371826147cc565b915061537c836147cc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b5576153b4614dcf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006153fa826147cc565b9150615405836147cc565b925082615415576154146153c0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547c602183614630565b915061548782615420565b604082019050919050565b600060208201905081810360008301526154ab8161546f565b9050919050565b60006154bd826147cc565b91506154c8836147cc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154fd576154fc614dcf565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061553e601b83614630565b915061554982615508565b602082019050919050565b6000602082019050818103600083015261556d81615531565b9050919050565b7f24425348415242493a207472616e736665722066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006155d0602883614630565b91506155db82615574565b604082019050919050565b600060208201905081810360008301526155ff816155c3565b9050919050565b7f24425348415242493a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615662602683614630565b915061566d82615606565b604082019050919050565b6000602082019050818103600083015261569181615655565b9050919050565b7f24425348415242493a20416d6f756e74206d757374206265206772656174657260008201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b60006156f4602a83614630565b91506156ff82615698565b604082019050919050565b60006020820190508181036000830152615723816156e7565b9050919050565b7f24425348415242493a20426f7420646574656374656400000000000000000000600082015250565b6000615760601683614630565b915061576b8261572a565b602082019050919050565b6000602082019050818103600083015261578f81615753565b9050919050565b7f24425348415242493a206d61782074786e206c696d6974206578636565647300600082015250565b60006157cc601f83614630565b91506157d782615796565b602082019050919050565b600060208201905081810360008301526157fb816157bf565b9050919050565b7f24425348415242493a2074726164696e672069732064697361626c6500000000600082015250565b6000615838601c83614630565b915061584382615802565b602082019050919050565b600060208201905081810360008301526158678161582b565b9050919050565b7f24425348415242493a206d617820686f6c64206c696d69742065786365656473600082015250565b60006158a4602083614630565b91506158af8261586e565b602082019050919050565b600060208201905081810360008301526158d381615897565b9050919050565b60006158e5826147cc565b91506158f0836147cc565b92508282101561590357615902614dcf565b5b828203905092915050565b60006060820190506159236000830186614af5565b6159306020830185614af5565b61593d6040830184614af5565b949350505050565b600081519050615954816147a0565b92915050565b6000602082840312156159705761596f614784565b5b600061597e84828501615945565b91505092915050565b6000819050919050565b60006159ac6159a76159a284615987565b614700565b6147cc565b9050919050565b6159bc81615991565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159f78161478e565b82525050565b6000615a0983836159ee565b60208301905092915050565b6000602082019050919050565b6000615a2d826159c2565b615a3781856159cd565b9350615a42836159de565b8060005b83811015615a73578151615a5a88826159fd565b9750615a6583615a15565b925050600181019050615a46565b5085935050505092915050565b600060a082019050615a956000830188614af5565b615aa260208301876159b3565b8181036040830152615ab48186615a22565b9050615ac36060830185614c3c565b615ad06080830184614af5565b9695505050505050565b600060c082019050615aef6000830189614c3c565b615afc6020830188614af5565b615b0960408301876159b3565b615b1660608301866159b3565b615b236080830185614c3c565b615b3060a0830184614af5565b979650505050505050565b600080600060608486031215615b5457615b53614784565b5b6000615b6286828701615089565b9350506020615b7386828701615089565b9250506040615b8486828701615089565b915050925092509256fe24425348415242493a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636524425348415242493a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220d653eda006c08e0940deedb3e0d1987c48610993031c86ee67543f04b9a5ace864736f6c634300080a0033

Deployed Bytecode Sourcemap

3229:18396:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7608:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4009:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8519:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12420:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11462:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10639:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11988:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7885:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4225:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8720:449;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10314:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7794:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4872:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12787:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9177:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3678:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3452:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10493:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12650:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4431:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7993:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:157;;;;;;;;;;;;;:::i;:::-;;4072:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4648:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4956:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4568:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5221:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3567:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11036:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4744:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13075:245;;;;;;;;;;;;;:::i;:::-;;3630:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2562:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10064:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7699:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3508:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4333:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11250:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9485:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8120:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4143:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12543:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11569:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4614:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4188:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4109:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8327:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5314:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5048:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5136:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9899:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4801:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13328:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10868:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13854:383;;;;;;;;;;;;;:::i;:::-;;4043:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2941:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13587:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4525:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7608:83;7645:13;7678:5;7671:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7608:83;:::o;4009:27::-;;;;;;;;;;;;;:::o;8519:193::-;8621:4;8643:39;8652:12;:10;:12::i;:::-;8666:7;8675:6;8643:8;:39::i;:::-;8700:4;8693:11;;8519:193;;;;:::o;12420:115::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12521:6:::1;12492:26;;:35;;;;;;;;;;;;;;;;;;12420:115:::0;:::o;11462:99::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11547:6:::1;11531:13;;:22;;;;;;;;;;;;;;;;;;11462:99:::0;:::o;10639:221::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10762:9:::1;10757:96;10777:8;:15;10773:1;:19;10757:96;;;10835:6;10814:5;:18;10820:8;10829:1;10820:11;;;;;;;;:::i;:::-;;;;;;;;10814:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10794:3;;;;;:::i;:::-;;;;10757:96;;;;10639:221:::0;;:::o;11988:424::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12147:6:::1;12123:21;:30;;;;12185:6;12164:18;:27;;;;12226:13;12202:21;:37;;;;12313:31;12340:3;12313:22;12332:2;12313:14;;:18;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;12272:37;12302:6;12272:25;12283:13;12272:6;:10;;:25;;;;:::i;:::-;:29;;:37;;;;:::i;:::-;:72;;12250:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;11988:424:::0;;;:::o;7885:100::-;7938:7;7965:12;;7958:19;;7885:100;:::o;4225:53::-;;;;:::o;8720:449::-;8852:4;8869:36;8879:6;8887:9;8898:6;8869:9;:36::i;:::-;8916:223;8939:6;8960:12;:10;:12::i;:::-;8987:141;9043:6;8987:141;;;;;;;;;;;;;;;;;:11;:19;8999:6;8987:19;;;;;;;;;;;;;;;:33;9007:12;:10;:12::i;:::-;8987:33;;;;;;;;;;;;;;;;:37;;:141;;;;;:::i;:::-;8916:8;:223::i;:::-;9157:4;9150:11;;8720:449;;;;;:::o;10314:171::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10472:5:::1;10436:24;:33;10461:7;10436:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;10314:171:::0;;:::o;7794:83::-;7835:5;7860:9;;;;;;;;;;;7853:16;;7794:83;:::o;4872:40::-;;;;:::o;12787:280::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12943:16:::1;12925:15;;:34;;;;;;;;;;;;;;;;;;12985:13;12970:12;;:28;;;;;;;;;;;;;;;;;;13035:24;13009:23;;:50;;;;;;;;;;;;;;;;;;12787:280:::0;;;:::o;9177:300::-;9292:4;9314:133;9337:12;:10;:12::i;:::-;9364:7;9386:50;9425:10;9386:11;:25;9398:12;:10;:12::i;:::-;9386:25;;;;;;;;;;;;;;;:34;9412:7;9386:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9314:8;:133::i;:::-;9465:4;9458:11;;9177:300;;;;:::o;3678:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3452:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10493:138::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10618:5:::1;10597:9;:18;10607:7;10597:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10493:138:::0;;:::o;12650:129::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12729:9:::1;12721:27;;:50;12749:21;12721:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12650:129:::0;:::o;4431:50::-;;;;:::o;7993:119::-;8059:7;8086:9;:18;8096:7;8086:18;;;;;;;;;;;;;;;;8079:25;;7993:119;;;:::o;2776:157::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2883:1:::1;2846:40;;2867:6;::::0;::::1;;;;;;;;2846:40;;;;;;;;;;;;2922:1;2897:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2776:157::o:0;4072:30::-;;;;;;;;;;;;;:::o;4648:38::-;;;;;;;;;;;;;:::o;4956:40::-;;;;:::o;4568:39::-;;;;:::o;5221:41::-;;;;:::o;3567:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;11036:206::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11127:32:::1;11144:14;;11127:12;;:16;;:32;;;;:::i;:::-;11116:7;:43;;11108:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;11227:7;11212:12;:22;;;;11036:206:::0;:::o;4744:29::-;;;;;;;;;;;;;:::o;13075:245::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13139:7:::1;;;;;;;;;;;13138:8;13130:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13197:4;13187:7;;:14;;;;;;;;;;;;;;;;;;13225:4;13212:10;;:17;;;;;;;;;;;;;;;;;;13269:4;13240:26;;:33;;;;;;;;;;;;;;;;;;13297:15;13284:10;:28;;;;13075:245::o:0;3630:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2562:79::-;2600:7;2627:6;;;;;;;;;;;2620:13;;2562:79;:::o;10064:242::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10196:9:::1;10191:108;10211:7;:14;10207:1;:18;10191:108;;;10282:5;10247:20;:32;10268:7;10276:1;10268:10;;;;;;;;:::i;:::-;;;;;;;;10247:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;10227:3;;;;;:::i;:::-;;;;10191:108;;;;10064:242:::0;;:::o;7699:87::-;7738:13;7771:7;7764:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7699:87;:::o;3508:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4333:51::-;;;;:::o;11250:204::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11340:32:::1;11357:14;;11340:12;;:16;;:32;;;;:::i;:::-;11329:7;:43;;11321:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;11439:7;11425:11;:21;;;;11250:204:::0;:::o;9485:406::-;9605:4;9627:234;9650:12;:10;:12::i;:::-;9677:7;9699:151;9756:15;9699:151;;;;;;;;;;;;;;;;;:11;:25;9711:12;:10;:12::i;:::-;9699:25;;;;;;;;;;;;;;;:34;9725:7;9699:34;;;;;;;;;;;;;;;;:38;;:151;;;;;:::i;:::-;9627:8;:234::i;:::-;9879:4;9872:11;;9485:406;;;;:::o;8120:199::-;8225:4;8247:42;8257:12;:10;:12::i;:::-;8271:9;8282:6;8247:9;:42::i;:::-;8307:4;8300:11;;8120:199;;;;:::o;4143:38::-;;;;;;;;;;;;;:::o;12543:99::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12628:6:::1;12615:10;;:19;;;;;;;;;;;;;;;;;;12543:99:::0;:::o;11569:411::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11726:6:::1;11703:20;:29;;;;11763:6;11743:17;:26;;;;11803:13;11780:20;:36;;;;11890:22;11909:2;11890:14;;:18;;:22;;;;:::i;:::-;11849:37;11879:6;11849:25;11860:13;11849:6;:10;;:25;;;;:::i;:::-;:29;;:37;;;;:::i;:::-;:63;;11827:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;11569:411:::0;;;:::o;4614:25::-;;;;:::o;4188:28::-;;;;;;;;;;;;;:::o;4109:27::-;;;;;;;;;;;;;:::o;8327:184::-;8444:7;8476:11;:18;8488:5;8476:18;;;;;;;;;;;;;;;:27;8495:7;8476:27;;;;;;;;;;;;;;;;8469:34;;8327:184;;;;:::o;5314:38::-;;;;:::o;5048:37::-;;;;:::o;5136:41::-;;;;:::o;9899:157::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10043:5:::1;10014:17;:26;10032:7;10014:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9899:157:::0;;:::o;4801:19::-;;;;;;;;;;;;;:::o;13328:251::-;13391:7;13411:11;13425:125;13525:14;;13425:81;13436:69;13487:17;;13436:46;13461:20;;13436;;:24;;:46;;;;:::i;:::-;:50;;:69;;;;:::i;:::-;13425:6;:10;;:81;;;;:::i;:::-;:85;;:125;;;;:::i;:::-;13411:139;;13568:3;13561:10;;;13328:251;;;:::o;10868:160::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10960:1:::1;10950:7;:11;10942:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11013:7;10996:14;:24;;;;10868:160:::0;:::o;13854:383::-;13910:9;:21;13920:10;13910:21;;;;;;;;;;;;;;;;;;;;;;;;;13909:22;13901:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13961:15;13986:13;;;;;;;;;;;13979:31;;;14011:10;13979:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13961:61;;14051:1;14041:7;:11;14033:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;14076:39;14086:7;:5;:7::i;:::-;14095:10;14107:7;14076:9;:39::i;:::-;14133:13;;;;;;;;;;;14126:34;;;14161:10;14173:7;:5;:7::i;:::-;14182;14126:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14225:4;14201:9;:21;14211:10;14201:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13890:347;13854:383::o;4043:22::-;;;;;;;;;;;;;:::o;2941:281::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3064:1:::1;3044:22;;:8;:22;;;;3022:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3177:8;3148:38;;3169:6;::::0;::::1;;;;;;;;3148:38;;;;;;;;;;;;3206:8;3197:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2941:281:::0;:::o;13587:259::-;13651:7;13671:11;13685:132;13802:14;;13685:98;13710:72;13763:18;;13710:48;13736:21;;13710;;:25;;:48;;;;:::i;:::-;:52;;:72;;;;:::i;:::-;13685:6;:24;;:98;;;;:::i;:::-;:116;;:132;;;;:::i;:::-;13671:146;;13835:3;13828:10;;;13587:259;;;:::o;4525:36::-;;;;:::o;23921:132::-;23979:7;24006:39;24010:1;24013;24006:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;23999:46;;23921:132;;;;:::o;1898:115::-;1951:15;1994:10;1979:26;;1898:115;:::o;14245:377::-;14389:1;14372:19;;:5;:19;;;;14364:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14473:1;14454:21;;:7;:21;;;;14446:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14560:6;14530:11;:18;14542:5;14530:18;;;;;;;;;;;;;;;:27;14549:7;14530:27;;;;;;;;;;;;;;;:36;;;;14598:7;14582:32;;14591:5;14582:32;;;14607:6;14582:32;;;;;;:::i;:::-;;;;;;;;14245:377;;;:::o;23442:471::-;23500:7;23750:1;23745;:6;23741:47;;;23775:1;23768:8;;;;23741:47;23800:9;23816:1;23812;:5;;;;:::i;:::-;23800:17;;23845:1;23840;23836;:5;;;;:::i;:::-;:10;23828:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23904:1;23897:8;;;23442:471;;;;;:::o;22875:181::-;22933:7;22953:9;22969:1;22965;:5;;;;:::i;:::-;22953:17;;22994:1;22989;:6;;22981:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23047:1;23040:8;;;22875:181;;;;:::o;14630:1879::-;14768:1;14752:18;;:4;:18;;;;14744:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14848:1;14834:16;;:2;:16;;;;14826:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14921:1;14912:6;:10;14904:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14989:5;:11;14995:4;14989:11;;;;;;;;;;;;;;;;;;;;;;;;;14988:12;14980:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15045:20;:26;15066:4;15045:26;;;;;;;;;;;;;;;;;;;;;;;;;15044:27;:56;;;;;15076:20;:24;15097:2;15076:24;;;;;;;;;;;;;;;;;;;;;;;;;15075:25;15044:56;15040:762;;;15135:11;;15125:6;:21;;15117:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15248:7;;;;;;;;;;;15243:183;;15317:4;15306:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;15336:2;15325:13;;:7;;;;;;;;;;;:13;;;;15306:32;15276:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;15243:183;15517:11;;15504:10;;:24;;;;:::i;:::-;15486:15;:42;:89;;;;;15565:9;;;;;;;;;;;15549:26;;:4;:26;;;;15486:89;15464:327;;;15625:4;15614:15;;:7;;;;;;;;;;;:15;;;15610:166;;;15666:4;15654:5;:9;15660:2;15654:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;15610:166;;;15711:2;15700:13;;:7;;;;;;;;;;;:13;;;15696:80;;;15752:4;15738:5;:11;15744:4;15738:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;15696:80;15610:166;15464:327;15040:762;15819:24;:28;15844:2;15819:28;;;;;;;;;;;;;;;;;;;;;;;;;15814:197;;15919:12;;15890:25;15908:6;15890:13;15900:2;15890:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;15864:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;15814:197;16052:30;16073:4;16079:2;16052:20;:30::i;:::-;16156:12;16171:4;16156:19;;16275:17;:23;16293:4;16275:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;16302:17;:21;16320:2;16302:21;;;;;;;;;;;;;;;;;;;;;;;;;16275:48;:63;;;;16328:10;;;;;;;;;;;16327:11;16275:63;16271:111;;;16365:5;16355:15;;16271:111;16460:41;16475:4;16481:2;16485:6;16493:7;16460:14;:41::i;:::-;14733:1776;14630:1879;;;:::o;23208:226::-;23328:7;23361:1;23356;:6;;23364:12;23348:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;23388:9;23404:1;23400;:5;;;;:::i;:::-;23388:17;;23425:1;23418:8;;;23208:226;;;;;:::o;24061:312::-;24181:7;24213:1;24209;:5;24216:12;24201:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24240:9;24256:1;24252;:5;;;;:::i;:::-;24240:17;;24364:1;24357:8;;;24061:312;;;;;:::o;18900:2722::-;19253:28;19284:24;19302:4;19284:9;:24::i;:::-;19253:55;;19321:15;19363:14;;19339:20;:38;;19321:56;;19408:10;:42;;;;;19443:7;;;;;;;;;;;19435:15;;:4;:15;;;;19408:42;:85;;;;;19467:26;;;;;;;;;;;19408:85;:152;;;;;19528:4;19512:21;;:4;:21;;;:47;;;;;19551:7;;;;;;;;;;;19537:22;;:2;:22;;;19512:47;19510:50;19408:152;19390:2225;;;19635:65;19652:4;19667:9;;;;;;;;;;;19679:20;19635:8;:65::i;:::-;19717:21;19741:26;19765:1;19741:19;;:23;;:26;;;;:::i;:::-;19717:50;;19782:26;19811:38;19835:13;19811:19;;:23;;:38;;;;:::i;:::-;19782:67;;19866:30;19899:76;19942:18;19899:20;:24;;:76;;;;:::i;:::-;19866:109;;19992:21;20016;19992:45;;20104:66;20135:9;;;;;;;;;;;20147:22;20104;:66::i;:::-;20187:20;20210:40;20236:13;20210:21;:25;;:40;;;;:::i;:::-;20187:63;;20265:31;20299:95;20371:22;20299:49;20334:13;20299:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;20265:129;;20409:23;20435:97;20495:22;20435:37;20452:19;;20435:12;:16;;:37;;;;:::i;:::-;:41;;:97;;;;:::i;:::-;20409:123;;20547:20;20570:94;20634:15;20570:41;20587:23;20570:12;:16;;:41;;;;:::i;:::-;:45;;:94;;;;:::i;:::-;20547:117;;20748:1;20722:23;:27;20718:461;;;20770:211;20819:9;;;;;;;;;;;20852:23;;;;;;;;;;;20898:18;20939:23;20770:18;:211::i;:::-;21007:156;21044:13;21080:23;21126:18;21007:156;;;;;;;;:::i;:::-;;;;;;;;20718:461;21265:1;21247:15;:19;21243:75;;;21276:15;;;;;;;;;;;21268:33;;:50;21302:15;21268:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21243:75;21404:1;21389:12;:16;21385:66;;;21415:12;;;;;;;;;;;21407:30;;:44;21438:12;21407:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21385:66;21529:1;21507:19;:23;;;;21567:1;21545:19;:23;;;;21602:1;21583:16;:20;;;;19587:2028;;;;;;;;19390:2225;18964:2658;;18900:2722;;:::o;16590:1393::-;16756:6;16745:17;;:7;;;;;;;;;;;:17;;;:28;;;;;16766:7;16745:28;16741:1235;;;16790:14;16807:24;16824:6;16807:16;:24::i;:::-;16790:41;;16846:23;16872:18;16883:6;16872;:10;;:18;;;;:::i;:::-;16846:44;;16925:62;16947:6;16925:62;;;;;;;;;;;;;;;;;:9;:17;16935:6;16925:17;;;;;;;;;;;;;;;;:21;;:62;;;;;:::i;:::-;16905:9;:17;16915:6;16905:17;;;;;;;;;;;;;;;:82;;;;17025:41;17050:15;17025:9;:20;17035:9;17025:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;17002:9;:20;17012:9;17002:20;;;;;;;;;;;;;;;:64;;;;17105:9;17088:44;;17097:6;17088:44;;;17116:15;17088:44;;;;;;:::i;:::-;;;;;;;;17147:28;17160:6;17168;17147:12;:28::i;:::-;17190:30;17213:6;17190:22;:30::i;:::-;16775:457;;16741:1235;;;17253:9;17242:20;;:7;;;;;;;;;;;:20;;;:31;;;;;17266:7;17242:31;17238:738;;;17290:14;17307:25;17325:6;17307:17;:25::i;:::-;17290:42;;17347:23;17373:18;17384:6;17373;:10;;:18;;;;:::i;:::-;17347:44;;17426:62;17448:6;17426:62;;;;;;;;;;;;;;;;;:9;:17;17436:6;17426:17;;;;;;;;;;;;;;;;:21;;:62;;;;;:::i;:::-;17406:9;:17;17416:6;17406:17;;;;;;;;;;;;;;;:82;;;;17526:41;17551:15;17526:9;:20;17536:9;17526:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;17503:9;:20;17513:9;17503:20;;;;;;;;;;;;;;;:64;;;;17606:9;17589:44;;17598:6;17589:44;;;17617:15;17589:44;;;;;;:::i;:::-;;;;;;;;17648:28;17661:6;17669;17648:12;:28::i;:::-;17691:31;17715:6;17691:23;:31::i;:::-;17275:459;;17238:738;;;17775:62;17797:6;17775:62;;;;;;;;;;;;;;;;;:9;:17;17785:6;17775:17;;;;;;;;;;;;;;;;:21;;:62;;;;;:::i;:::-;17755:9;:17;17765:6;17755:17;;;;;;;;;;;;;;;:82;;;;17875:32;17900:6;17875:9;:20;17885:9;17875:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17852:9;:20;17862:9;17852:20;;;;;;;;;;;;;;;:55;;;;17946:9;17929:35;;17938:6;17929:35;;;17957:6;17929:35;;;;;;:::i;:::-;;;;;;;;17238:738;16741:1235;16590:1393;;;;:::o;23064:136::-;23122:7;23149:43;23153:1;23156;23149:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;23142:50;;23064:136;;;;:::o;21721:603::-;21825:20;21859:13;21825:48;;21942:21;21980:1;21966:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21942:40;;22011:4;21993;21998:1;21993:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22037:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22027:4;22032:1;22027:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;22092:9;:60;;;22167:11;22193:1;22237:4;22264;22302:3;22284:15;:21;;;;:::i;:::-;22092:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21814:510;;21721:603;;:::o;22332:512::-;22495:20;22529:13;22495:48;;22586:9;:25;;;22619:9;22652:4;22672:11;22698:1;22741;22784:5;22822:3;22804:15;:21;;;;:::i;:::-;22586:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22484:360;22332:512;;;;:::o;17991:201::-;18091:36;18120:6;18091:9;:24;18109:4;18091:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;18064:9;:24;18082:4;18064:24;;;;;;;;;;;;;;;:63;;;;18170:4;18145:39;;18154:6;18145:39;;;18177:6;18145:39;;;;;;:::i;:::-;;;;;;;;17991:201;;:::o;18200:340::-;18290:76;18341:14;;18290:32;18301:20;;18290:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;18267:19;;:99;;;;;;;:::i;:::-;;;;;;;;18400:52;18437:14;;18400:32;18411:20;;18400:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;18377:19;;:75;;;;;;;:::i;:::-;;;;;;;;18483:49;18517:14;;18483:29;18494:17;;18483:6;:10;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;18463:16;;:69;;;;;;;:::i;:::-;;;;;;;;18200:340;:::o;18548:344::-;18639:77;18691:14;;18639:33;18650:21;;18639:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;18616:19;;:100;;;;;;;:::i;:::-;;;;;;;;18750:53;18788:14;;18750:33;18761:21;;18750:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;18727:19;;:76;;;;;;;:::i;:::-;;;;;;;;18834:50;18869:14;;18834:30;18845:18;;18834:6;:10;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;18814:16;;:70;;;;;;;:::i;:::-;;;;;;;;18548:344;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2462:75::-;2495:6;2528:2;2522:9;2512:19;;2462:75;:::o;2543:117::-;2652:1;2649;2642:12;2666:117;2775:1;2772;2765:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:116::-;4497:21;4512:5;4497:21;:::i;:::-;4490:5;4487:32;4477:60;;4533:1;4530;4523:12;4477:60;4427:116;:::o;4549:133::-;4592:5;4630:6;4617:20;4608:29;;4646:30;4670:5;4646:30;:::i;:::-;4549:133;;;;:::o;4688:323::-;4744:6;4793:2;4781:9;4772:7;4768:23;4764:32;4761:119;;;4799:79;;:::i;:::-;4761:119;4919:1;4944:50;4986:7;4977:6;4966:9;4962:22;4944:50;:::i;:::-;4934:60;;4890:114;4688:323;;;;:::o;5017:329::-;5076:6;5125:2;5113:9;5104:7;5100:23;5096:32;5093:119;;;5131:79;;:::i;:::-;5093:119;5251:1;5276:53;5321:7;5312:6;5301:9;5297:22;5276:53;:::i;:::-;5266:63;;5222:117;5017:329;;;;:::o;5352:117::-;5461:1;5458;5451:12;5475:180;5523:77;5520:1;5513:88;5620:4;5617:1;5610:15;5644:4;5641:1;5634:15;5661:281;5744:27;5766:4;5744:27;:::i;:::-;5736:6;5732:40;5874:6;5862:10;5859:22;5838:18;5826:10;5823:34;5820:62;5817:88;;;5885:18;;:::i;:::-;5817:88;5925:10;5921:2;5914:22;5704:238;5661:281;;:::o;5948:129::-;5982:6;6009:20;;:::i;:::-;5999:30;;6038:33;6066:4;6058:6;6038:33;:::i;:::-;5948:129;;;:::o;6083:311::-;6160:4;6250:18;6242:6;6239:30;6236:56;;;6272:18;;:::i;:::-;6236:56;6322:4;6314:6;6310:17;6302:25;;6382:4;6376;6372:15;6364:23;;6083:311;;;:::o;6400:117::-;6509:1;6506;6499:12;6540:710;6636:5;6661:81;6677:64;6734:6;6677:64;:::i;:::-;6661:81;:::i;:::-;6652:90;;6762:5;6791:6;6784:5;6777:21;6825:4;6818:5;6814:16;6807:23;;6878:4;6870:6;6866:17;6858:6;6854:30;6907:3;6899:6;6896:15;6893:122;;;6926:79;;:::i;:::-;6893:122;7041:6;7024:220;7058:6;7053:3;7050:15;7024:220;;;7133:3;7162:37;7195:3;7183:10;7162:37;:::i;:::-;7157:3;7150:50;7229:4;7224:3;7220:14;7213:21;;7100:144;7084:4;7079:3;7075:14;7068:21;;7024:220;;;7028:21;6642:608;;6540:710;;;;;:::o;7273:370::-;7344:5;7393:3;7386:4;7378:6;7374:17;7370:27;7360:122;;7401:79;;:::i;:::-;7360:122;7518:6;7505:20;7543:94;7633:3;7625:6;7618:4;7610:6;7606:17;7543:94;:::i;:::-;7534:103;;7350:293;7273:370;;;;:::o;7649:678::-;7739:6;7747;7796:2;7784:9;7775:7;7771:23;7767:32;7764:119;;;7802:79;;:::i;:::-;7764:119;7950:1;7939:9;7935:17;7922:31;7980:18;7972:6;7969:30;7966:117;;;8002:79;;:::i;:::-;7966:117;8107:78;8177:7;8168:6;8157:9;8153:22;8107:78;:::i;:::-;8097:88;;7893:302;8234:2;8260:50;8302:7;8293:6;8282:9;8278:22;8260:50;:::i;:::-;8250:60;;8205:115;7649:678;;;;;:::o;8333:619::-;8410:6;8418;8426;8475:2;8463:9;8454:7;8450:23;8446:32;8443:119;;;8481:79;;:::i;:::-;8443:119;8601:1;8626:53;8671:7;8662:6;8651:9;8647:22;8626:53;:::i;:::-;8616:63;;8572:117;8728:2;8754:53;8799:7;8790:6;8779:9;8775:22;8754:53;:::i;:::-;8744:63;;8699:118;8856:2;8882:53;8927:7;8918:6;8907:9;8903:22;8882:53;:::i;:::-;8872:63;;8827:118;8333:619;;;;;:::o;8958:118::-;9045:24;9063:5;9045:24;:::i;:::-;9040:3;9033:37;8958:118;;:::o;9082:222::-;9175:4;9213:2;9202:9;9198:18;9190:26;;9226:71;9294:1;9283:9;9279:17;9270:6;9226:71;:::i;:::-;9082:222;;;;:::o;9310:619::-;9387:6;9395;9403;9452:2;9440:9;9431:7;9427:23;9423:32;9420:119;;;9458:79;;:::i;:::-;9420:119;9578:1;9603:53;9648:7;9639:6;9628:9;9624:22;9603:53;:::i;:::-;9593:63;;9549:117;9705:2;9731:53;9776:7;9767:6;9756:9;9752:22;9731:53;:::i;:::-;9721:63;;9676:118;9833:2;9859:53;9904:7;9895:6;9884:9;9880:22;9859:53;:::i;:::-;9849:63;;9804:118;9310:619;;;;;:::o;9935:468::-;10000:6;10008;10057:2;10045:9;10036:7;10032:23;10028:32;10025:119;;;10063:79;;:::i;:::-;10025:119;10183:1;10208:53;10253:7;10244:6;10233:9;10229:22;10208:53;:::i;:::-;10198:63;;10154:117;10310:2;10336:50;10378:7;10369:6;10358:9;10354:22;10336:50;:::i;:::-;10326:60;;10281:115;9935:468;;;;;:::o;10409:86::-;10444:7;10484:4;10477:5;10473:16;10462:27;;10409:86;;;:::o;10501:112::-;10584:22;10600:5;10584:22;:::i;:::-;10579:3;10572:35;10501:112;;:::o;10619:214::-;10708:4;10746:2;10735:9;10731:18;10723:26;;10759:67;10823:1;10812:9;10808:17;10799:6;10759:67;:::i;:::-;10619:214;;;;:::o;10839:619::-;10916:6;10924;10932;10981:2;10969:9;10960:7;10956:23;10952:32;10949:119;;;10987:79;;:::i;:::-;10949:119;11107:1;11132:53;11177:7;11168:6;11157:9;11153:22;11132:53;:::i;:::-;11122:63;;11078:117;11234:2;11260:53;11305:7;11296:6;11285:9;11281:22;11260:53;:::i;:::-;11250:63;;11205:118;11362:2;11388:53;11433:7;11424:6;11413:9;11409:22;11388:53;:::i;:::-;11378:63;;11333:118;10839:619;;;;;:::o;11464:118::-;11551:24;11569:5;11551:24;:::i;:::-;11546:3;11539:37;11464:118;;:::o;11588:222::-;11681:4;11719:2;11708:9;11704:18;11696:26;;11732:71;11800:1;11789:9;11785:17;11776:6;11732:71;:::i;:::-;11588:222;;;;:::o;11816:329::-;11875:6;11924:2;11912:9;11903:7;11899:23;11895:32;11892:119;;;11930:79;;:::i;:::-;11892:119;12050:1;12075:53;12120:7;12111:6;12100:9;12096:22;12075:53;:::i;:::-;12065:63;;12021:117;11816:329;;;;:::o;12151:474::-;12219:6;12227;12276:2;12264:9;12255:7;12251:23;12247:32;12244:119;;;12282:79;;:::i;:::-;12244:119;12402:1;12427:53;12472:7;12463:6;12452:9;12448:22;12427:53;:::i;:::-;12417:63;;12373:117;12529:2;12555:53;12600:7;12591:6;12580:9;12576:22;12555:53;:::i;:::-;12545:63;;12500:118;12151:474;;;;;:::o;12631:180::-;12679:77;12676:1;12669:88;12776:4;12773:1;12766:15;12800:4;12797:1;12790:15;12817:320;12861:6;12898:1;12892:4;12888:12;12878:22;;12945:1;12939:4;12935:12;12966:18;12956:81;;13022:4;13014:6;13010:17;13000:27;;12956:81;13084:2;13076:6;13073:14;13053:18;13050:38;13047:84;;;13103:18;;:::i;:::-;13047:84;12868:269;12817:320;;;:::o;13143:182::-;13283:34;13279:1;13271:6;13267:14;13260:58;13143:182;:::o;13331:366::-;13473:3;13494:67;13558:2;13553:3;13494:67;:::i;:::-;13487:74;;13570:93;13659:3;13570:93;:::i;:::-;13688:2;13683:3;13679:12;13672:19;;13331:366;;;:::o;13703:419::-;13869:4;13907:2;13896:9;13892:18;13884:26;;13956:9;13950:4;13946:20;13942:1;13931:9;13927:17;13920:47;13984:131;14110:4;13984:131;:::i;:::-;13976:139;;13703:419;;;:::o;14128:180::-;14176:77;14173:1;14166:88;14273:4;14270:1;14263:15;14297:4;14294:1;14287:15;14314:180;14362:77;14359:1;14352:88;14459:4;14456:1;14449:15;14483:4;14480:1;14473:15;14500:233;14539:3;14562:24;14580:5;14562:24;:::i;:::-;14553:33;;14608:66;14601:5;14598:77;14595:103;;;14678:18;;:::i;:::-;14595:103;14725:1;14718:5;14714:13;14707:20;;14500:233;;;:::o;14739:182::-;14879:34;14875:1;14867:6;14863:14;14856:58;14739:182;:::o;14927:366::-;15069:3;15090:67;15154:2;15149:3;15090:67;:::i;:::-;15083:74;;15166:93;15255:3;15166:93;:::i;:::-;15284:2;15279:3;15275:12;15268:19;;14927:366;;;:::o;15299:419::-;15465:4;15503:2;15492:9;15488:18;15480:26;;15552:9;15546:4;15542:20;15538:1;15527:9;15523:17;15516:47;15580:131;15706:4;15580:131;:::i;:::-;15572:139;;15299:419;;;:::o;15724:224::-;15864:34;15860:1;15852:6;15848:14;15841:58;15933:7;15928:2;15920:6;15916:15;15909:32;15724:224;:::o;15954:366::-;16096:3;16117:67;16181:2;16176:3;16117:67;:::i;:::-;16110:74;;16193:93;16282:3;16193:93;:::i;:::-;16311:2;16306:3;16302:12;16295:19;;15954:366;;;:::o;16326:419::-;16492:4;16530:2;16519:9;16515:18;16507:26;;16579:9;16573:4;16569:20;16565:1;16554:9;16550:17;16543:47;16607:131;16733:4;16607:131;:::i;:::-;16599:139;;16326:419;;;:::o;16751:175::-;16891:27;16887:1;16879:6;16875:14;16868:51;16751:175;:::o;16932:366::-;17074:3;17095:67;17159:2;17154:3;17095:67;:::i;:::-;17088:74;;17171:93;17260:3;17171:93;:::i;:::-;17289:2;17284:3;17280:12;17273:19;;16932:366;;;:::o;17304:419::-;17470:4;17508:2;17497:9;17493:18;17485:26;;17557:9;17551:4;17547:20;17543:1;17532:9;17528:17;17521:47;17585:131;17711:4;17585:131;:::i;:::-;17577:139;;17304:419;;;:::o;17729:170::-;17869:22;17865:1;17857:6;17853:14;17846:46;17729:170;:::o;17905:366::-;18047:3;18068:67;18132:2;18127:3;18068:67;:::i;:::-;18061:74;;18144:93;18233:3;18144:93;:::i;:::-;18262:2;18257:3;18253:12;18246:19;;17905:366;;;:::o;18277:419::-;18443:4;18481:2;18470:9;18466:18;18458:26;;18530:9;18524:4;18520:20;18516:1;18505:9;18501:17;18494:47;18558:131;18684:4;18558:131;:::i;:::-;18550:139;;18277:419;;;:::o;18702:165::-;18842:17;18838:1;18830:6;18826:14;18819:41;18702:165;:::o;18873:366::-;19015:3;19036:67;19100:2;19095:3;19036:67;:::i;:::-;19029:74;;19112:93;19201:3;19112:93;:::i;:::-;19230:2;19225:3;19221:12;19214:19;;18873:366;;;:::o;19245:419::-;19411:4;19449:2;19438:9;19434:18;19426:26;;19498:9;19492:4;19488:20;19484:1;19473:9;19469:17;19462:47;19526:131;19652:4;19526:131;:::i;:::-;19518:139;;19245:419;;;:::o;19670:143::-;19727:5;19758:6;19752:13;19743:22;;19774:33;19801:5;19774:33;:::i;:::-;19670:143;;;;:::o;19819:351::-;19889:6;19938:2;19926:9;19917:7;19913:23;19909:32;19906:119;;;19944:79;;:::i;:::-;19906:119;20064:1;20089:64;20145:7;20136:6;20125:9;20121:22;20089:64;:::i;:::-;20079:74;;20035:128;19819:351;;;;:::o;20176:159::-;20316:11;20312:1;20304:6;20300:14;20293:35;20176:159;:::o;20341:365::-;20483:3;20504:66;20568:1;20563:3;20504:66;:::i;:::-;20497:73;;20579:93;20668:3;20579:93;:::i;:::-;20697:2;20692:3;20688:12;20681:19;;20341:365;;;:::o;20712:419::-;20878:4;20916:2;20905:9;20901:18;20893:26;;20965:9;20959:4;20955:20;20951:1;20940:9;20936:17;20929:47;20993:131;21119:4;20993:131;:::i;:::-;20985:139;;20712:419;;;:::o;21137:442::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21337:71;21405:1;21394:9;21390:17;21381:6;21337:71;:::i;:::-;21418:72;21486:2;21475:9;21471:18;21462:6;21418:72;:::i;:::-;21500;21568:2;21557:9;21553:18;21544:6;21500:72;:::i;:::-;21137:442;;;;;;:::o;21585:137::-;21639:5;21670:6;21664:13;21655:22;;21686:30;21710:5;21686:30;:::i;:::-;21585:137;;;;:::o;21728:345::-;21795:6;21844:2;21832:9;21823:7;21819:23;21815:32;21812:119;;;21850:79;;:::i;:::-;21812:119;21970:1;21995:61;22048:7;22039:6;22028:9;22024:22;21995:61;:::i;:::-;21985:71;;21941:125;21728:345;;;;:::o;22079:225::-;22219:34;22215:1;22207:6;22203:14;22196:58;22288:8;22283:2;22275:6;22271:15;22264:33;22079:225;:::o;22310:366::-;22452:3;22473:67;22537:2;22532:3;22473:67;:::i;:::-;22466:74;;22549:93;22638:3;22549:93;:::i;:::-;22667:2;22662:3;22658:12;22651:19;;22310:366;;;:::o;22682:419::-;22848:4;22886:2;22875:9;22871:18;22863:26;;22935:9;22929:4;22925:20;22921:1;22910:9;22906:17;22899:47;22963:131;23089:4;22963:131;:::i;:::-;22955:139;;22682:419;;;:::o;23107:226::-;23247:34;23243:1;23235:6;23231:14;23224:58;23316:9;23311:2;23303:6;23299:15;23292:34;23107:226;:::o;23339:366::-;23481:3;23502:67;23566:2;23561:3;23502:67;:::i;:::-;23495:74;;23578:93;23667:3;23578:93;:::i;:::-;23696:2;23691:3;23687:12;23680:19;;23339:366;;;:::o;23711:419::-;23877:4;23915:2;23904:9;23900:18;23892:26;;23964:9;23958:4;23954:20;23950:1;23939:9;23935:17;23928:47;23992:131;24118:4;23992:131;:::i;:::-;23984:139;;23711:419;;;:::o;24136:224::-;24276:34;24272:1;24264:6;24260:14;24253:58;24345:7;24340:2;24332:6;24328:15;24321:32;24136:224;:::o;24366:366::-;24508:3;24529:67;24593:2;24588:3;24529:67;:::i;:::-;24522:74;;24605:93;24694:3;24605:93;:::i;:::-;24723:2;24718:3;24714:12;24707:19;;24366:366;;;:::o;24738:419::-;24904:4;24942:2;24931:9;24927:18;24919:26;;24991:9;24985:4;24981:20;24977:1;24966:9;24962:17;24955:47;25019:131;25145:4;25019:131;:::i;:::-;25011:139;;24738:419;;;:::o;25163:348::-;25203:7;25226:20;25244:1;25226:20;:::i;:::-;25221:25;;25260:20;25278:1;25260:20;:::i;:::-;25255:25;;25448:1;25380:66;25376:74;25373:1;25370:81;25365:1;25358:9;25351:17;25347:105;25344:131;;;25455:18;;:::i;:::-;25344:131;25503:1;25500;25496:9;25485:20;;25163:348;;;;:::o;25517:180::-;25565:77;25562:1;25555:88;25662:4;25659:1;25652:15;25686:4;25683:1;25676:15;25703:185;25743:1;25760:20;25778:1;25760:20;:::i;:::-;25755:25;;25794:20;25812:1;25794:20;:::i;:::-;25789:25;;25833:1;25823:35;;25838:18;;:::i;:::-;25823:35;25880:1;25877;25873:9;25868:14;;25703:185;;;;:::o;25894:220::-;26034:34;26030:1;26022:6;26018:14;26011:58;26103:3;26098:2;26090:6;26086:15;26079:28;25894:220;:::o;26120:366::-;26262:3;26283:67;26347:2;26342:3;26283:67;:::i;:::-;26276:74;;26359:93;26448:3;26359:93;:::i;:::-;26477:2;26472:3;26468:12;26461:19;;26120:366;;;:::o;26492:419::-;26658:4;26696:2;26685:9;26681:18;26673:26;;26745:9;26739:4;26735:20;26731:1;26720:9;26716:17;26709:47;26773:131;26899:4;26773:131;:::i;:::-;26765:139;;26492:419;;;:::o;26917:305::-;26957:3;26976:20;26994:1;26976:20;:::i;:::-;26971:25;;27010:20;27028:1;27010:20;:::i;:::-;27005:25;;27164:1;27096:66;27092:74;27089:1;27086:81;27083:107;;;27170:18;;:::i;:::-;27083:107;27214:1;27211;27207:9;27200:16;;26917:305;;;;:::o;27228:177::-;27368:29;27364:1;27356:6;27352:14;27345:53;27228:177;:::o;27411:366::-;27553:3;27574:67;27638:2;27633:3;27574:67;:::i;:::-;27567:74;;27650:93;27739:3;27650:93;:::i;:::-;27768:2;27763:3;27759:12;27752:19;;27411:366;;;:::o;27783:419::-;27949:4;27987:2;27976:9;27972:18;27964:26;;28036:9;28030:4;28026:20;28022:1;28011:9;28007:17;28000:47;28064:131;28190:4;28064:131;:::i;:::-;28056:139;;27783:419;;;:::o;28208:227::-;28348:34;28344:1;28336:6;28332:14;28325:58;28417:10;28412:2;28404:6;28400:15;28393:35;28208:227;:::o;28441:366::-;28583:3;28604:67;28668:2;28663:3;28604:67;:::i;:::-;28597:74;;28680:93;28769:3;28680:93;:::i;:::-;28798:2;28793:3;28789:12;28782:19;;28441:366;;;:::o;28813:419::-;28979:4;29017:2;29006:9;29002:18;28994:26;;29066:9;29060:4;29056:20;29052:1;29041:9;29037:17;29030:47;29094:131;29220:4;29094:131;:::i;:::-;29086:139;;28813:419;;;:::o;29238:225::-;29378:34;29374:1;29366:6;29362:14;29355:58;29447:8;29442:2;29434:6;29430:15;29423:33;29238:225;:::o;29469:366::-;29611:3;29632:67;29696:2;29691:3;29632:67;:::i;:::-;29625:74;;29708:93;29797:3;29708:93;:::i;:::-;29826:2;29821:3;29817:12;29810:19;;29469:366;;;:::o;29841:419::-;30007:4;30045:2;30034:9;30030:18;30022:26;;30094:9;30088:4;30084:20;30080:1;30069:9;30065:17;30058:47;30122:131;30248:4;30122:131;:::i;:::-;30114:139;;29841:419;;;:::o;30266:229::-;30406:34;30402:1;30394:6;30390:14;30383:58;30475:12;30470:2;30462:6;30458:15;30451:37;30266:229;:::o;30501:366::-;30643:3;30664:67;30728:2;30723:3;30664:67;:::i;:::-;30657:74;;30740:93;30829:3;30740:93;:::i;:::-;30858:2;30853:3;30849:12;30842:19;;30501:366;;;:::o;30873:419::-;31039:4;31077:2;31066:9;31062:18;31054:26;;31126:9;31120:4;31116:20;31112:1;31101:9;31097:17;31090:47;31154:131;31280:4;31154:131;:::i;:::-;31146:139;;30873:419;;;:::o;31298:172::-;31438:24;31434:1;31426:6;31422:14;31415:48;31298:172;:::o;31476:366::-;31618:3;31639:67;31703:2;31698:3;31639:67;:::i;:::-;31632:74;;31715:93;31804:3;31715:93;:::i;:::-;31833:2;31828:3;31824:12;31817:19;;31476:366;;;:::o;31848:419::-;32014:4;32052:2;32041:9;32037:18;32029:26;;32101:9;32095:4;32091:20;32087:1;32076:9;32072:17;32065:47;32129:131;32255:4;32129:131;:::i;:::-;32121:139;;31848:419;;;:::o;32273:181::-;32413:33;32409:1;32401:6;32397:14;32390:57;32273:181;:::o;32460:366::-;32602:3;32623:67;32687:2;32682:3;32623:67;:::i;:::-;32616:74;;32699:93;32788:3;32699:93;:::i;:::-;32817:2;32812:3;32808:12;32801:19;;32460:366;;;:::o;32832:419::-;32998:4;33036:2;33025:9;33021:18;33013:26;;33085:9;33079:4;33075:20;33071:1;33060:9;33056:17;33049:47;33113:131;33239:4;33113:131;:::i;:::-;33105:139;;32832:419;;;:::o;33257:178::-;33397:30;33393:1;33385:6;33381:14;33374:54;33257:178;:::o;33441:366::-;33583:3;33604:67;33668:2;33663:3;33604:67;:::i;:::-;33597:74;;33680:93;33769:3;33680:93;:::i;:::-;33798:2;33793:3;33789:12;33782:19;;33441:366;;;:::o;33813:419::-;33979:4;34017:2;34006:9;34002:18;33994:26;;34066:9;34060:4;34056:20;34052:1;34041:9;34037:17;34030:47;34094:131;34220:4;34094:131;:::i;:::-;34086:139;;33813:419;;;:::o;34238:182::-;34378:34;34374:1;34366:6;34362:14;34355:58;34238:182;:::o;34426:366::-;34568:3;34589:67;34653:2;34648:3;34589:67;:::i;:::-;34582:74;;34665:93;34754:3;34665:93;:::i;:::-;34783:2;34778:3;34774:12;34767:19;;34426:366;;;:::o;34798:419::-;34964:4;35002:2;34991:9;34987:18;34979:26;;35051:9;35045:4;35041:20;35037:1;35026:9;35022:17;35015:47;35079:131;35205:4;35079:131;:::i;:::-;35071:139;;34798:419;;;:::o;35223:191::-;35263:4;35283:20;35301:1;35283:20;:::i;:::-;35278:25;;35317:20;35335:1;35317:20;:::i;:::-;35312:25;;35356:1;35353;35350:8;35347:34;;;35361:18;;:::i;:::-;35347:34;35406:1;35403;35399:9;35391:17;;35223:191;;;;:::o;35420:442::-;35569:4;35607:2;35596:9;35592:18;35584:26;;35620:71;35688:1;35677:9;35673:17;35664:6;35620:71;:::i;:::-;35701:72;35769:2;35758:9;35754:18;35745:6;35701:72;:::i;:::-;35783;35851:2;35840:9;35836:18;35827:6;35783:72;:::i;:::-;35420:442;;;;;;:::o;35868:143::-;35925:5;35956:6;35950:13;35941:22;;35972:33;35999:5;35972:33;:::i;:::-;35868:143;;;;:::o;36017:351::-;36087:6;36136:2;36124:9;36115:7;36111:23;36107:32;36104:119;;;36142:79;;:::i;:::-;36104:119;36262:1;36287:64;36343:7;36334:6;36323:9;36319:22;36287:64;:::i;:::-;36277:74;;36233:128;36017:351;;;;:::o;36374:85::-;36419:7;36448:5;36437:16;;36374:85;;;:::o;36465:158::-;36523:9;36556:61;36574:42;36583:32;36609:5;36583:32;:::i;:::-;36574:42;:::i;:::-;36556:61;:::i;:::-;36543:74;;36465:158;;;:::o;36629:147::-;36724:45;36763:5;36724:45;:::i;:::-;36719:3;36712:58;36629:147;;:::o;36782:114::-;36849:6;36883:5;36877:12;36867:22;;36782:114;;;:::o;36902:184::-;37001:11;37035:6;37030:3;37023:19;37075:4;37070:3;37066:14;37051:29;;36902:184;;;;:::o;37092:132::-;37159:4;37182:3;37174:11;;37212:4;37207:3;37203:14;37195:22;;37092:132;;;:::o;37230:108::-;37307:24;37325:5;37307:24;:::i;:::-;37302:3;37295:37;37230:108;;:::o;37344:179::-;37413:10;37434:46;37476:3;37468:6;37434:46;:::i;:::-;37512:4;37507:3;37503:14;37489:28;;37344:179;;;;:::o;37529:113::-;37599:4;37631;37626:3;37622:14;37614:22;;37529:113;;;:::o;37678:732::-;37797:3;37826:54;37874:5;37826:54;:::i;:::-;37896:86;37975:6;37970:3;37896:86;:::i;:::-;37889:93;;38006:56;38056:5;38006:56;:::i;:::-;38085:7;38116:1;38101:284;38126:6;38123:1;38120:13;38101:284;;;38202:6;38196:13;38229:63;38288:3;38273:13;38229:63;:::i;:::-;38222:70;;38315:60;38368:6;38315:60;:::i;:::-;38305:70;;38161:224;38148:1;38145;38141:9;38136:14;;38101:284;;;38105:14;38401:3;38394:10;;37802:608;;;37678:732;;;;:::o;38416:831::-;38679:4;38717:3;38706:9;38702:19;38694:27;;38731:71;38799:1;38788:9;38784:17;38775:6;38731:71;:::i;:::-;38812:80;38888:2;38877:9;38873:18;38864:6;38812:80;:::i;:::-;38939:9;38933:4;38929:20;38924:2;38913:9;38909:18;38902:48;38967:108;39070:4;39061:6;38967:108;:::i;:::-;38959:116;;39085:72;39153:2;39142:9;39138:18;39129:6;39085:72;:::i;:::-;39167:73;39235:3;39224:9;39220:19;39211:6;39167:73;:::i;:::-;38416:831;;;;;;;;:::o;39253:807::-;39502:4;39540:3;39529:9;39525:19;39517:27;;39554:71;39622:1;39611:9;39607:17;39598:6;39554:71;:::i;:::-;39635:72;39703:2;39692:9;39688:18;39679:6;39635:72;:::i;:::-;39717:80;39793:2;39782:9;39778:18;39769:6;39717:80;:::i;:::-;39807;39883:2;39872:9;39868:18;39859:6;39807:80;:::i;:::-;39897:73;39965:3;39954:9;39950:19;39941:6;39897:73;:::i;:::-;39980;40048:3;40037:9;40033:19;40024:6;39980:73;:::i;:::-;39253:807;;;;;;;;;:::o;40066:663::-;40154:6;40162;40170;40219:2;40207:9;40198:7;40194:23;40190:32;40187:119;;;40225:79;;:::i;:::-;40187:119;40345:1;40370:64;40426:7;40417:6;40406:9;40402:22;40370:64;:::i;:::-;40360:74;;40316:128;40483:2;40509:64;40565:7;40556:6;40545:9;40541:22;40509:64;:::i;:::-;40499:74;;40454:129;40622:2;40648:64;40704:7;40695:6;40684:9;40680:22;40648:64;:::i;:::-;40638:74;;40593:129;40066:663;;;;;:::o

Swarm Source

ipfs://d653eda006c08e0940deedb3e0d1987c48610993031c86ee67543f04b9a5ace8

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
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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