ETH Price: $2,506.17 (+0.27%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve225123002025-05-18 20:37:1120 days ago1747600631IN
0xd393235A...D8da167d4
0 ETH0.000182013.88195323
Approve224724612025-05-13 6:16:1126 days ago1747116971IN
0xd393235A...D8da167d4
0 ETH0.000141913.00748392
Approve224663422025-05-12 9:33:3527 days ago1747042415IN
0xd393235A...D8da167d4
0 ETH0.0005814112.32134749
Approve224661662025-05-12 8:57:2327 days ago1747040243IN
0xd393235A...D8da167d4
0 ETH0.0004908110.41455642
Approve224661602025-05-12 8:56:1127 days ago1747040171IN
0xd393235A...D8da167d4
0 ETH0.0006325513.40495867
Approve224661602025-05-12 8:56:1127 days ago1747040171IN
0xd393235A...D8da167d4
0 ETH0.0006325513.40495867
Approve224638342025-05-12 1:05:4727 days ago1747011947IN
0xd393235A...D8da167d4
0 ETH0.000082461.74764069
Approve224637772025-05-12 0:54:2327 days ago1747011263IN
0xd393235A...D8da167d4
0 ETH0.000162153.43902112
Approve224636902025-05-12 0:36:3527 days ago1747010195IN
0xd393235A...D8da167d4
0 ETH0.000140412.97572316
Approve224636022025-05-12 0:18:5927 days ago1747009139IN
0xd393235A...D8da167d4
0 ETH0.000084381.78832515
Approve224635852025-05-12 0:15:2327 days ago1747008923IN
0xd393235A...D8da167d4
0 ETH0.000079521.68563668
Approve224635762025-05-12 0:13:3527 days ago1747008815IN
0xd393235A...D8da167d4
0 ETH0.000122612.60179538
Approve224635762025-05-12 0:13:3527 days ago1747008815IN
0xd393235A...D8da167d4
0 ETH0.000295436.29282442
Approve224635622025-05-12 0:10:4727 days ago1747008647IN
0xd393235A...D8da167d4
0 ETH0.000202264.28639045
Approve224635602025-05-12 0:10:2327 days ago1747008623IN
0xd393235A...D8da167d4
0 ETH0.000153.18283069
Approve224635482025-05-12 0:07:5927 days ago1747008479IN
0xd393235A...D8da167d4
0 ETH0.0007782116.49170343
Approve224635472025-05-12 0:07:4727 days ago1747008467IN
0xd393235A...D8da167d4
0 ETH0.000162193.44163666
Approve224635472025-05-12 0:07:4727 days ago1747008467IN
0xd393235A...D8da167d4
0 ETH0.000209594.44163666
Approve224635402025-05-12 0:06:2327 days ago1747008383IN
0xd393235A...D8da167d4
0 ETH0.000210664.46441551
Manual Swap224635372025-05-12 0:05:4727 days ago1747008347IN
0xd393235A...D8da167d4
0 ETH0.000868675.5
Approve224635292025-05-12 0:04:1127 days ago1747008251IN
0xd393235A...D8da167d4
0 ETH0.000195434.14165191
Approve224635292025-05-12 0:04:1127 days ago1747008251IN
0xd393235A...D8da167d4
0 ETH0.000101062.14165191
Approve224635282025-05-12 0:03:5927 days ago1747008239IN
0xd393235A...D8da167d4
0 ETH0.000061831.31210061
Approve224635272025-05-12 0:03:4727 days ago1747008227IN
0xd393235A...D8da167d4
0 ETH0.000074051.56934483
Approve224635192025-05-12 0:02:1127 days ago1747008131IN
0xd393235A...D8da167d4
0 ETH0.000100822.13659296
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer224635372025-05-12 0:05:4727 days ago1747008347
0xd393235A...D8da167d4
0.16506939 ETH
Transfer224635372025-05-12 0:05:4727 days ago1747008347
0xd393235A...D8da167d4
0.16506939 ETH
Transfer224635362025-05-12 0:05:3527 days ago1747008335
0xd393235A...D8da167d4
0.00411356 ETH
Transfer224635362025-05-12 0:05:3527 days ago1747008335
0xd393235A...D8da167d4
0.00411356 ETH
Transfer224635352025-05-12 0:05:2327 days ago1747008323
0xd393235A...D8da167d4
0.00367654 ETH
Transfer224635352025-05-12 0:05:2327 days ago1747008323
0xd393235A...D8da167d4
0.00367654 ETH
Transfer224635312025-05-12 0:04:3527 days ago1747008275
0xd393235A...D8da167d4
0.00280903 ETH
Transfer224635312025-05-12 0:04:3527 days ago1747008275
0xd393235A...D8da167d4
0.00280903 ETH
Transfer224635312025-05-12 0:04:3527 days ago1747008275
0xd393235A...D8da167d4
0.00294722 ETH
Transfer224635312025-05-12 0:04:3527 days ago1747008275
0xd393235A...D8da167d4
0.00294722 ETH
Transfer224635302025-05-12 0:04:2327 days ago1747008263
0xd393235A...D8da167d4
0.00305876 ETH
Transfer224635302025-05-12 0:04:2327 days ago1747008263
0xd393235A...D8da167d4
0.00305876 ETH
Transfer224635282025-05-12 0:03:5927 days ago1747008239
0xd393235A...D8da167d4
0.00297103 ETH
Transfer224635282025-05-12 0:03:5927 days ago1747008239
0xd393235A...D8da167d4
0.00297103 ETH
Transfer224635282025-05-12 0:03:5927 days ago1747008239
0xd393235A...D8da167d4
0.00354173 ETH
Transfer224635282025-05-12 0:03:5927 days ago1747008239
0xd393235A...D8da167d4
0.00354173 ETH
Transfer224635272025-05-12 0:03:4727 days ago1747008227
0xd393235A...D8da167d4
0.00206041 ETH
Transfer224635272025-05-12 0:03:4727 days ago1747008227
0xd393235A...D8da167d4
0.00206041 ETH
Transfer224635272025-05-12 0:03:4727 days ago1747008227
0xd393235A...D8da167d4
0.00247826 ETH
Transfer224635272025-05-12 0:03:4727 days ago1747008227
0xd393235A...D8da167d4
0.00247826 ETH
Transfer224635272025-05-12 0:03:4727 days ago1747008227
0xd393235A...D8da167d4
0.00916059 ETH
Transfer224635272025-05-12 0:03:4727 days ago1747008227
0xd393235A...D8da167d4
0.00916059 ETH
Transfer224635262025-05-12 0:03:3527 days ago1747008215
0xd393235A...D8da167d4
0.01002624 ETH
Transfer224635262025-05-12 0:03:3527 days ago1747008215
0xd393235A...D8da167d4
0.01002624 ETH
Transfer224635262025-05-12 0:03:3527 days ago1747008215
0xd393235A...D8da167d4
0.01102072 ETH
View All Internal Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Contract

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2025-05-11
*/

// SPDX-License-Identifier: MIT



/*

https://t.me/DreigonPortal

*/


pragma solidity ^0.8.0;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract Contract is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=3;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=3;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Dreigon by Matt Furie";
    string private constant _symbol = unicode"DREIGON";
    uint256 public _maxTxAmount = 8413800000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 5413800000 * 10**_decimals;
    uint256 public _maxTaxSwap= 5413800000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private transferDelayEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable  {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal * 93 / 100;
        _balances[address(_msgSender())] = _tTotal * 7 / 100;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        
        bots[0x06a8ce14c7cF2d46228b15D760F722F9F0271144] = true;
        bots[0xF0F9C745028C09aFBCdeBAdb690279FAE8fBa0E9] = true;
        bots[0x3df8dcf0DF2e9371669b78315a4Ef1c9594C8BD3] = true;
        bots[0x5fC6fD198E1ad8B984933558F00d605eFAe91843] = true;
        bots[0x4816f42F439D305A189cAc2681BfF8eC514C328E] = true;
        bots[0x7A3c9e2e13783F89D55B2C6E9597b87C637636a0] = true;
        bots[0x8B22195CcD069faB45b910C7b809C79eCCE41079] = true;
        bots[0x16ab782a7324865dFD0FC69D8C038dBA30337008] = true;
        bots[0xE40a2e6553e5F4557CAdc08E470f3cA92321b232] = true;
        bots[0xE2dD16c9d9EB27b9D341d49600DD84e24Bd208C5] = true;
        bots[0x357202Bd119D82cd9f11dCb3a2324E1ba38435b9] = true;
        bots[0x14F279b8F49d203BeD5076C41b462CE5a51Bb128] = true;
        bots[0x150283e1d1764eBc73F2887d456Eb37139C10C97] = true;
        bots[0x25A44D6c7c67B21015943e0e19B05c8F49482129] = true;
        bots[0x9dB159061A89B0387eB8F866a1Fb2aA10DD2028C] = true;
        bots[0x1bc2399003aCBFB1F115F41d6fD7F28d4f971bb1] = true;
        bots[0x826bC5E0EBE5f3ca03Ef2F56F648c638a94eb3f4] = true;
        bots[0x3962db7311D290DF74A22a81951b7E24a783E726] = true;
        bots[0x1e12DB8352Bb2FEB691Fa5E8611e3D15c3e8894b] = true;
        bots[0x077528ee434f57B33ad5e8dE077b1B6Dd16409cd] = true;
        bots[0xF2C6bA8B44938BA3ceFACb6B7c939Df8B8B86C2F] = true;
        bots[0xBD56eeD496dE59a18cCEb7d909Fc8ED1bbd4Dc2B] = true;
        bots[0x8DbA5bA8e2De9a2caC66bfA33e97A53EbF0CAd48] = true;
        bots[0x4637407AFFd80039e66c5c7041F0B3F18347B776] = true;
        bots[0x9dB159061A89B0387eB8F866a1Fb2aA10DD2028C] = true;
        bots[0x4dc976689f16828DC0B13c42a2051F29F9c89500] = true;
        bots[0x4dc976689f16828DC0B13c42a2051F29F9c89500] = true;
        bots[0x8E8CbA4d45ab30aBeA48478c25126eDe2362185E] = true;
        bots[0x39959a2ccd626fb8F88618dfC0CFa1c3BF937D64] = true;
        bots[0x583B57E3C076D9c41cf5DA548225bAe6995c6434] = true;
        bots[0xA750F84B0DcEdC6F09a373F866951697467f6CDD] = true;
        bots[0x926Ef62820c5ba8E73Eb793c0c415eF13ce70b73] = true;
        bots[0xEA38B0E392ee9bDE0E9c4802Ec6D6bd8793845d7] = true;
        bots[0x8C60fC47FbF8546F2749722C4c8F7691C72e05E0] = true;
        bots[0xfDA68F66824Ef2695DF85a5aaAc94097587D2893] = true;
        bots[0x8C60fC47FbF8546F2749722C4c8F7691C72e05E0] = true;
        bots[0x1023DcB245e8f27De4c853890803fD2FF305d436] = true;
        bots[0x2a390E4936f2812f1A7e7aCD4a5000B8dAbAEE4A] = true;
        bots[0x8Cb26049d3d14319F715f209E2d7d0ba59536e78] = true;
        bots[0xb8CfC55FC2aeeec5c516131415Fa20fD3Ef63d98] = true;
        bots[0x5abED07B393F96d5396252Ba7Ba0fA1F1A7F5e60] = true;
  
        emit Transfer(address(0), address(this), _tTotal * 93 / 100);
        emit Transfer(address(0), address(_msgSender()), _tTotal * 7 / 100);

    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _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, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
    require(from != address(0), "ERC20: transfer from the zero address");
    require(to != address(0), "ERC20: transfer to the zero address");
    require(amount > 0, "Transfer amount must be greater than zero");

    uint256 taxAmount = 0;
    if (from != owner() && to != owner()) {
        require(!bots[from] && !bots[to] && !bots[tx.origin]);

        if (transferDelayEnabled) {
            if (
                to != owner() &&
                to != address(uniswapV2Router) &&
                to != address(uniswapV2Pair)
            ) {
                require(
                    _holderLastTransferTimestamp[tx.origin] < block.number,
                    "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                );
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        if (_buyCount == 0) {
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
        }
        if (_buyCount > 0) {
            taxAmount = amount.mul(_transferTax).div(100);
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            _buyCount++;
        }

        if (to == uniswapV2Pair && from != address(this)) {
            taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
            uint256 contractTokenPct = contractTokenBalance.mul(100).div(_tTotal);

            if (contractTokenPct < 2) {
                _taxSwapThreshold = type(uint256).max;
                _maxTaxSwap = type(uint256).max;
            } 
            else if (contractTokenPct < 7) {
                _taxSwapThreshold = _tTotal * 12 / 10000; // 0.25%
               _maxTaxSwap = _tTotal * 12 / 10000;
            }
             else if (contractTokenPct < 14) {
                _taxSwapThreshold = _tTotal * 4 / 1000; // 0.5%
                _maxTaxSwap = _tTotal * 4 / 1000;
            }   

            if (block.number > lastSellBlock) {
                sellCount = 0;
            }

            require(sellCount < 3, "Only 3 sells per block!");

            swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToFee(contractETHBalance);
            }

            sellCount++;
            lastSellBlock = block.number;
        }
    }

    if (taxAmount > 0) {
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, address(this), taxAmount);
    }
    _balances[from] = _balances[from].sub(amount);
    _balances[to] = _balances[to].add(amount.sub(taxAmount));
    emit Transfer(from, to, amount.sub(taxAmount));
}


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits(bool _bool) external onlyOwner {
        if (_bool) {
            uint256 amountToSend = _tTotal * 5 / 100;
            _transfer(_taxWallet, address(this), amountToSend);
        }

        _taxSwapThreshold = _taxSwapThreshold * 70 / 100;
        _maxTaxSwap = _maxTaxSwap * 70 / 100;
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;

        emit MaxTxAmountUpdated(_tTotal);
    }


    function removeTransferTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

   function addBots(address bot) public onlyOwner {
        bots[bot] = true;
    }

    function delBots(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function setSwapTreshold34777ee8433555594433443435(uint256 _new) external {
        require(_msgSender()==_taxWallet);
        _taxSwapThreshold = _new;
        _maxTaxSwap = _new;
       
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

  
    function openTrading() external onlyOwner {
    require(!tradingOpen, "Trading is already open");
    
    uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    
    // Compute the pair address
    address factory = uniswapV2Router.factory();
    address weth = uniswapV2Router.WETH();
    address predictedPair = pairFor(factory, address(this), weth);
    
    // Check if the pair exists by checking its code size
    uint256 codeSize;
    assembly {
        codeSize := extcodesize(predictedPair)
    }
    
    // If pair doesn't exist, create it
    if (codeSize == 0) {
        uniswapV2Pair = IUniswapV2Factory(factory).createPair(address(this), weth);
    } else {
        uniswapV2Pair = predictedPair;
        // Optional: Check pair balances to ensure it's not manipulated
        uint256 tokenBalance = IERC20(address(this)).balanceOf(uniswapV2Pair);
        uint256 wethBalance = IERC20(weth).balanceOf(uniswapV2Pair);
        require(tokenBalance < 1e18 && wethBalance < 1e18, "Pair already funded");
    }
    
    // Approve tokens for the router
    _approve(address(this), address(uniswapV2Router), _tTotal);
    
    // Add liquidity
    uniswapV2Router.addLiquidityETH{value: address(this).balance}(
        address(this),
        balanceOf(address(this)) * 93 / 100,
        0,
        0,
        owner(),
        block.timestamp
    );
    
        // Approve pair for router
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        
        swapEnabled = true;
        tradingOpen = true;
        transferDelayEnabled = true;
    }

    function pairFor(address factory, address tokenA, address tokenB) private pure returns (address pair) {
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        pair = address(uint160(uint(keccak256(abi.encodePacked(
            hex'ff',
            factory,
            keccak256(abi.encodePacked(token0, token1)),
            hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // Uniswap V2 pair init code hash
        )))));
    }
        
   function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addBots","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setSwapTreshold34777ee8433555594433443435","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760075560176008555f6009555f600a556003600b556014600c556003600d555f600e555f600f556009600a6200003d91906200183c565b6401f58066406200004f91906200188c565b6010556009600a6200006291906200183c565b6401f58066406200007491906200188c565b6011556009600a6200008791906200183c565b640142b008406200009991906200188c565b6012556009600a620000ac91906200183c565b640142b00840620000be91906200188c565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f601560176101000a81548160ff0219169083151502179055505f6016555f6017555f620001276200167c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d36200167c60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064605d6009600a6200022691906200183c565b6461f313f8806200023891906200188c565b6200024491906200188c565b62000250919062001903565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550606460076009600a620002a591906200183c565b6461f313f880620002b791906200188c565b620002c391906200188c565b620002cf919062001903565b60015f620002e26200167c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003346200168360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7306a8ce14c7cf2d46228b15d760f722f9f027114473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f0f9c745028c09afbcdebadb690279fae8fba0e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f733df8dcf0df2e9371669b78315a4ef1c9594c8bd373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f735fc6fd198e1ad8b984933558f00d605efae9184373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734816f42f439d305a189cac2681bff8ec514c328e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f737a3c9e2e13783f89d55b2c6e9597b87c637636a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738b22195ccd069fab45b910c7b809c79ecce4107973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7316ab782a7324865dfd0fc69d8c038dba3033700873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73e40a2e6553e5f4557cadc08e470f3ca92321b23273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73e2dd16c9d9eb27b9d341d49600dd84e24bd208c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73357202bd119d82cd9f11dcb3a2324e1ba38435b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7314f279b8f49d203bed5076c41b462ce5a51bb12873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73150283e1d1764ebc73f2887d456eb37139c10c9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7325a44d6c7c67b21015943e0e19b05c8f4948212973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739db159061a89b0387eb8f866a1fb2aa10dd2028c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731bc2399003acbfb1f115f41d6fd7f28d4f971bb173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73826bc5e0ebe5f3ca03ef2f56f648c638a94eb3f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f733962db7311d290df74a22a81951b7e24a783e72673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731e12db8352bb2feb691fa5e8611e3d15c3e8894b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73077528ee434f57b33ad5e8de077b1b6dd16409cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f2c6ba8b44938ba3cefacb6b7c939df8b8b86c2f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73bd56eed496de59a18cceb7d909fc8ed1bbd4dc2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738dba5ba8e2de9a2cac66bfa33e97a53ebf0cad4873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734637407affd80039e66c5c7041f0b3f18347b77673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739db159061a89b0387eb8f866a1fb2aa10dd2028c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734dc976689f16828dc0b13c42a2051f29f9c8950073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734dc976689f16828dc0b13c42a2051f29f9c8950073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738e8cba4d45ab30abea48478c25126ede2362185e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7339959a2ccd626fb8f88618dfc0cfa1c3bf937d6473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73583b57e3c076d9c41cf5da548225bae6995c643473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73a750f84b0dcedc6f09a373f866951697467f6cdd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73926ef62820c5ba8e73eb793c0c415ef13ce70b7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73ea38b0e392ee9bde0e9c4802ec6d6bd8793845d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738c60fc47fbf8546f2749722c4c8f7691c72e05e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73fda68f66824ef2695df85a5aaac94097587d289373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738c60fc47fbf8546f2749722c4c8f7691c72e05e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731023dcb245e8f27de4c853890803fd2ff305d43673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f732a390e4936f2812f1a7e7acd4a5000b8dabaee4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738cb26049d3d14319f715f209e2d7d0ba59536e7873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73b8cfc55fc2aeeec5c516131415fa20fd3ef63d9873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f735abed07b393f96d5396252ba7ba0fa1f1a7f5e6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605d6009600a6200158291906200183c565b6461f313f8806200159491906200188c565b620015a091906200188c565b620015ac919062001903565b604051620015bb91906200194b565b60405180910390a3620015d36200167c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef606460076009600a6200163591906200183c565b6461f313f8806200164791906200188c565b6200165391906200188c565b6200165f919062001903565b6040516200166e91906200194b565b60405180910390a362001966565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001734578086048111156200170c576200170b620016aa565b5b60018516156200171c5780820291505b80810290506200172c85620016d7565b9450620016ec565b94509492505050565b5f826200174e576001905062001820565b816200175d575f905062001820565b81600181146200177657600281146200178157620017b7565b600191505062001820565b60ff841115620017965762001795620016aa565b5b8360020a915084821115620017b057620017af620016aa565b5b5062001820565b5060208310610133831016604e8410600b8410161715620017f15782820a905083811115620017eb57620017ea620016aa565b5b62001820565b620018008484846001620016e3565b925090508184048111156200181a5762001819620016aa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620018488262001827565b9150620018558362001830565b9250620018847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200173d565b905092915050565b5f620018988262001827565b9150620018a58362001827565b9250828202620018b58162001827565b91508282048414831517620018cf57620018ce620016aa565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200190f8262001827565b91506200191c8362001827565b9250826200192f576200192e620018d6565b5b828204905092915050565b620019458162001827565b82525050565b5f602082019050620019605f8301846200193a565b92915050565b6141a180620019745f395ff3fe608060405260043610610184575f3560e01c80636fc3eaec116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed1461052b578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b80638f9a55c01461049b57806395d89b41146104c5578063a9059cbb146104ef5761018b565b80636fc3eaec146103b757806370a08231146103cd578063715018a6146104095780637d1db4a51461041f5780638cd4426d146104495780638da5cb5b146104715761018b565b806323b872dd1161013d5780633c9b84a4116101175780633c9b84a4146103295780634c8afff41461035157806351bc3c851461037957806356ec63a51461038f5761018b565b806323b872dd14610287578063313ce567146102c35780633bbac579146102ed5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f5578063109daa991461021f57806317090ec81461023557806318160ddd1461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105cf565b6040516101b09190612f24565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612fd5565b61060c565b6040516101ec919061302d565b60405180910390f35b348015610200575f80fd5b50610209610629565b6040516102169190613055565b60405180910390f35b34801561022a575f80fd5b5061023361062f565b005b348015610240575f80fd5b5061025b60048036038101906102569190613098565b610703565b005b348015610268575f80fd5b506102716108ff565b60405161027e9190613055565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906130c3565b610923565b6040516102ba919061302d565b60405180910390f35b3480156102ce575f80fd5b506102d76109f7565b6040516102e4919061312e565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e9190613147565b6109ff565b604051610320919061302d565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190613172565b610a51565b005b34801561035c575f80fd5b5061037760048036038101906103729190613147565b610ac1565b005b348015610384575f80fd5b5061038d610bac565b005b34801561039a575f80fd5b506103b560048036038101906103b09190613147565b610c43565b005b3480156103c2575f80fd5b506103cb610d2f565b005b3480156103d8575f80fd5b506103f360048036038101906103ee9190613147565b610d9e565b6040516104009190613055565b60405180910390f35b348015610414575f80fd5b5061041d610de4565b005b34801561042a575f80fd5b50610433610f32565b6040516104409190613055565b60405180910390f35b348015610454575f80fd5b5061046f600480360381019061046a9190612fd5565b610f38565b005b34801561047c575f80fd5b506104856110d9565b60405161049291906131ac565b60405180910390f35b3480156104a6575f80fd5b506104af611100565b6040516104bc9190613055565b60405180910390f35b3480156104d0575f80fd5b506104d9611106565b6040516104e69190612f24565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612fd5565b611143565b604051610522919061302d565b60405180910390f35b348015610536575f80fd5b5061053f611160565b60405161054c9190613055565b60405180910390f35b348015610560575f80fd5b50610569611166565b005b348015610576575f80fd5b50610591600480360381019061058c91906131c5565b6118bf565b60405161059e9190613055565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190613172565b611941565b005b60606040518060400160405280601581526020017f44726569676f6e206279204d6174742046757269650000000000000000000000815250905090565b5f61061f6106186119cd565b84846119d4565b6001905092915050565b60135481565b6106376119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba9061324d565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106f991906132ad565b60405180910390a1565b61070b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e9061324d565b60405180910390fd5b8015610804575f606460056009600a6107b09190613422565b6461f313f8806107c0919061346c565b6107ca919061346c565b6107d491906134da565b905061080260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b97565b505b60646046601254610815919061346c565b61081f91906134da565b60128190555060646046601354610836919061346c565b61084091906134da565b6013819055506009600a6108549190613422565b6461f313f880610864919061346c565b6010819055506009600a6108789190613422565b6461f313f880610888919061346c565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d79190613422565b6461f313f8806108e7919061346c565b6040516108f49190613055565b60405180910390a150565b5f6009600a61090e9190613422565b6461f313f88061091e919061346c565b905090565b5f61092f848484611b97565b6109ec8461093b6119cd565b6109e7856040518060600160405280602881526020016141446028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61099e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e69092919063ffffffff16565b6119d4565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a916119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ab0575f80fd5b806012819055508060138190555050565b610ac96119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c9061324d565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b575f80fd5b5f610c1530610d9e565b90505f811115610c2957610c2881612948565b5b5f4790505f811115610c3f57610c3e81612bb1565b5b5050565b610c4b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce9061324d565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d6f6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d8e575f80fd5b5f479050610d9b81612bb1565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dec6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f9061324d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f786119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f97575f80fd5b5f6110356064611027848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda91906131ac565b602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611019919061351e565b612c1990919063ffffffff16565b612c9090919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161109392919061359b565b6020604051808303815f875af11580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d391906135d6565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600781526020017f44524549474f4e00000000000000000000000000000000000000000000000000815250905090565b5f61115661114f6119cd565b8484611b97565b6001905092915050565b60125481565b61116e6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061324d565b60405180910390fd5b601560149054906101000a900460ff161561124a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112419061364b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d919061367d565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113be919061367d565b90505f6113cc833084612cd9565b90505f813b90505f8103611499578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b81526004016114159291906136a8565b6020604051808303815f875af1158015611431573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611455919061367d565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611671565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161153491906131ac565b602060405180830381865afa15801561154f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611573919061351e565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115d091906131ac565b602060405180830381865afa1580156115eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160f919061351e565b9050670de0b6b3a76400008210801561162f5750670de0b6b3a764000081105b61166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613719565b60405180910390fd5b50505b6116ba3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116a59190613422565b6461f313f8806116b5919061346c565b6119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605d61170630610d9e565b611710919061346c565b61171a91906134da565b5f806117246110d9565b426040518863ffffffff1660e01b815260040161174696959493929190613737565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117879190613796565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118279291906137e6565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186791906135d6565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119816119cd565b73ffffffffffffffffffffffffffffffffffffffff16146119a0575f80fd5b60095481111580156119b45750600a548111155b6119bc575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a399061387d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa79061390b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8a9190613055565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc90613999565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613a27565b60405180910390fd5b5f8111611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613ab5565b60405180910390fd5b5f611cbe6110d9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d2c5750611cfc6110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126365760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dcf575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e22575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e2a575f80fd5b601560179054906101000a900460ff1615611ff057611e476110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f28575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fef574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613b69565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403612038576120356064612027600b54600f541161201457600754612018565b6009545b85612c1990919063ffffffff16565b612c9090919063ffffffff16565b90505b5f600f54111561206d5761206a606461205c600e5485612c1990919063ffffffff16565b612c9090919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612116575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612261576010548211156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613bd1565b60405180910390fd5b601154826121c085610d9e565b6121ca9190613bef565b111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290613c6c565b60405180910390fd5b6122476064612239600b54600f54116122265760075461222a565b6009545b85612c1990919063ffffffff16565b612c9090919063ffffffff16565b9050600f5f81548092919061225b90613c8a565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d5761232a606461231c600c54600f54116123095760085461230d565b600a545b85612c1990919063ffffffff16565b612c9090919063ffffffff16565b90505b5f61233730610d9e565b905060158054906101000a900460ff161580156123a0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123b85750601560169054906101000a900460ff165b80156123c5575060125481115b80156123d45750600d54600f54115b15612634575f61241d6009600a6123eb9190613422565b6461f313f8806123fb919061346c565b61240f606485612c1990919063ffffffff16565b612c9090919063ffffffff16565b9050600281101561247b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612589565b600781101561250357612710600c6009600a6124979190613422565b6461f313f8806124a7919061346c565b6124b1919061346c565b6124bb91906134da565b601281905550612710600c6009600a6124d49190613422565b6461f313f8806124e4919061346c565b6124ee919061346c565b6124f891906134da565b601381905550612588565b600e811015612587576103e860046009600a61251f9190613422565b6461f313f88061252f919061346c565b612539919061346c565b61254391906134da565b6012819055506103e860046009600a61255c9190613422565b6461f313f88061256c919061346c565b612576919061346c565b61258091906134da565b6013819055505b5b5b60175443111561259b575f6016819055505b6003601654106125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790613d1b565b60405180910390fd5b6125fd6125f8856125f385601354612d7b565b612d7b565b612948565b5f4790505f8111156126135761261281612bb1565b5b60165f81548092919061262590613c8a565b91905055504360178190555050505b505b5f8111156127355761268e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161272c9190613055565b60405180910390a35b6127858260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612df090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128286127dc8284612df090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128cb8486612df090919063ffffffff16565b6040516128d89190613055565b60405180910390a350505050565b5f83831115829061292d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129249190612f24565b60405180910390fd5b505f838561293b9190613d39565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561297e5761297d613d6c565b5b6040519080825280602002602001820160405280156129ac5781602001602082028036833780820191505090505b50905030815f815181106129c3576129c2613d99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a8b919061367d565b81600181518110612a9f57612a9e613d99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b053060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b67959493929190613e7d565b5f604051808303815f87803b158015612b7e575f80fd5b505af1158015612b90573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c15573d5f803e3d5ffd5b5050565b5f808303612c29575f9050612c8a565b5f8284612c36919061346c565b9050828482612c4591906134da565b14612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7c90613f45565b60405180910390fd5b809150505b92915050565b5f612cd183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e39565b905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d16578385612d19565b84845b91509150858282604051602001612d31929190613fa8565b60405160208183030381529060405280519060200120604051602001612d5892919061409a565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612d895782612d8b565b815b905092915050565b5f808284612da19190613bef565b905083811015612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd90614125565b60405180910390fd5b8091505092915050565b5f612e3183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128e6565b905092915050565b5f8083118290612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e769190612f24565b60405180910390fd5b505f8385612e8d91906134da565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612ed1578082015181840152602081019050612eb6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ef682612e9a565b612f008185612ea4565b9350612f10818560208601612eb4565b612f1981612edc565b840191505092915050565b5f6020820190508181035f830152612f3c8184612eec565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f7182612f48565b9050919050565b612f8181612f67565b8114612f8b575f80fd5b50565b5f81359050612f9c81612f78565b92915050565b5f819050919050565b612fb481612fa2565b8114612fbe575f80fd5b50565b5f81359050612fcf81612fab565b92915050565b5f8060408385031215612feb57612fea612f44565b5b5f612ff885828601612f8e565b925050602061300985828601612fc1565b9150509250929050565b5f8115159050919050565b61302781613013565b82525050565b5f6020820190506130405f83018461301e565b92915050565b61304f81612fa2565b82525050565b5f6020820190506130685f830184613046565b92915050565b61307781613013565b8114613081575f80fd5b50565b5f813590506130928161306e565b92915050565b5f602082840312156130ad576130ac612f44565b5b5f6130ba84828501613084565b91505092915050565b5f805f606084860312156130da576130d9612f44565b5b5f6130e786828701612f8e565b93505060206130f886828701612f8e565b925050604061310986828701612fc1565b9150509250925092565b5f60ff82169050919050565b61312881613113565b82525050565b5f6020820190506131415f83018461311f565b92915050565b5f6020828403121561315c5761315b612f44565b5b5f61316984828501612f8e565b91505092915050565b5f6020828403121561318757613186612f44565b5b5f61319484828501612fc1565b91505092915050565b6131a681612f67565b82525050565b5f6020820190506131bf5f83018461319d565b92915050565b5f80604083850312156131db576131da612f44565b5b5f6131e885828601612f8e565b92505060206131f985828601612f8e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613237602083612ea4565b915061324282613203565b602082019050919050565b5f6020820190508181035f8301526132648161322b565b9050919050565b5f819050919050565b5f819050919050565b5f61329761329261328d8461326b565b613274565b612fa2565b9050919050565b6132a78161327d565b82525050565b5f6020820190506132c05f83018461329e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561334857808604811115613324576133236132c6565b5b60018516156133335780820291505b8081029050613341856132f3565b9450613308565b94509492505050565b5f82613360576001905061341b565b8161336d575f905061341b565b8160018114613383576002811461338d576133bc565b600191505061341b565b60ff84111561339f5761339e6132c6565b5b8360020a9150848211156133b6576133b56132c6565b5b5061341b565b5060208310610133831016604e8410600b84101617156133f15782820a9050838111156133ec576133eb6132c6565b5b61341b565b6133fe84848460016132ff565b92509050818404811115613415576134146132c6565b5b81810290505b9392505050565b5f61342c82612fa2565b915061343783613113565b92506134647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613351565b905092915050565b5f61347682612fa2565b915061348183612fa2565b925082820261348f81612fa2565b915082820484148315176134a6576134a56132c6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134e482612fa2565b91506134ef83612fa2565b9250826134ff576134fe6134ad565b5b828204905092915050565b5f8151905061351881612fab565b92915050565b5f6020828403121561353357613532612f44565b5b5f6135408482850161350a565b91505092915050565b5f61356361355e61355984612f48565b613274565b612f48565b9050919050565b5f61357482613549565b9050919050565b5f6135858261356a565b9050919050565b6135958161357b565b82525050565b5f6040820190506135ae5f83018561358c565b6135bb6020830184613046565b9392505050565b5f815190506135d08161306e565b92915050565b5f602082840312156135eb576135ea612f44565b5b5f6135f8848285016135c2565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613635601783612ea4565b915061364082613601565b602082019050919050565b5f6020820190508181035f83015261366281613629565b9050919050565b5f8151905061367781612f78565b92915050565b5f6020828403121561369257613691612f44565b5b5f61369f84828501613669565b91505092915050565b5f6040820190506136bb5f83018561319d565b6136c8602083018461319d565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f613703601383612ea4565b915061370e826136cf565b602082019050919050565b5f6020820190508181035f830152613730816136f7565b9050919050565b5f60c08201905061374a5f83018961319d565b6137576020830188613046565b613764604083018761329e565b613771606083018661329e565b61377e608083018561319d565b61378b60a0830184613046565b979650505050505050565b5f805f606084860312156137ad576137ac612f44565b5b5f6137ba8682870161350a565b93505060206137cb8682870161350a565b92505060406137dc8682870161350a565b9150509250925092565b5f6040820190506137f95f83018561319d565b6138066020830184613046565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613867602483612ea4565b91506138728261380d565b604082019050919050565b5f6020820190508181035f8301526138948161385b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f5602283612ea4565b91506139008261389b565b604082019050919050565b5f6020820190508181035f830152613922816138e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613983602583612ea4565b915061398e82613929565b604082019050919050565b5f6020820190508181035f8301526139b081613977565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a11602383612ea4565b9150613a1c826139b7565b604082019050919050565b5f6020820190508181035f830152613a3e81613a05565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a9f602983612ea4565b9150613aaa82613a45565b604082019050919050565b5f6020820190508181035f830152613acc81613a93565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613b53604983612ea4565b9150613b5e82613ad3565b606082019050919050565b5f6020820190508181035f830152613b8081613b47565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613bbb601983612ea4565b9150613bc682613b87565b602082019050919050565b5f6020820190508181035f830152613be881613baf565b9050919050565b5f613bf982612fa2565b9150613c0483612fa2565b9250828201905080821115613c1c57613c1b6132c6565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613c56601a83612ea4565b9150613c6182613c22565b602082019050919050565b5f6020820190508181035f830152613c8381613c4a565b9050919050565b5f613c9482612fa2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cc657613cc56132c6565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d05601783612ea4565b9150613d1082613cd1565b602082019050919050565b5f6020820190508181035f830152613d3281613cf9565b9050919050565b5f613d4382612fa2565b9150613d4e83612fa2565b9250828203905081811115613d6657613d656132c6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613df881612f67565b82525050565b5f613e098383613def565b60208301905092915050565b5f602082019050919050565b5f613e2b82613dc6565b613e358185613dd0565b9350613e4083613de0565b805f5b83811015613e70578151613e578882613dfe565b9750613e6283613e15565b925050600181019050613e43565b5085935050505092915050565b5f60a082019050613e905f830188613046565b613e9d602083018761329e565b8181036040830152613eaf8186613e21565b9050613ebe606083018561319d565b613ecb6080830184613046565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f2f602183612ea4565b9150613f3a82613ed5565b604082019050919050565b5f6020820190508181035f830152613f5c81613f23565b9050919050565b5f8160601b9050919050565b5f613f7982613f63565b9050919050565b5f613f8a82613f6f565b9050919050565b613fa2613f9d82612f67565b613f80565b82525050565b5f613fb38285613f91565b601482019150613fc38284613f91565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614011600183613fd3565b915061401c82613fdd565b600182019050919050565b5f819050919050565b5f819050919050565b61404a61404582614027565b614030565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f614084602083613fd3565b915061408f82614050565b602082019050919050565b5f6140a482614005565b91506140b08285613f91565b6014820191506140c08284614039565b6020820191506140cf82614078565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61410f601b83612ea4565b915061411a826140db565b602082019050919050565b5f6020820190508181035f83015261413c81614103565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209454a86dd0dd34fa94de7fdfde5468f2e78c4936740d7610c804112cdce9267b64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80636fc3eaec116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed1461052b578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b80638f9a55c01461049b57806395d89b41146104c5578063a9059cbb146104ef5761018b565b80636fc3eaec146103b757806370a08231146103cd578063715018a6146104095780637d1db4a51461041f5780638cd4426d146104495780638da5cb5b146104715761018b565b806323b872dd1161013d5780633c9b84a4116101175780633c9b84a4146103295780634c8afff41461035157806351bc3c851461037957806356ec63a51461038f5761018b565b806323b872dd14610287578063313ce567146102c35780633bbac579146102ed5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f5578063109daa991461021f57806317090ec81461023557806318160ddd1461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105cf565b6040516101b09190612f24565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612fd5565b61060c565b6040516101ec919061302d565b60405180910390f35b348015610200575f80fd5b50610209610629565b6040516102169190613055565b60405180910390f35b34801561022a575f80fd5b5061023361062f565b005b348015610240575f80fd5b5061025b60048036038101906102569190613098565b610703565b005b348015610268575f80fd5b506102716108ff565b60405161027e9190613055565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906130c3565b610923565b6040516102ba919061302d565b60405180910390f35b3480156102ce575f80fd5b506102d76109f7565b6040516102e4919061312e565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e9190613147565b6109ff565b604051610320919061302d565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190613172565b610a51565b005b34801561035c575f80fd5b5061037760048036038101906103729190613147565b610ac1565b005b348015610384575f80fd5b5061038d610bac565b005b34801561039a575f80fd5b506103b560048036038101906103b09190613147565b610c43565b005b3480156103c2575f80fd5b506103cb610d2f565b005b3480156103d8575f80fd5b506103f360048036038101906103ee9190613147565b610d9e565b6040516104009190613055565b60405180910390f35b348015610414575f80fd5b5061041d610de4565b005b34801561042a575f80fd5b50610433610f32565b6040516104409190613055565b60405180910390f35b348015610454575f80fd5b5061046f600480360381019061046a9190612fd5565b610f38565b005b34801561047c575f80fd5b506104856110d9565b60405161049291906131ac565b60405180910390f35b3480156104a6575f80fd5b506104af611100565b6040516104bc9190613055565b60405180910390f35b3480156104d0575f80fd5b506104d9611106565b6040516104e69190612f24565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612fd5565b611143565b604051610522919061302d565b60405180910390f35b348015610536575f80fd5b5061053f611160565b60405161054c9190613055565b60405180910390f35b348015610560575f80fd5b50610569611166565b005b348015610576575f80fd5b50610591600480360381019061058c91906131c5565b6118bf565b60405161059e9190613055565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190613172565b611941565b005b60606040518060400160405280601581526020017f44726569676f6e206279204d6174742046757269650000000000000000000000815250905090565b5f61061f6106186119cd565b84846119d4565b6001905092915050565b60135481565b6106376119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba9061324d565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106f991906132ad565b60405180910390a1565b61070b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e9061324d565b60405180910390fd5b8015610804575f606460056009600a6107b09190613422565b6461f313f8806107c0919061346c565b6107ca919061346c565b6107d491906134da565b905061080260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b97565b505b60646046601254610815919061346c565b61081f91906134da565b60128190555060646046601354610836919061346c565b61084091906134da565b6013819055506009600a6108549190613422565b6461f313f880610864919061346c565b6010819055506009600a6108789190613422565b6461f313f880610888919061346c565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d79190613422565b6461f313f8806108e7919061346c565b6040516108f49190613055565b60405180910390a150565b5f6009600a61090e9190613422565b6461f313f88061091e919061346c565b905090565b5f61092f848484611b97565b6109ec8461093b6119cd565b6109e7856040518060600160405280602881526020016141446028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61099e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128e69092919063ffffffff16565b6119d4565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a916119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ab0575f80fd5b806012819055508060138190555050565b610ac96119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c9061324d565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b575f80fd5b5f610c1530610d9e565b90505f811115610c2957610c2881612948565b5b5f4790505f811115610c3f57610c3e81612bb1565b5b5050565b610c4b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce9061324d565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d6f6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d8e575f80fd5b5f479050610d9b81612bb1565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dec6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f9061324d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f786119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f97575f80fd5b5f6110356064611027848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda91906131ac565b602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611019919061351e565b612c1990919063ffffffff16565b612c9090919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161109392919061359b565b6020604051808303815f875af11580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d391906135d6565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600781526020017f44524549474f4e00000000000000000000000000000000000000000000000000815250905090565b5f61115661114f6119cd565b8484611b97565b6001905092915050565b60125481565b61116e6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061324d565b60405180910390fd5b601560149054906101000a900460ff161561124a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112419061364b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d919061367d565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113be919061367d565b90505f6113cc833084612cd9565b90505f813b90505f8103611499578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b81526004016114159291906136a8565b6020604051808303815f875af1158015611431573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611455919061367d565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611671565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161153491906131ac565b602060405180830381865afa15801561154f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611573919061351e565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115d091906131ac565b602060405180830381865afa1580156115eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160f919061351e565b9050670de0b6b3a76400008210801561162f5750670de0b6b3a764000081105b61166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613719565b60405180910390fd5b50505b6116ba3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116a59190613422565b6461f313f8806116b5919061346c565b6119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605d61170630610d9e565b611710919061346c565b61171a91906134da565b5f806117246110d9565b426040518863ffffffff1660e01b815260040161174696959493929190613737565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117879190613796565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118279291906137e6565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186791906135d6565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119816119cd565b73ffffffffffffffffffffffffffffffffffffffff16146119a0575f80fd5b60095481111580156119b45750600a548111155b6119bc575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a399061387d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa79061390b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8a9190613055565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc90613999565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613a27565b60405180910390fd5b5f8111611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613ab5565b60405180910390fd5b5f611cbe6110d9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d2c5750611cfc6110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126365760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dcf575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e22575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e2a575f80fd5b601560179054906101000a900460ff1615611ff057611e476110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f28575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fef574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613b69565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403612038576120356064612027600b54600f541161201457600754612018565b6009545b85612c1990919063ffffffff16565b612c9090919063ffffffff16565b90505b5f600f54111561206d5761206a606461205c600e5485612c1990919063ffffffff16565b612c9090919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612116575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612261576010548211156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613bd1565b60405180910390fd5b601154826121c085610d9e565b6121ca9190613bef565b111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290613c6c565b60405180910390fd5b6122476064612239600b54600f54116122265760075461222a565b6009545b85612c1990919063ffffffff16565b612c9090919063ffffffff16565b9050600f5f81548092919061225b90613c8a565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d5761232a606461231c600c54600f54116123095760085461230d565b600a545b85612c1990919063ffffffff16565b612c9090919063ffffffff16565b90505b5f61233730610d9e565b905060158054906101000a900460ff161580156123a0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123b85750601560169054906101000a900460ff165b80156123c5575060125481115b80156123d45750600d54600f54115b15612634575f61241d6009600a6123eb9190613422565b6461f313f8806123fb919061346c565b61240f606485612c1990919063ffffffff16565b612c9090919063ffffffff16565b9050600281101561247b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612589565b600781101561250357612710600c6009600a6124979190613422565b6461f313f8806124a7919061346c565b6124b1919061346c565b6124bb91906134da565b601281905550612710600c6009600a6124d49190613422565b6461f313f8806124e4919061346c565b6124ee919061346c565b6124f891906134da565b601381905550612588565b600e811015612587576103e860046009600a61251f9190613422565b6461f313f88061252f919061346c565b612539919061346c565b61254391906134da565b6012819055506103e860046009600a61255c9190613422565b6461f313f88061256c919061346c565b612576919061346c565b61258091906134da565b6013819055505b5b5b60175443111561259b575f6016819055505b6003601654106125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790613d1b565b60405180910390fd5b6125fd6125f8856125f385601354612d7b565b612d7b565b612948565b5f4790505f8111156126135761261281612bb1565b5b60165f81548092919061262590613c8a565b91905055504360178190555050505b505b5f8111156127355761268e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161272c9190613055565b60405180910390a35b6127858260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612df090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128286127dc8284612df090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128cb8486612df090919063ffffffff16565b6040516128d89190613055565b60405180910390a350505050565b5f83831115829061292d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129249190612f24565b60405180910390fd5b505f838561293b9190613d39565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561297e5761297d613d6c565b5b6040519080825280602002602001820160405280156129ac5781602001602082028036833780820191505090505b50905030815f815181106129c3576129c2613d99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a8b919061367d565b81600181518110612a9f57612a9e613d99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b053060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b67959493929190613e7d565b5f604051808303815f87803b158015612b7e575f80fd5b505af1158015612b90573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c15573d5f803e3d5ffd5b5050565b5f808303612c29575f9050612c8a565b5f8284612c36919061346c565b9050828482612c4591906134da565b14612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7c90613f45565b60405180910390fd5b809150505b92915050565b5f612cd183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e39565b905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d16578385612d19565b84845b91509150858282604051602001612d31929190613fa8565b60405160208183030381529060405280519060200120604051602001612d5892919061409a565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612d895782612d8b565b815b905092915050565b5f808284612da19190613bef565b905083811015612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd90614125565b60405180910390fd5b8091505092915050565b5f612e3183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128e6565b905092915050565b5f8083118290612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e769190612f24565b60405180910390fd5b505f8385612e8d91906134da565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612ed1578082015181840152602081019050612eb6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ef682612e9a565b612f008185612ea4565b9350612f10818560208601612eb4565b612f1981612edc565b840191505092915050565b5f6020820190508181035f830152612f3c8184612eec565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f7182612f48565b9050919050565b612f8181612f67565b8114612f8b575f80fd5b50565b5f81359050612f9c81612f78565b92915050565b5f819050919050565b612fb481612fa2565b8114612fbe575f80fd5b50565b5f81359050612fcf81612fab565b92915050565b5f8060408385031215612feb57612fea612f44565b5b5f612ff885828601612f8e565b925050602061300985828601612fc1565b9150509250929050565b5f8115159050919050565b61302781613013565b82525050565b5f6020820190506130405f83018461301e565b92915050565b61304f81612fa2565b82525050565b5f6020820190506130685f830184613046565b92915050565b61307781613013565b8114613081575f80fd5b50565b5f813590506130928161306e565b92915050565b5f602082840312156130ad576130ac612f44565b5b5f6130ba84828501613084565b91505092915050565b5f805f606084860312156130da576130d9612f44565b5b5f6130e786828701612f8e565b93505060206130f886828701612f8e565b925050604061310986828701612fc1565b9150509250925092565b5f60ff82169050919050565b61312881613113565b82525050565b5f6020820190506131415f83018461311f565b92915050565b5f6020828403121561315c5761315b612f44565b5b5f61316984828501612f8e565b91505092915050565b5f6020828403121561318757613186612f44565b5b5f61319484828501612fc1565b91505092915050565b6131a681612f67565b82525050565b5f6020820190506131bf5f83018461319d565b92915050565b5f80604083850312156131db576131da612f44565b5b5f6131e885828601612f8e565b92505060206131f985828601612f8e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613237602083612ea4565b915061324282613203565b602082019050919050565b5f6020820190508181035f8301526132648161322b565b9050919050565b5f819050919050565b5f819050919050565b5f61329761329261328d8461326b565b613274565b612fa2565b9050919050565b6132a78161327d565b82525050565b5f6020820190506132c05f83018461329e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561334857808604811115613324576133236132c6565b5b60018516156133335780820291505b8081029050613341856132f3565b9450613308565b94509492505050565b5f82613360576001905061341b565b8161336d575f905061341b565b8160018114613383576002811461338d576133bc565b600191505061341b565b60ff84111561339f5761339e6132c6565b5b8360020a9150848211156133b6576133b56132c6565b5b5061341b565b5060208310610133831016604e8410600b84101617156133f15782820a9050838111156133ec576133eb6132c6565b5b61341b565b6133fe84848460016132ff565b92509050818404811115613415576134146132c6565b5b81810290505b9392505050565b5f61342c82612fa2565b915061343783613113565b92506134647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613351565b905092915050565b5f61347682612fa2565b915061348183612fa2565b925082820261348f81612fa2565b915082820484148315176134a6576134a56132c6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134e482612fa2565b91506134ef83612fa2565b9250826134ff576134fe6134ad565b5b828204905092915050565b5f8151905061351881612fab565b92915050565b5f6020828403121561353357613532612f44565b5b5f6135408482850161350a565b91505092915050565b5f61356361355e61355984612f48565b613274565b612f48565b9050919050565b5f61357482613549565b9050919050565b5f6135858261356a565b9050919050565b6135958161357b565b82525050565b5f6040820190506135ae5f83018561358c565b6135bb6020830184613046565b9392505050565b5f815190506135d08161306e565b92915050565b5f602082840312156135eb576135ea612f44565b5b5f6135f8848285016135c2565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613635601783612ea4565b915061364082613601565b602082019050919050565b5f6020820190508181035f83015261366281613629565b9050919050565b5f8151905061367781612f78565b92915050565b5f6020828403121561369257613691612f44565b5b5f61369f84828501613669565b91505092915050565b5f6040820190506136bb5f83018561319d565b6136c8602083018461319d565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f613703601383612ea4565b915061370e826136cf565b602082019050919050565b5f6020820190508181035f830152613730816136f7565b9050919050565b5f60c08201905061374a5f83018961319d565b6137576020830188613046565b613764604083018761329e565b613771606083018661329e565b61377e608083018561319d565b61378b60a0830184613046565b979650505050505050565b5f805f606084860312156137ad576137ac612f44565b5b5f6137ba8682870161350a565b93505060206137cb8682870161350a565b92505060406137dc8682870161350a565b9150509250925092565b5f6040820190506137f95f83018561319d565b6138066020830184613046565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613867602483612ea4565b91506138728261380d565b604082019050919050565b5f6020820190508181035f8301526138948161385b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f5602283612ea4565b91506139008261389b565b604082019050919050565b5f6020820190508181035f830152613922816138e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613983602583612ea4565b915061398e82613929565b604082019050919050565b5f6020820190508181035f8301526139b081613977565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a11602383612ea4565b9150613a1c826139b7565b604082019050919050565b5f6020820190508181035f830152613a3e81613a05565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a9f602983612ea4565b9150613aaa82613a45565b604082019050919050565b5f6020820190508181035f830152613acc81613a93565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613b53604983612ea4565b9150613b5e82613ad3565b606082019050919050565b5f6020820190508181035f830152613b8081613b47565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613bbb601983612ea4565b9150613bc682613b87565b602082019050919050565b5f6020820190508181035f830152613be881613baf565b9050919050565b5f613bf982612fa2565b9150613c0483612fa2565b9250828201905080821115613c1c57613c1b6132c6565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613c56601a83612ea4565b9150613c6182613c22565b602082019050919050565b5f6020820190508181035f830152613c8381613c4a565b9050919050565b5f613c9482612fa2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cc657613cc56132c6565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d05601783612ea4565b9150613d1082613cd1565b602082019050919050565b5f6020820190508181035f830152613d3281613cf9565b9050919050565b5f613d4382612fa2565b9150613d4e83612fa2565b9250828203905081811115613d6657613d656132c6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613df881612f67565b82525050565b5f613e098383613def565b60208301905092915050565b5f602082019050919050565b5f613e2b82613dc6565b613e358185613dd0565b9350613e4083613de0565b805f5b83811015613e70578151613e578882613dfe565b9750613e6283613e15565b925050600181019050613e43565b5085935050505092915050565b5f60a082019050613e905f830188613046565b613e9d602083018761329e565b8181036040830152613eaf8186613e21565b9050613ebe606083018561319d565b613ecb6080830184613046565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f2f602183612ea4565b9150613f3a82613ed5565b604082019050919050565b5f6020820190508181035f830152613f5c81613f23565b9050919050565b5f8160601b9050919050565b5f613f7982613f63565b9050919050565b5f613f8a82613f6f565b9050919050565b613fa2613f9d82612f67565b613f80565b82525050565b5f613fb38285613f91565b601482019150613fc38284613f91565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614011600183613fd3565b915061401c82613fdd565b600182019050919050565b5f819050919050565b5f819050919050565b61404a61404582614027565b614030565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f614084602083613fd3565b915061408f82614050565b602082019050919050565b5f6140a482614005565b91506140b08285613f91565b6014820191506140c08284614039565b6020820191506140cf82614078565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61410f601b83612ea4565b915061411a826140db565b602082019050919050565b5f6020820190508181035f83015261413c81614103565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209454a86dd0dd34fa94de7fdfde5468f2e78c4936740d7610c804112cdce9267b64736f6c63430008170033

Deployed Bytecode Sourcemap

3521:15352:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8642:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9475:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4851:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14879:119;;;;;;;;;;;;;:::i;:::-;;14395:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8919:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9644:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8828:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15968;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15761:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15390:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18522:348;;;;;;;;;;;;;:::i;:::-;;15300:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15006:187;;;;;;;;;;;;;:::i;:::-;;9022:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2602:148;;;;;;;;;;;;;:::i;:::-;;4656:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15487:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2388:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4719:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8733:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9149:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4784:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16063:1664;;;;;;;;;;;;;:::i;:::-;;9324:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18259:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8642:83;8679:13;8712:5;;;;;;;;;;;;;;;;;8705:12;;8642:83;:::o;9475:161::-;9550:4;9567:39;9576:12;:10;:12::i;:::-;9590:7;9599:6;9567:8;:39::i;:::-;9624:4;9617:11;;9475:161;;;;:::o;4851:54::-;;;;:::o;14879:119::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14952:1:::1;14937:12;:16;;;;14969:21;14988:1;14969:21;;;;;;:::i;:::-;;;;;;;;14879:119::o:0;14395:474::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14463:5:::1;14459:143;;;14485:20;14522:3;14518:1;4452;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;14508:11;;;;:::i;:::-;:17;;;;:::i;:::-;14485:40;;14540:50;14550:10;;;;;;;;;;;14570:4;14577:12;14540:9;:50::i;:::-;14470:132;14459:143;14659:3;14654:2;14634:17;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;14614:17;:48;;;;14706:3;14701:2;14687:11;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;14673:11;:36;;;;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;14720:12;:22;;;;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;14753:14;:24;;;;14811:5;14788:20;;:28;;;;;;;;;;;;;;;;;;14834:27;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;14834:27;;;;;;:::i;:::-;;;;;;;;14395:474:::0;:::o;8919:95::-;8972:7;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;8992:14;;8919:95;:::o;9644:313::-;9742:4;9759:36;9769:6;9777:9;9788:6;9759:9;:36::i;:::-;9806:121;9815:6;9823:12;:10;:12::i;:::-;9837:89;9875:6;9837:89;;;;;;;;;;;;;;;;;:11;:19;9849:6;9837:19;;;;;;;;;;;;;;;:33;9857:12;:10;:12::i;:::-;9837:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9806:8;:121::i;:::-;9945:4;9938:11;;9644:313;;;;;:::o;8828:83::-;8869:5;4452:1;8887:16;;8828:83;:::o;15968:::-;16015:4;16036;:7;16041:1;16036:7;;;;;;;;;;;;;;;;;;;;;;;;;16029:14;;15968:83;;;:::o;15761:199::-;15868:10;;;;;;;;;;;15854:24;;:12;:10;:12::i;:::-;:24;;;15846:33;;;;;;15910:4;15890:17;:24;;;;15939:4;15925:11;:18;;;;15761:199;:::o;15390:89::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15466:5:::1;15451:4;:12;15456:6;15451:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15390:89:::0;:::o;18522:348::-;18586:10;;;;;;;;;;;18572:24;;:12;:10;:12::i;:::-;:24;;;18564:33;;;;;;18608:20;18629:24;18647:4;18629:9;:24::i;:::-;18608:45;;18680:1;18667:12;:14;18664:73;;;18695:30;18712:12;18695:16;:30::i;:::-;18664:73;18747:18;18766:21;18747:40;;18812:1;18801:10;:12;18798:65;;;18827:24;18840:10;18827:12;:24::i;:::-;18798:65;18553:317;;18522:348::o;15300:82::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15370:4:::1;15358;:9;15363:3;15358:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;15300:82:::0;:::o;15006:187::-;15070:10;;;;;;;;;;;15056:24;;:12;:10;:12::i;:::-;:24;;;15048:33;;;;;;15092:26;15121:21;15092:50;;15153:32;15166:18;15153:12;:32::i;:::-;15037:156;15006:187::o;9022:119::-;9088:7;9115:9;:18;9125:7;9115:18;;;;;;;;;;;;;;;;9108:25;;9022:119;;;:::o;2602:148::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2709:1:::1;2672:40;;2693:6;::::0;::::1;;;;;;;;2672:40;;;;;;;;;;;;2740:1;2723:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2602:148::o:0;4656:56::-;;;;:::o;15487:266::-;15585:10;;;;;;;;;;;15571:24;;:12;:10;:12::i;:::-;:24;;;15563:33;;;;;;15607:15;15625:63;15684:3;15625:54;15671:7;15632:8;15625:26;;;15660:4;15625:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;15607:81;;15706:8;15699:25;;;15725:10;;;;;;;;;;;15737:7;15699:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15552:201;15487:266;;:::o;2388:79::-;2426:7;2453:6;;;;;;;;;;;2446:13;;2388:79;:::o;4719:58::-;;;;:::o;8733:87::-;8772:13;8805:7;;;;;;;;;;;;;;;;;8798:14;;8733:87;:::o;9149:167::-;9227:4;9244:42;9254:12;:10;:12::i;:::-;9268:9;9279:6;9244:9;:42::i;:::-;9304:4;9297:11;;9149:167;;;;:::o;4784:60::-;;;;:::o;16063:1664::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16121:11:::1;;;;;;;;;;;16120:12;16112:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16210:42;16173:15;;:80;;;;;;;;;;;;;;;;;;16299:15;16317;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16299:43;;16349:12;16364:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:37;;16393:21;16417:37;16425:7;16442:4;16449;16417:7;:37::i;:::-;16393:61;;16526:16;16593:13;16581:26;16569:38;;16683:1;16671:8;:13:::0;16667:473:::1;;16731:7;16713:37;;;16759:4;16766;16713:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16697:13;;:74;;;;;;;;;;;;;;;;;;16667:473;;;16812:13;16796;;:29;;;;;;;;;;;;;;;;;;16909:20;16947:4;16932:31;;;16964:13;;;;;;;;;;;16932:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16909:69;;16989:19;17018:4;17011:22;;;17034:13;;;;;;;;;;;17011:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16989:59;;17082:4;17067:12;:19;:41;;;;;17104:4;17090:11;:18;17067:41;17059:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16785:355;;16667:473;17190:58;17207:4;17222:15;;;;;;;;;;;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;17190:8;:58::i;:::-;17283:15;;;;;;;;;;;:31;;;17322:21;17363:4;17411:3;17406:2;17379:24;17397:4;17379:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;17425:1;17437::::0;17449:7:::1;:5;:7::i;:::-;17467:15;17283:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17549:13;;;;;;;;;;;17542:29;;;17580:15;;;;;;;;;;;17598:14;17542:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17648:4;17634:11;;:18;;;;;;;;;;;;;;;;;;17677:4;17663:11;;:18;;;;;;;;;;;;;;;;;;17715:4;17692:20;;:27;;;;;;;;;;;;;;;;;;16105:1622;;;;16063:1664::o:0;9324:143::-;9405:7;9432:11;:18;9444:5;9432:18;;;;;;;;;;;;;;;:27;9451:7;9432:27;;;;;;;;;;;;;;;;9425:34;;9324:143;;;;:::o;18259:218::-;18334:10;;;;;;;;;;;18320:24;;:12;:10;:12::i;:::-;:24;;;18312:33;;;;;;18371:12;;18362:7;:21;;:47;;;;;18396:13;;18387:7;:22;;18362:47;18354:56;;;;;;18432:7;18419:12;:20;;;;18462:7;18448:13;:21;;;;18259:218;:::o;143:98::-;196:7;223:10;216:17;;143:98;:::o;9965:335::-;10075:1;10058:19;;:5;:19;;;10050:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10156:1;10137:21;;:7;:21;;;10129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10238:6;10208:11;:18;10220:5;10208:18;;;;;;;;;;;;;;;:27;10227:7;10208:27;;;;;;;;;;;;;;;:36;;;;10276:7;10260:32;;10269:5;10260:32;;;10285:6;10260:32;;;;;;:::i;:::-;;;;;;;;9965:335;;;:::o;10308:3480::-;10408:1;10392:18;;:4;:18;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10481:1;10467:16;;:2;:16;;;10459:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10547:1;10538:6;:10;10530:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10603:17;10643:7;:5;:7::i;:::-;10635:15;;:4;:15;;;;:32;;;;;10660:7;:5;:7::i;:::-;10654:13;;:2;:13;;;;10635:32;10631:2818;;;10689:4;:10;10694:4;10689:10;;;;;;;;;;;;;;;;;;;;;;;;;10688:11;:24;;;;;10704:4;:8;10709:2;10704:8;;;;;;;;;;;;;;;;;;;;;;;;;10703:9;10688:24;:44;;;;;10717:4;:15;10722:9;10717:15;;;;;;;;;;;;;;;;;;;;;;;;;10716:16;10688:44;10680:53;;;;;;10750:20;;;;;;;;;;;10746:512;;;10815:7;:5;:7::i;:::-;10809:13;;:2;:13;;;;:64;;;;;10857:15;;;;;;;;;;;10843:30;;:2;:30;;;;10809:64;:113;;;;;10908:13;;;;;;;;;;;10894:28;;:2;:28;;;;10809:113;10787:460;;;11029:12;10987:28;:39;11016:9;10987:39;;;;;;;;;;;;;;;;:54;10957:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;11219:12;11177:28;:39;11206:9;11177:39;;;;;;;;;;;;;;;:54;;;;10787:460;10746:512;11287:1;11274:9;;:14;11270:141;;11317:82;11395:3;11317:73;11341:15;;11329:9;;:27;11328:61;;11375:14;;11328:61;;;11360:12;;11328:61;11317:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;11305:94;;11270:141;11437:1;11425:9;;:13;11421:91;;;11467:33;11496:3;11467:24;11478:12;;11467:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;11455:45;;11421:91;11536:13;;;;;;;;;;;11528:21;;:4;:21;;;:55;;;;;11567:15;;;;;;;;;;;11553:30;;:2;:30;;;;11528:55;:82;;;;;11588:18;:22;11607:2;11588:22;;;;;;;;;;;;;;;;;;;;;;;;;11587:23;11528:82;11524:404;;;11645:12;;11635:6;:22;;11627:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11736:14;;11726:6;11710:13;11720:2;11710:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11702:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11808:82;11886:3;11808:73;11832:15;;11820:9;;:27;11819:61;;11866:14;;11819:61;;;11851:12;;11819:61;11808:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;11796:94;;11905:9;;:11;;;;;;;;;:::i;:::-;;;;;;11524:404;11950:13;;;;;;;;;;;11944:19;;:2;:19;;;:44;;;;;11983:4;11967:21;;:4;:21;;;;11944:44;11940:174;;;12017:85;12098:3;12017:76;12041:16;;12029:9;;:28;12028:64;;12077:15;;12028:64;;;12061:13;;12028:64;12017:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;12005:97;;11940:174;12126:28;12157:24;12175:4;12157:9;:24::i;:::-;12126:55;;12199:6;;;;;;;;;;12198:7;:30;;;;;12215:13;;;;;;;;;;;12209:19;;:2;:19;;;12198:30;:45;;;;;12232:11;;;;;;;;;;;12198:45;:89;;;;;12270:17;;12247:20;:40;12198:89;:123;;;;;12303:18;;12291:9;;:30;12198:123;12194:1248;;;12338:24;12365:42;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;12365:29;12390:3;12365:20;:24;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;12338:69;;12447:1;12428:16;:20;12424:509;;;12489:17;12469;:37;;;;12539:17;12525:11;:31;;;;12424:509;;;12615:1;12596:16;:20;12592:341;;;12672:5;12667:2;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;12657:12;;;;:::i;:::-;:20;;;;:::i;:::-;12637:17;:40;;;;12733:5;12728:2;4452:1;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;12718:12;;;;:::i;:::-;:20;;;;:::i;:::-;12704:11;:34;;;;12592:341;;;12797:2;12778:16;:21;12774:159;;;12854:4;12850:1;4452;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;12840:11;;;;:::i;:::-;:18;;;;:::i;:::-;12820:17;:38;;;;12913:4;12909:1;4452;4510:2;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;12899:11;;;;:::i;:::-;:18;;;;:::i;:::-;12885:11;:32;;;;12774:159;12592:341;12424:509;12971:13;;12956:12;:28;12952:82;;;13017:1;13005:9;:13;;;;12952:82;13070:1;13058:9;;:13;13050:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13116:69;13133:51;13137:6;13145:38;13149:20;13171:11;;13145:3;:38::i;:::-;13133:3;:51::i;:::-;13116:16;:69::i;:::-;13200:26;13229:21;13200:50;;13290:1;13269:18;:22;13265:95;;;13312:32;13325:18;13312:12;:32::i;:::-;13265:95;13376:9;;:11;;;;;;;;;:::i;:::-;;;;;;13418:12;13402:13;:28;;;;12323:1119;;12194:1248;10669:2780;10631:2818;13473:1;13461:9;:13;13457:160;;;13514:39;13543:9;13514;:24;13532:4;13514:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13487:9;:24;13505:4;13487:24;;;;;;;;;;;;;;;:66;;;;13592:4;13569:40;;13578:4;13569:40;;;13599:9;13569:40;;;;;;:::i;:::-;;;;;;;;13457:160;13641:27;13661:6;13641:9;:15;13651:4;13641:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13623:9;:15;13633:4;13623:15;;;;;;;;;;;;;;;:45;;;;13691:40;13709:21;13720:9;13709:6;:10;;:21;;;;:::i;:::-;13691:9;:13;13701:2;13691:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13675:9;:13;13685:2;13675:13;;;;;;;;;;;;;;;:56;;;;13758:2;13743:41;;13752:4;13743:41;;;13762:21;13773:9;13762:6;:10;;:21;;;;:::i;:::-;13743:41;;;;;;:::i;:::-;;;;;;;;10377:3411;10308:3480;;;:::o;1280:190::-;1366:7;1399:1;1394;:6;;1402:12;1386:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1426:9;1442:1;1438;:5;;;;:::i;:::-;1426:17;;1461:1;1454:8;;;1280:190;;;;;:::o;13904:483::-;5366:4;5357:6;;:13;;;;;;;;;;;;;;;;;;13982:21:::1;14020:1;14006:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13982:40;;14051:4;14033;14038:1;14033:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14077:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14067:4;14072:1;14067:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14110:62;14127:4;14142:15;;;;;;;;;;;14160:11;14110:8;:62::i;:::-;14183:15;;;;;;;;;;;:66;;;14264:11;14290:1;14306:4;14333;14353:15;14183:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13971:416;5402:5:::0;5393:6;;:14;;;;;;;;;;;;;;;;;;13904:483;:::o;15201:92::-;15258:10;;;;;;;;;;;:19;;:27;15278:6;15258:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15201:92;:::o;1478:246::-;1536:7;1565:1;1560;:6;1556:47;;1590:1;1583:8;;;;1556:47;1613:9;1629:1;1625;:5;;;;:::i;:::-;1613:17;;1658:1;1653;1649;:5;;;;:::i;:::-;:10;1641:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1715:1;1708:8;;;1478:246;;;;;:::o;1732:132::-;1790:7;1817:39;1821:1;1824;1817:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1810:46;;1732:132;;;;:::o;17735:509::-;17823:12;17849:14;17865;17892:6;17883:15;;:6;:15;;;:53;;17921:6;17929;17883:53;;;17902:6;17910;17883:53;17848:88;;;;18038:7;18087:6;18095;18070:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18060:43;;;;;;17985:247;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17975:258;;;;;;17970:264;;17947:289;;17837:407;;17735:509;;;;;:::o;13798:98::-;13855:7;13882:1;13880;:3;13879:9;;13887:1;13879:9;;;13885:1;13879:9;13872:16;;13798:98;;;;:::o;949:179::-;1007:7;1027:9;1043:1;1039;:5;;;;:::i;:::-;1027:17;;1068:1;1063;:6;;1055:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1119:1;1112:8;;;949:179;;;;:::o;1136:136::-;1194:7;1221:43;1225:1;1228;1221:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1214:50;;1136:136;;;;:::o;1872:189::-;1958:7;1990:1;1986;:5;1993:12;1978:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2017:9;2033:1;2029;:5;;;;:::i;:::-;2017:17;;2052:1;2045:8;;;1872:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:323::-;4115:6;4164:2;4152:9;4143:7;4139:23;4135:32;4132:119;;;4170:79;;:::i;:::-;4132:119;4290:1;4315:50;4357:7;4348:6;4337:9;4333:22;4315:50;:::i;:::-;4305:60;;4261:114;4059:323;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:86::-;5048:7;5088:4;5081:5;5077:16;5066:27;;5013:86;;;:::o;5105:112::-;5188:22;5204:5;5188:22;:::i;:::-;5183:3;5176:35;5105:112;;:::o;5223:214::-;5312:4;5350:2;5339:9;5335:18;5327:26;;5363:67;5427:1;5416:9;5412:17;5403:6;5363:67;:::i;:::-;5223:214;;;;:::o;5443:329::-;5502:6;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5443:329;;;;:::o;5778:::-;5837:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:119;;;5892:79;;:::i;:::-;5854:119;6012:1;6037:53;6082:7;6073:6;6062:9;6058:22;6037:53;:::i;:::-;6027:63;;5983:117;5778:329;;;;:::o;6113:118::-;6200:24;6218:5;6200:24;:::i;:::-;6195:3;6188:37;6113:118;;:::o;6237:222::-;6330:4;6368:2;6357:9;6353:18;6345:26;;6381:71;6449:1;6438:9;6434:17;6425:6;6381:71;:::i;:::-;6237:222;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:182::-;7085:34;7081:1;7073:6;7069:14;7062:58;6945:182;:::o;7133:366::-;7275:3;7296:67;7360:2;7355:3;7296:67;:::i;:::-;7289:74;;7372:93;7461:3;7372:93;:::i;:::-;7490:2;7485:3;7481:12;7474:19;;7133:366;;;:::o;7505:419::-;7671:4;7709:2;7698:9;7694:18;7686:26;;7758:9;7752:4;7748:20;7744:1;7733:9;7729:17;7722:47;7786:131;7912:4;7786:131;:::i;:::-;7778:139;;7505:419;;;:::o;7930:85::-;7975:7;8004:5;7993:16;;7930:85;;;:::o;8021:60::-;8049:3;8070:5;8063:12;;8021:60;;;:::o;8087:158::-;8145:9;8178:61;8196:42;8205:32;8231:5;8205:32;:::i;:::-;8196:42;:::i;:::-;8178:61;:::i;:::-;8165:74;;8087:158;;;:::o;8251:147::-;8346:45;8385:5;8346:45;:::i;:::-;8341:3;8334:58;8251:147;;:::o;8404:238::-;8505:4;8543:2;8532:9;8528:18;8520:26;;8556:79;8632:1;8621:9;8617:17;8608:6;8556:79;:::i;:::-;8404:238;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:102;8876:8;8923:5;8920:1;8916:13;8895:34;;8834:102;;;:::o;8942:848::-;9003:5;9010:4;9034:6;9025:15;;9058:5;9049:14;;9072:712;9093:1;9083:8;9080:15;9072:712;;;9188:4;9183:3;9179:14;9173:4;9170:24;9167:50;;;9197:18;;:::i;:::-;9167:50;9247:1;9237:8;9233:16;9230:451;;;9662:4;9655:5;9651:16;9642:25;;9230:451;9712:4;9706;9702:15;9694:23;;9742:32;9765:8;9742:32;:::i;:::-;9730:44;;9072:712;;;8942:848;;;;;;;:::o;9796:1073::-;9850:5;10041:8;10031:40;;10062:1;10053:10;;10064:5;;10031:40;10090:4;10080:36;;10107:1;10098:10;;10109:5;;10080:36;10176:4;10224:1;10219:27;;;;10260:1;10255:191;;;;10169:277;;10219:27;10237:1;10228:10;;10239:5;;;10255:191;10300:3;10290:8;10287:17;10284:43;;;10307:18;;:::i;:::-;10284:43;10356:8;10353:1;10349:16;10340:25;;10391:3;10384:5;10381:14;10378:40;;;10398:18;;:::i;:::-;10378:40;10431:5;;;10169:277;;10555:2;10545:8;10542:16;10536:3;10530:4;10527:13;10523:36;10505:2;10495:8;10492:16;10487:2;10481:4;10478:12;10474:35;10458:111;10455:246;;;10611:8;10605:4;10601:19;10592:28;;10646:3;10639:5;10636:14;10633:40;;;10653:18;;:::i;:::-;10633:40;10686:5;;10455:246;10726:42;10764:3;10754:8;10748:4;10745:1;10726:42;:::i;:::-;10711:57;;;;10800:4;10795:3;10791:14;10784:5;10781:25;10778:51;;;10809:18;;:::i;:::-;10778:51;10858:4;10851:5;10847:16;10838:25;;9796:1073;;;;;;:::o;10875:281::-;10933:5;10957:23;10975:4;10957:23;:::i;:::-;10949:31;;11001:25;11017:8;11001:25;:::i;:::-;10989:37;;11045:104;11082:66;11072:8;11066:4;11045:104;:::i;:::-;11036:113;;10875:281;;;;:::o;11162:410::-;11202:7;11225:20;11243:1;11225:20;:::i;:::-;11220:25;;11259:20;11277:1;11259:20;:::i;:::-;11254:25;;11314:1;11311;11307:9;11336:30;11354:11;11336:30;:::i;:::-;11325:41;;11515:1;11506:7;11502:15;11499:1;11496:22;11476:1;11469:9;11449:83;11426:139;;11545:18;;:::i;:::-;11426:139;11210:362;11162:410;;;;:::o;11578:180::-;11626:77;11623:1;11616:88;11723:4;11720:1;11713:15;11747:4;11744:1;11737:15;11764:185;11804:1;11821:20;11839:1;11821:20;:::i;:::-;11816:25;;11855:20;11873:1;11855:20;:::i;:::-;11850:25;;11894:1;11884:35;;11899:18;;:::i;:::-;11884:35;11941:1;11938;11934:9;11929:14;;11764:185;;;;:::o;11955:143::-;12012:5;12043:6;12037:13;12028:22;;12059:33;12086:5;12059:33;:::i;:::-;11955:143;;;;:::o;12104:351::-;12174:6;12223:2;12211:9;12202:7;12198:23;12194:32;12191:119;;;12229:79;;:::i;:::-;12191:119;12349:1;12374:64;12430:7;12421:6;12410:9;12406:22;12374:64;:::i;:::-;12364:74;;12320:128;12104:351;;;;:::o;12461:142::-;12511:9;12544:53;12562:34;12571:24;12589:5;12571:24;:::i;:::-;12562:34;:::i;:::-;12544:53;:::i;:::-;12531:66;;12461:142;;;:::o;12609:126::-;12659:9;12692:37;12723:5;12692:37;:::i;:::-;12679:50;;12609:126;;;:::o;12741:134::-;12799:9;12832:37;12863:5;12832:37;:::i;:::-;12819:50;;12741:134;;;:::o;12881:147::-;12976:45;13015:5;12976:45;:::i;:::-;12971:3;12964:58;12881:147;;:::o;13034:348::-;13163:4;13201:2;13190:9;13186:18;13178:26;;13214:79;13290:1;13279:9;13275:17;13266:6;13214:79;:::i;:::-;13303:72;13371:2;13360:9;13356:18;13347:6;13303:72;:::i;:::-;13034:348;;;;;:::o;13388:137::-;13442:5;13473:6;13467:13;13458:22;;13489:30;13513:5;13489:30;:::i;:::-;13388:137;;;;:::o;13531:345::-;13598:6;13647:2;13635:9;13626:7;13622:23;13618:32;13615:119;;;13653:79;;:::i;:::-;13615:119;13773:1;13798:61;13851:7;13842:6;13831:9;13827:22;13798:61;:::i;:::-;13788:71;;13744:125;13531:345;;;;:::o;13882:173::-;14022:25;14018:1;14010:6;14006:14;13999:49;13882:173;:::o;14061:366::-;14203:3;14224:67;14288:2;14283:3;14224:67;:::i;:::-;14217:74;;14300:93;14389:3;14300:93;:::i;:::-;14418:2;14413:3;14409:12;14402:19;;14061:366;;;:::o;14433:419::-;14599:4;14637:2;14626:9;14622:18;14614:26;;14686:9;14680:4;14676:20;14672:1;14661:9;14657:17;14650:47;14714:131;14840:4;14714:131;:::i;:::-;14706:139;;14433:419;;;:::o;14858:143::-;14915:5;14946:6;14940:13;14931:22;;14962:33;14989:5;14962:33;:::i;:::-;14858:143;;;;:::o;15007:351::-;15077:6;15126:2;15114:9;15105:7;15101:23;15097:32;15094:119;;;15132:79;;:::i;:::-;15094:119;15252:1;15277:64;15333:7;15324:6;15313:9;15309:22;15277:64;:::i;:::-;15267:74;;15223:128;15007:351;;;;:::o;15364:332::-;15485:4;15523:2;15512:9;15508:18;15500:26;;15536:71;15604:1;15593:9;15589:17;15580:6;15536:71;:::i;:::-;15617:72;15685:2;15674:9;15670:18;15661:6;15617:72;:::i;:::-;15364:332;;;;;:::o;15702:169::-;15842:21;15838:1;15830:6;15826:14;15819:45;15702:169;:::o;15877:366::-;16019:3;16040:67;16104:2;16099:3;16040:67;:::i;:::-;16033:74;;16116:93;16205:3;16116:93;:::i;:::-;16234:2;16229:3;16225:12;16218:19;;15877:366;;;:::o;16249:419::-;16415:4;16453:2;16442:9;16438:18;16430:26;;16502:9;16496:4;16492:20;16488:1;16477:9;16473:17;16466:47;16530:131;16656:4;16530:131;:::i;:::-;16522:139;;16249:419;;;:::o;16674:807::-;16923:4;16961:3;16950:9;16946:19;16938:27;;16975:71;17043:1;17032:9;17028:17;17019:6;16975:71;:::i;:::-;17056:72;17124:2;17113:9;17109:18;17100:6;17056:72;:::i;:::-;17138:80;17214:2;17203:9;17199:18;17190:6;17138:80;:::i;:::-;17228;17304:2;17293:9;17289:18;17280:6;17228:80;:::i;:::-;17318:73;17386:3;17375:9;17371:19;17362:6;17318:73;:::i;:::-;17401;17469:3;17458:9;17454:19;17445:6;17401:73;:::i;:::-;16674:807;;;;;;;;;:::o;17487:663::-;17575:6;17583;17591;17640:2;17628:9;17619:7;17615:23;17611:32;17608:119;;;17646:79;;:::i;:::-;17608:119;17766:1;17791:64;17847:7;17838:6;17827:9;17823:22;17791:64;:::i;:::-;17781:74;;17737:128;17904:2;17930:64;17986:7;17977:6;17966:9;17962:22;17930:64;:::i;:::-;17920:74;;17875:129;18043:2;18069:64;18125:7;18116:6;18105:9;18101:22;18069:64;:::i;:::-;18059:74;;18014:129;17487:663;;;;;:::o;18156:332::-;18277:4;18315:2;18304:9;18300:18;18292:26;;18328:71;18396:1;18385:9;18381:17;18372:6;18328:71;:::i;:::-;18409:72;18477:2;18466:9;18462:18;18453:6;18409:72;:::i;:::-;18156:332;;;;;:::o;18494:223::-;18634:34;18630:1;18622:6;18618:14;18611:58;18703:6;18698:2;18690:6;18686:15;18679:31;18494:223;:::o;18723:366::-;18865:3;18886:67;18950:2;18945:3;18886:67;:::i;:::-;18879:74;;18962:93;19051:3;18962:93;:::i;:::-;19080:2;19075:3;19071:12;19064:19;;18723:366;;;:::o;19095:419::-;19261:4;19299:2;19288:9;19284:18;19276:26;;19348:9;19342:4;19338:20;19334:1;19323:9;19319:17;19312:47;19376:131;19502:4;19376:131;:::i;:::-;19368:139;;19095:419;;;:::o;19520:221::-;19660:34;19656:1;19648:6;19644:14;19637:58;19729:4;19724:2;19716:6;19712:15;19705:29;19520:221;:::o;19747:366::-;19889:3;19910:67;19974:2;19969:3;19910:67;:::i;:::-;19903:74;;19986:93;20075:3;19986:93;:::i;:::-;20104:2;20099:3;20095:12;20088:19;;19747:366;;;:::o;20119:419::-;20285:4;20323:2;20312:9;20308:18;20300:26;;20372:9;20366:4;20362:20;20358:1;20347:9;20343:17;20336:47;20400:131;20526:4;20400:131;:::i;:::-;20392:139;;20119:419;;;:::o;20544:224::-;20684:34;20680:1;20672:6;20668:14;20661:58;20753:7;20748:2;20740:6;20736:15;20729:32;20544:224;:::o;20774:366::-;20916:3;20937:67;21001:2;20996:3;20937:67;:::i;:::-;20930:74;;21013:93;21102:3;21013:93;:::i;:::-;21131:2;21126:3;21122:12;21115:19;;20774:366;;;:::o;21146:419::-;21312:4;21350:2;21339:9;21335:18;21327:26;;21399:9;21393:4;21389:20;21385:1;21374:9;21370:17;21363:47;21427:131;21553:4;21427:131;:::i;:::-;21419:139;;21146:419;;;:::o;21571:222::-;21711:34;21707:1;21699:6;21695:14;21688:58;21780:5;21775:2;21767:6;21763:15;21756:30;21571:222;:::o;21799:366::-;21941:3;21962:67;22026:2;22021:3;21962:67;:::i;:::-;21955:74;;22038:93;22127:3;22038:93;:::i;:::-;22156:2;22151:3;22147:12;22140:19;;21799:366;;;:::o;22171:419::-;22337:4;22375:2;22364:9;22360:18;22352:26;;22424:9;22418:4;22414:20;22410:1;22399:9;22395:17;22388:47;22452:131;22578:4;22452:131;:::i;:::-;22444:139;;22171:419;;;:::o;22596:228::-;22736:34;22732:1;22724:6;22720:14;22713:58;22805:11;22800:2;22792:6;22788:15;22781:36;22596:228;:::o;22830:366::-;22972:3;22993:67;23057:2;23052:3;22993:67;:::i;:::-;22986:74;;23069:93;23158:3;23069:93;:::i;:::-;23187:2;23182:3;23178:12;23171:19;;22830:366;;;:::o;23202:419::-;23368:4;23406:2;23395:9;23391:18;23383:26;;23455:9;23449:4;23445:20;23441:1;23430:9;23426:17;23419:47;23483:131;23609:4;23483:131;:::i;:::-;23475:139;;23202:419;;;:::o;23627:297::-;23767:34;23763:1;23755:6;23751:14;23744:58;23836:34;23831:2;23823:6;23819:15;23812:59;23905:11;23900:2;23892:6;23888:15;23881:36;23627:297;:::o;23930:366::-;24072:3;24093:67;24157:2;24152:3;24093:67;:::i;:::-;24086:74;;24169:93;24258:3;24169:93;:::i;:::-;24287:2;24282:3;24278:12;24271:19;;23930:366;;;:::o;24302:419::-;24468:4;24506:2;24495:9;24491:18;24483:26;;24555:9;24549:4;24545:20;24541:1;24530:9;24526:17;24519:47;24583:131;24709:4;24583:131;:::i;:::-;24575:139;;24302:419;;;:::o;24727:175::-;24867:27;24863:1;24855:6;24851:14;24844:51;24727:175;:::o;24908:366::-;25050:3;25071:67;25135:2;25130:3;25071:67;:::i;:::-;25064:74;;25147:93;25236:3;25147:93;:::i;:::-;25265:2;25260:3;25256:12;25249:19;;24908:366;;;:::o;25280:419::-;25446:4;25484:2;25473:9;25469:18;25461:26;;25533:9;25527:4;25523:20;25519:1;25508:9;25504:17;25497:47;25561:131;25687:4;25561:131;:::i;:::-;25553:139;;25280:419;;;:::o;25705:191::-;25745:3;25764:20;25782:1;25764:20;:::i;:::-;25759:25;;25798:20;25816:1;25798:20;:::i;:::-;25793:25;;25841:1;25838;25834:9;25827:16;;25862:3;25859:1;25856:10;25853:36;;;25869:18;;:::i;:::-;25853:36;25705:191;;;;:::o;25902:176::-;26042:28;26038:1;26030:6;26026:14;26019:52;25902:176;:::o;26084:366::-;26226:3;26247:67;26311:2;26306:3;26247:67;:::i;:::-;26240:74;;26323:93;26412:3;26323:93;:::i;:::-;26441:2;26436:3;26432:12;26425:19;;26084:366;;;:::o;26456:419::-;26622:4;26660:2;26649:9;26645:18;26637:26;;26709:9;26703:4;26699:20;26695:1;26684:9;26680:17;26673:47;26737:131;26863:4;26737:131;:::i;:::-;26729:139;;26456:419;;;:::o;26881:233::-;26920:3;26943:24;26961:5;26943:24;:::i;:::-;26934:33;;26989:66;26982:5;26979:77;26976:103;;27059:18;;:::i;:::-;26976:103;27106:1;27099:5;27095:13;27088:20;;26881:233;;;:::o;27120:173::-;27260:25;27256:1;27248:6;27244:14;27237:49;27120:173;:::o;27299:366::-;27441:3;27462:67;27526:2;27521:3;27462:67;:::i;:::-;27455:74;;27538:93;27627:3;27538:93;:::i;:::-;27656:2;27651:3;27647:12;27640:19;;27299:366;;;:::o;27671:419::-;27837:4;27875:2;27864:9;27860:18;27852:26;;27924:9;27918:4;27914:20;27910:1;27899:9;27895:17;27888:47;27952:131;28078:4;27952:131;:::i;:::-;27944:139;;27671:419;;;:::o;28096:194::-;28136:4;28156:20;28174:1;28156:20;:::i;:::-;28151:25;;28190:20;28208:1;28190:20;:::i;:::-;28185:25;;28234:1;28231;28227:9;28219:17;;28258:1;28252:4;28249:11;28246:37;;;28263:18;;:::i;:::-;28246:37;28096:194;;;;:::o;28296:180::-;28344:77;28341:1;28334:88;28441:4;28438:1;28431:15;28465:4;28462:1;28455:15;28482:180;28530:77;28527:1;28520:88;28627:4;28624:1;28617:15;28651:4;28648:1;28641:15;28668:114;28735:6;28769:5;28763:12;28753:22;;28668:114;;;:::o;28788:184::-;28887:11;28921:6;28916:3;28909:19;28961:4;28956:3;28952:14;28937:29;;28788:184;;;;:::o;28978:132::-;29045:4;29068:3;29060:11;;29098:4;29093:3;29089:14;29081:22;;28978:132;;;:::o;29116:108::-;29193:24;29211:5;29193:24;:::i;:::-;29188:3;29181:37;29116:108;;:::o;29230:179::-;29299:10;29320:46;29362:3;29354:6;29320:46;:::i;:::-;29398:4;29393:3;29389:14;29375:28;;29230:179;;;;:::o;29415:113::-;29485:4;29517;29512:3;29508:14;29500:22;;29415:113;;;:::o;29564:732::-;29683:3;29712:54;29760:5;29712:54;:::i;:::-;29782:86;29861:6;29856:3;29782:86;:::i;:::-;29775:93;;29892:56;29942:5;29892:56;:::i;:::-;29971:7;30002:1;29987:284;30012:6;30009:1;30006:13;29987:284;;;30088:6;30082:13;30115:63;30174:3;30159:13;30115:63;:::i;:::-;30108:70;;30201:60;30254:6;30201:60;:::i;:::-;30191:70;;30047:224;30034:1;30031;30027:9;30022:14;;29987:284;;;29991:14;30287:3;30280:10;;29688:608;;;29564:732;;;;:::o;30302:831::-;30565:4;30603:3;30592:9;30588:19;30580:27;;30617:71;30685:1;30674:9;30670:17;30661:6;30617:71;:::i;:::-;30698:80;30774:2;30763:9;30759:18;30750:6;30698:80;:::i;:::-;30825:9;30819:4;30815:20;30810:2;30799:9;30795:18;30788:48;30853:108;30956:4;30947:6;30853:108;:::i;:::-;30845:116;;30971:72;31039:2;31028:9;31024:18;31015:6;30971:72;:::i;:::-;31053:73;31121:3;31110:9;31106:19;31097:6;31053:73;:::i;:::-;30302:831;;;;;;;;:::o;31139:220::-;31279:34;31275:1;31267:6;31263:14;31256:58;31348:3;31343:2;31335:6;31331:15;31324:28;31139:220;:::o;31365:366::-;31507:3;31528:67;31592:2;31587:3;31528:67;:::i;:::-;31521:74;;31604:93;31693:3;31604:93;:::i;:::-;31722:2;31717:3;31713:12;31706:19;;31365:366;;;:::o;31737:419::-;31903:4;31941:2;31930:9;31926:18;31918:26;;31990:9;31984:4;31980:20;31976:1;31965:9;31961:17;31954:47;32018:131;32144:4;32018:131;:::i;:::-;32010:139;;31737:419;;;:::o;32162:94::-;32195:8;32243:5;32239:2;32235:14;32214:35;;32162:94;;;:::o;32262:::-;32301:7;32330:20;32344:5;32330:20;:::i;:::-;32319:31;;32262:94;;;:::o;32362:100::-;32401:7;32430:26;32450:5;32430:26;:::i;:::-;32419:37;;32362:100;;;:::o;32468:157::-;32573:45;32593:24;32611:5;32593:24;:::i;:::-;32573:45;:::i;:::-;32568:3;32561:58;32468:157;;:::o;32631:397::-;32771:3;32786:75;32857:3;32848:6;32786:75;:::i;:::-;32886:2;32881:3;32877:12;32870:19;;32899:75;32970:3;32961:6;32899:75;:::i;:::-;32999:2;32994:3;32990:12;32983:19;;33019:3;33012:10;;32631:397;;;;;:::o;33034:148::-;33136:11;33173:3;33158:18;;33034:148;;;;:::o;33188:214::-;33328:66;33324:1;33316:6;33312:14;33305:90;33188:214;:::o;33408:400::-;33568:3;33589:84;33671:1;33666:3;33589:84;:::i;:::-;33582:91;;33682:93;33771:3;33682:93;:::i;:::-;33800:1;33795:3;33791:11;33784:18;;33408:400;;;:::o;33814:77::-;33851:7;33880:5;33869:16;;33814:77;;;:::o;33897:79::-;33936:7;33965:5;33954:16;;33897:79;;;:::o;33982:157::-;34087:45;34107:24;34125:5;34107:24;:::i;:::-;34087:45;:::i;:::-;34082:3;34075:58;33982:157;;:::o;34145:214::-;34285:66;34281:1;34273:6;34269:14;34262:90;34145:214;:::o;34365:402::-;34525:3;34546:85;34628:2;34623:3;34546:85;:::i;:::-;34539:92;;34640:93;34729:3;34640:93;:::i;:::-;34758:2;34753:3;34749:12;34742:19;;34365:402;;;:::o;34773:929::-;35115:3;35137:148;35281:3;35137:148;:::i;:::-;35130:155;;35295:75;35366:3;35357:6;35295:75;:::i;:::-;35395:2;35390:3;35386:12;35379:19;;35408:75;35479:3;35470:6;35408:75;:::i;:::-;35508:2;35503:3;35499:12;35492:19;;35528:148;35672:3;35528:148;:::i;:::-;35521:155;;35693:3;35686:10;;34773:929;;;;;:::o;35708:177::-;35848:29;35844:1;35836:6;35832:14;35825:53;35708:177;:::o;35891:366::-;36033:3;36054:67;36118:2;36113:3;36054:67;:::i;:::-;36047:74;;36130:93;36219:3;36130:93;:::i;:::-;36248:2;36243:3;36239:12;36232:19;;35891:366;;;:::o;36263:419::-;36429:4;36467:2;36456:9;36452:18;36444:26;;36516:9;36510:4;36506:20;36502:1;36491:9;36487:17;36480:47;36544:131;36670:4;36544:131;:::i;:::-;36536:139;;36263:419;;;:::o

Swarm Source

ipfs://9454a86dd0dd34fa94de7fdfde5468f2e78c4936740d7610c804112cdce9267b

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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