ETH Price: $3,590.67 (+3.74%)
Gas: 5.7 Gwei
 

Overview

Max Total Supply

1,000,000 BRRR

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,973.440409256212 BRRR

Value
$0.00
0x21136b0cf5f033c1d056d933d91c149e30917e2e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BRRR

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-21
*/

/*
https://t.me/ValkyrieERC
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.20;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
 
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
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);
}
 
interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
contract 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);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
contract BRRR is ERC20, Ownable {

    string _name = unicode"Valkyrie Bitcoin ETF";
    string _symbol = unicode"BRRR";

    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private isSwapping;
 
    address private treasuryWallet;
    address private devWallet;
 
    uint256 public maxTx;
    uint256 public swapTreshold;
    uint256 public maxWallet;
 
    bool public limitsActive = true;
    bool public tradingLive = true;
    bool public swapEnabled = true;
    bool public shouldContractSellAll = false;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
    // Seller Map
    mapping (address => uint256) private _holderFirstBuyTimestamp;
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event treasuryWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20(_name, _symbol) {
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 _buyTreasuryFee = 20;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;
 
        uint256 _sellTreasuryFee = 70;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
 
        uint256 totalSupply = 1000000 * 1e18;
 
        maxTx = totalSupply * 20 / 1000; // 2%
        maxWallet = totalSupply * 20 / 1000; // 2% 
        swapTreshold = totalSupply * 1 / 1000; // 0.05%
 
        buyTreasuryFee = _buyTreasuryFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyDevFee;
 
        sellTreasuryFee = _sellTreasuryFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellDevFee;

        treasuryWallet = address(0x660cb39ceb6023e8F92D131ff76d065973b6D5C4);
        devWallet = address(0x660cb39ceb6023e8F92D131ff76d065973b6D5C4);
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(treasuryWallet), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(devWallet), true);
        excludeFromMaxTransaction(address(treasuryWallet), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
    }
 
    // once enabled, can never be turned off
    function ACTIVATETRADING(bool yes) external onlyOwner {
       if(yes){
        tradingLive = true;
        swapEnabled = true;
        launchedAt = block.number;

       }
       
       
        
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsActive = false;
        return true;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }

    function enableEmptyContract(bool enabled) external onlyOwner{
        shouldContractSellAll = enabled;
    }
 
     // change the minimum amount of tokens to sell from fees
    function setSwapTreshold(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTreshold = newAmount;
        return true;
    }
 
    function updateTransactionLimits(uint256 _maxTx, uint256 _maxWallet) external onlyOwner {
        require(_maxTx >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        require(_maxWallet >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxTx = _maxTx * (10**18);
        maxWallet = _maxWallet * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function lowerFee(
        uint256 _devBuyFee,
        uint256 _liquidityBuyFee,
        uint256 _treasuryBuyFee,
        uint256 _devSellFee,
        uint256 _liquiditySellFee,
        uint256 _treasurySellFee
    ) external onlyOwner {
        require(_devBuyFee <= buyDevFee &&
         _liquidityBuyFee <= buyLiquidityFee && 
         _treasuryBuyFee <= buyTreasuryFee &&
         _devSellFee <= sellDevFee && 
         _liquiditySellFee <= sellLiquidityFee &&
         _treasurySellFee <= sellTreasuryFee, "Fees must be lower then the current");

        buyDevFee = _devBuyFee;
        buyLiquidityFee = _liquidityBuyFee;
        buyTreasuryFee = _treasuryBuyFee;
        buyTotalFees = buyDevFee + buyLiquidityFee + buyTreasuryFee;
        sellDevFee = _devSellFee;
        sellLiquidityFee = _liquiditySellFee;
        sellTreasuryFee = _treasurySellFee;
        sellTotalFees = sellDevFee + sellLiquidityFee + sellTreasuryFee;
        require(buyTotalFees <= 30 && sellTotalFees <= 30, "Fees cannot be higher then 30%");
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateContractSellEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function blacklist(address account, bool isBlacklisted) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateFeeRecivers(address newTreasuryWallet, address newDevWallet) external onlyOwner{
        emit treasuryWalletUpdated(newTreasuryWallet, treasuryWallet);
        treasuryWallet = newTreasuryWallet;
        emit devWalletUpdated(newDevWallet, devWallet);
        devWallet = newDevWallet;
    }

 
  
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsActive){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwapping
            ){
                if(!tradingLive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                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;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTx, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTx, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTreshold;
 
        if( 
            canSwap &&
            swapEnabled &&
            !isSwapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;
 
            swapBack();
 
            isSwapping = false;
        }
 
        bool takeFee = !isSwapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(shouldContractSellAll == false){
            if(contractBalance > swapTreshold * 20){
                contractBalance = swapTreshold * 20;
            }
        }else{
            contractBalance = balanceOf(address(this));
        }
        
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForTreasury).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(treasuryWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"treasuryWalletUpdated","type":"event"},{"inputs":[{"internalType":"bool","name":"yes","type":"bool"}],"name":"ACTIVATETRADING","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryBuyFee","type":"uint256"},{"internalType":"uint256","name":"_devSellFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_treasurySellFee","type":"uint256"}],"name":"lowerFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldContractSellAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateContractSellEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateFeeRecivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280601481526020017f56616c6b7972696520426974636f696e20455446000000000000000000000000815250600690816200004a919062000fa5565b506040518060400160405280600481526020017f42525252000000000000000000000000000000000000000000000000000000008152506007908162000091919062000fa5565b506001600d5f6101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055505f600d60036101000a81548160ff021916908315150217905550600160115f6101000a81548160ff02191690831515021790555034801562000122575f80fd5b5060068054620001329062000da5565b80601f0160208091040260200160405190810160405280929190818152602001828054620001609062000da5565b8015620001af5780601f106200018557610100808354040283529160200191620001af565b820191905f5260205f20905b8154815290600101906020018083116200019157829003601f168201915b505050505060078054620001c39062000da5565b80601f0160208091040260200160405190810160405280929190818152602001828054620001f19062000da5565b8015620002405780601f10620002165761010080835404028352916020019162000240565b820191905f5260205f20905b8154815290600101906020018083116200022257829003601f168201915b5050505050816003908162000256919062000fa5565b50806004908162000268919062000fa5565b5050505f6200027c6200082e60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620003448160016200083560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003e89190620010ee565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004749190620010ee565b6040518363ffffffff1660e01b8152600401620004939291906200112f565b6020604051808303815f875af1158015620004b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d69190620010ee565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200051e60a05160016200083560201b60201c565b6200053360a05160016200092e60201b60201c565b5f601490505f805f604690505f805f69d3c21bcecceda100000090506103e860148262000561919062001187565b6200056d9190620011fe565b600a819055506103e860148262000585919062001187565b620005919190620011fe565b600c819055506103e8600182620005a9919062001187565b620005b59190620011fe565b600b81905550866013819055508560148190555084601581905550601554601454601354620005e5919062001235565b620005f1919062001235565b60128190555083601781905550826018819055508160198190555060195460185460175462000621919062001235565b6200062d919062001235565b60168190555073660cb39ceb6023e8f92d131ff76d065973b6d5c4600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073660cb39ceb6023e8f92d131ff76d065973b6d5c460095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006fe620006f0620009cc60201b60201c565b6001620009f460201b60201c565b62000711306001620009f460201b60201c565b6200072661dead6001620009f460201b60201c565b6200075b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009f460201b60201c565b6200077d6200076f620009cc60201b60201c565b60016200083560201b60201c565b620007903060016200083560201b60201c565b620007a561dead60016200083560201b60201c565b620007d960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083560201b60201c565b6200080e600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083560201b60201c565b62000820338262000b3d60201b60201c565b50505050505050506200142c565b5f33905090565b620008456200082e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cd90620012cd565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000a046200082e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8c90620012cd565b60405180910390fd5b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000b31919062001309565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba59062001372565b60405180910390fd5b62000bc15f838362000cda60201b60201c565b62000bd88160025462000cdf60201b90919060201c565b60028190555062000c2f815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000cdf60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cce9190620013a3565b60405180910390a35050565b505050565b5f80828462000cef919062001235565b90508381101562000d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d2e906200140c565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000dbd57607f821691505b60208210810362000dd35762000dd262000d78565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dfa565b62000e43868362000dfa565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000e8d62000e8762000e818462000e5b565b62000e64565b62000e5b565b9050919050565b5f819050919050565b62000ea88362000e6d565b62000ec062000eb78262000e94565b84845462000e06565b825550505050565b5f90565b62000ed662000ec8565b62000ee381848462000e9d565b505050565b5b8181101562000f0a5762000efe5f8262000ecc565b60018101905062000ee9565b5050565b601f82111562000f595762000f238162000dd9565b62000f2e8462000deb565b8101602085101562000f3e578190505b62000f5662000f4d8562000deb565b83018262000ee8565b50505b505050565b5f82821c905092915050565b5f62000f7b5f198460080262000f5e565b1980831691505092915050565b5f62000f95838362000f6a565b9150826002028217905092915050565b62000fb08262000d41565b67ffffffffffffffff81111562000fcc5762000fcb62000d4b565b5b62000fd8825462000da5565b62000fe582828562000f0e565b5f60209050601f8311600181146200101b575f841562001006578287015190505b62001012858262000f88565b86555062001081565b601f1984166200102b8662000dd9565b5f5b8281101562001054578489015182556001820191506020850194506020810190506200102d565b8683101562001074578489015162001070601f89168262000f6a565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620010b8826200108d565b9050919050565b620010ca81620010ac565b8114620010d5575f80fd5b50565b5f81519050620010e881620010bf565b92915050565b5f6020828403121562001106576200110562001089565b5b5f6200111584828501620010d8565b91505092915050565b6200112981620010ac565b82525050565b5f604082019050620011445f8301856200111e565b6200115360208301846200111e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620011938262000e5b565b9150620011a08362000e5b565b9250828202620011b08162000e5b565b91508282048414831517620011ca57620011c96200115a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200120a8262000e5b565b9150620012178362000e5b565b9250826200122a5762001229620011d1565b5b828204905092915050565b5f620012418262000e5b565b91506200124e8362000e5b565b92508282019050808211156200126957620012686200115a565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012b56020836200126f565b9150620012c2826200127f565b602082019050919050565b5f6020820190508181035f830152620012e681620012a7565b9050919050565b5f8115159050919050565b6200130381620012ed565b82525050565b5f6020820190506200131e5f830184620012f8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200135a601f836200126f565b9150620013678262001324565b602082019050919050565b5f6020820190508181035f8301526200138b816200134c565b9050919050565b6200139d8162000e5b565b82525050565b5f602082019050620013b85f83018462001392565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620013f4601b836200126f565b91506200140182620013be565b602082019050919050565b5f6020820190508181035f8301526200142581620013e6565b9050919050565b60805160a0516153dc620014865f395f818161144e01528181611be70152612a9a01525f8181610eb901528181612a4201528181613bcd01528181613cac01528181613cd301528181613d690152613d9001526153dc5ff3fe6080604052600436106102e7575f3560e01c80637437681e1161018f578063c0246668116100db578063dd62ed3e11610094578063f11a24d31161006e578063f11a24d314610b46578063f2fde38b14610b70578063f637434214610b98578063f8b45b0514610bc2576102ee565b8063dd62ed3e14610ab6578063e52fb9ec14610af2578063e884f26014610b1c576102ee565b8063c0246668146109ac578063c75a4845146109d4578063c876d0b9146109fc578063cc2ffe7c14610a26578063cfd1940e14610a50578063d85ba06314610a8c576102ee565b80639a7a23d611610148578063a0d82dc511610122578063a0d82dc5146108ce578063a457c2d7146108f8578063a9059cbb14610934578063b62496f514610970576102ee565b80639a7a23d6146108525780639c3b4fdc1461087a5780639fccce32146108a4576102ee565b80637437681e1461075a578063751039fc146107845780637571336a146107ae5780637ebb640a146107d65780638da5cb5b146107fe57806395d89b4114610828576102ee565b806323b872dd1161024e5780635c068a8c116102075780636b2fb124116101e15780636b2fb124146106b45780636ddd1713146106de57806370a0823114610708578063715018a614610744576102ee565b80635c068a8c146106385780635f5828f6146106625780636a486a8e1461068a576102ee565b806323b872dd14610508578063313ce56714610544578063395093511461056e578063404e5129146105aa57806349bd5a5e146105d25780634fbee193146105fc576102ee565b806318160ddd116102a057806318160ddd14610410578063184f5c6a1461043a5780631864217b146104625780631a8145bb1461048c5780631cce34ee146104b657806322b55037146104e0576102ee565b806303863ff6146102f257806306fdde031461031a578063095ea7b31461034457806310d5de531461038057806311704f52146103bc5780631694505e146103e6576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b5061031860048036038101906103139190613ed2565b610bec565b005b348015610325575f80fd5b5061032e610dda565b60405161033b9190613fe5565b60405180910390f35b34801561034f575f80fd5b5061036a6004803603810190610365919061405f565b610e6a565b60405161037791906140b7565b60405180910390f35b34801561038b575f80fd5b506103a660048036038101906103a191906140d0565b610e87565b6040516103b391906140b7565b60405180910390f35b3480156103c7575f80fd5b506103d0610ea4565b6040516103dd91906140b7565b60405180910390f35b3480156103f1575f80fd5b506103fa610eb7565b6040516104079190614156565b60405180910390f35b34801561041b575f80fd5b50610424610edb565b604051610431919061417e565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b91906141c1565b610ee4565b005b34801561046d575f80fd5b50610476610f97565b60405161048391906140b7565b60405180910390f35b348015610497575f80fd5b506104a0610faa565b6040516104ad919061417e565b60405180910390f35b3480156104c1575f80fd5b506104ca610fb0565b6040516104d791906140b7565b60405180910390f35b3480156104eb575f80fd5b50610506600480360381019061050191906141ec565b610fc2565b005b348015610513575f80fd5b5061052e6004803603810190610529919061422a565b6111d4565b60405161053b91906140b7565b60405180910390f35b34801561054f575f80fd5b506105586112a8565b6040516105659190614295565b60405180910390f35b348015610579575f80fd5b50610594600480360381019061058f919061405f565b6112b0565b6040516105a191906140b7565b60405180910390f35b3480156105b5575f80fd5b506105d060048036038101906105cb91906142ae565b61135e565b005b3480156105dd575f80fd5b506105e661144c565b6040516105f391906142fb565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d91906140d0565b611470565b60405161062f91906140b7565b60405180910390f35b348015610643575f80fd5b5061064c6114c2565b604051610659919061417e565b60405180910390f35b34801561066d575f80fd5b50610688600480360381019061068391906141c1565b6114c8565b005b348015610695575f80fd5b5061069e61157b565b6040516106ab919061417e565b60405180910390f35b3480156106bf575f80fd5b506106c8611581565b6040516106d5919061417e565b60405180910390f35b3480156106e9575f80fd5b506106f2611587565b6040516106ff91906140b7565b60405180910390f35b348015610713575f80fd5b5061072e600480360381019061072991906140d0565b61159a565b60405161073b919061417e565b60405180910390f35b34801561074f575f80fd5b506107586115df565b005b348015610765575f80fd5b5061076e611732565b60405161077b919061417e565b60405180910390f35b34801561078f575f80fd5b50610798611738565b6040516107a591906140b7565b60405180910390f35b3480156107b9575f80fd5b506107d460048036038101906107cf91906142ae565b6117ef565b005b3480156107e1575f80fd5b506107fc60048036038101906107f79190614314565b6118dd565b005b348015610809575f80fd5b50610812611a97565b60405161081f91906142fb565b60405180910390f35b348015610833575f80fd5b5061083c611abf565b6040516108499190613fe5565b60405180910390f35b34801561085d575f80fd5b50610878600480360381019061087391906142ae565b611b4f565b005b348015610885575f80fd5b5061088e611c81565b60405161089b919061417e565b60405180910390f35b3480156108af575f80fd5b506108b8611c87565b6040516108c5919061417e565b60405180910390f35b3480156108d9575f80fd5b506108e2611c8d565b6040516108ef919061417e565b60405180910390f35b348015610903575f80fd5b5061091e6004803603810190610919919061405f565b611c93565b60405161092b91906140b7565b60405180910390f35b34801561093f575f80fd5b5061095a6004803603810190610955919061405f565b611d5b565b60405161096791906140b7565b60405180910390f35b34801561097b575f80fd5b50610996600480360381019061099191906140d0565b611d78565b6040516109a391906140b7565b60405180910390f35b3480156109b7575f80fd5b506109d260048036038101906109cd91906142ae565b611d94565b005b3480156109df575f80fd5b506109fa60048036038101906109f591906141c1565b611ed0565b005b348015610a07575f80fd5b50610a10611fad565b604051610a1d91906140b7565b60405180910390f35b348015610a31575f80fd5b50610a3a611fbf565b604051610a47919061417e565b60405180910390f35b348015610a5b575f80fd5b50610a766004803603810190610a719190614352565b611fc5565b604051610a8391906140b7565b60405180910390f35b348015610a97575f80fd5b50610aa0612133565b604051610aad919061417e565b60405180910390f35b348015610ac1575f80fd5b50610adc6004803603810190610ad791906141ec565b612139565b604051610ae9919061417e565b60405180910390f35b348015610afd575f80fd5b50610b066121bb565b604051610b13919061417e565b60405180910390f35b348015610b27575f80fd5b50610b306121c1565b604051610b3d91906140b7565b60405180910390f35b348015610b51575f80fd5b50610b5a612278565b604051610b67919061417e565b60405180910390f35b348015610b7b575f80fd5b50610b966004803603810190610b9191906140d0565b61227e565b005b348015610ba3575f80fd5b50610bac612440565b604051610bb9919061417e565b60405180910390f35b348015610bcd575f80fd5b50610bd6612446565b604051610be3919061417e565b60405180910390f35b610bf461244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c79906143c7565b60405180910390fd5b6015548611158015610c9657506014548511155b8015610ca457506013548411155b8015610cb257506019548311155b8015610cc057506018548211155b8015610cce57506017548111155b610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490614455565b60405180910390fd5b856015819055508460148190555083601381905550601354601454601554610d3591906144a0565b610d3f91906144a0565b601281905550826019819055508160188190555080601781905550601754601854601954610d6d91906144a0565b610d7791906144a0565b601681905550601e60125411158015610d935750601e60165411155b610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc99061451d565b60405180910390fd5b505050505050565b606060038054610de990614568565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1590614568565b8015610e605780601f10610e3757610100808354040283529160200191610e60565b820191905f5260205f20905b815481529060010190602001808311610e4357829003601f168201915b5050505050905090565b5f610e7d610e7661244c565b8484612453565b6001905092915050565b601f602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610eec61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f71906143c7565b60405180910390fd5b80600d60036101000a81548160ff02191690831515021790555050565b600d60039054906101000a900460ff1681565b601b5481565b600d5f9054906101000a900460ff1681565b610fca61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f906143c7565b60405180910390fd5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f63560405160405180910390a381600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6111e0848484612616565b61129d846111ec61244c565b6112988560405180606001604052806028815260200161535a6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61124f61244c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133419092919063ffffffff16565b612453565b600190509392505050565b5f6012905090565b5f6113546112bc61244c565b8461134f8560015f6112cc61244c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a390919063ffffffff16565b612453565b6001905092915050565b61136661244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906143c7565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60135481565b6114d061244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611555906143c7565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60165481565b60175481565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115e761244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906143c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b5f61174161244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906143c7565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b6117f761244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906143c7565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6118e561244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a906143c7565b60405180910390fd5b670de0b6b3a76400006103e86001611989610edb565b6119939190614598565b61199d9190614606565b6119a79190614606565b8210156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e0906146a6565b60405180910390fd5b670de0b6b3a76400006103e860056119ff610edb565b611a099190614598565b611a139190614606565b611a1d9190614606565b811015611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5690614734565b60405180910390fd5b670de0b6b3a764000082611a739190614598565b600a81905550670de0b6b3a764000081611a8d9190614598565b600c819055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611ace90614568565b80601f0160208091040260200160405190810160405280929190818152602001828054611afa90614568565b8015611b455780601f10611b1c57610100808354040283529160200191611b45565b820191905f5260205f20905b815481529060010190602001808311611b2857829003601f168201915b5050505050905090565b611b5761244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc906143c7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a906147c2565b60405180910390fd5b611c7d8282613400565b5050565b60155481565b601c5481565b60195481565b5f611d51611c9f61244c565b84611d4c856040518060600160405280602581526020016153826025913960015f611cc861244c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133419092919063ffffffff16565b612453565b6001905092915050565b5f611d6e611d6761244c565b8484612616565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b611d9c61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e21906143c7565b60405180910390fd5b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ec491906140b7565b60405180910390a25050565b611ed861244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d906143c7565b60405180910390fd5b8015611faa576001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601d819055505b50565b60115f9054906101000a900460ff1681565b601a5481565b5f611fce61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612053906143c7565b60405180910390fd5b620186a0600161206a610edb565b6120749190614598565b61207e9190614606565b8210156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614850565b60405180910390fd5b6103e860056120cd610edb565b6120d79190614598565b6120e19190614606565b821115612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a906148de565b60405180910390fd5b81600b8190555060019050919050565b60125481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b5f6121ca61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f906143c7565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b60145481565b61228661244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b906143c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123799061496c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906149fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252690614a88565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612609919061417e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267b90614b16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e990614ba4565b60405180910390fd5b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612790575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690614c32565b60405180910390fd5b5f81036127e6576127e183835f61349e565b61333c565b600d5f9054906101000a900460ff1615612e8c57612802611a97565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128705750612840611a97565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128e2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128fa575060085f9054906101000a900460ff16155b15612e8b57600d60019054906101000a900460ff166129ee57601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129ae5750601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e490614c9a565b60405180910390fd5b5b60115f9054906101000a900460ff1615612bb157612a0a611a97565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a9157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ae957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bb05743600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6490614d4e565b60405180910390fd5b43600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c4e5750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cf557600a54811115612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90614ddc565b60405180910390fd5b600c54612ca48361159a565b82612caf91906144a0565b1115612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce790614e44565b60405180910390fd5b612e8a565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d925750601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612de157600a54811115612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390614ed2565b60405180910390fd5b612e89565b601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e8857600c54612e3b8361159a565b82612e4691906144a0565b1115612e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7e90614e44565b60405180910390fd5b5b5b5b5b5b5f612e963061159a565b90505f600b548210159050808015612eba5750600d60029054906101000a900460ff165b8015612ed2575060085f9054906101000a900460ff16155b8015612f25575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f785750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fcb5750601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561300c57600160085f6101000a81548160ff021916908315150217905550612ff2613727565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff16159050601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806130ba5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156130c3575f90505b5f811561332c5760205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561312157505f601654115b156131eb5761314e606461314060165488613a2290919063ffffffff16565b613a9990919063ffffffff16565b9050601654601854826131619190614598565b61316b9190614606565b601b5f82825461317b91906144a0565b92505081905550601654601954826131939190614598565b61319d9190614606565b601c5f8282546131ad91906144a0565b92505081905550601654601754826131c59190614598565b6131cf9190614606565b601a5f8282546131df91906144a0565b92505081905550613309565b60205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561324257505f601254115b156133085761326f606461326160125488613a2290919063ffffffff16565b613a9990919063ffffffff16565b9050601254601454826132829190614598565b61328c9190614606565b601b5f82825461329c91906144a0565b92505081905550601254601554826132b49190614598565b6132be9190614606565b601c5f8282546132ce91906144a0565b92505081905550601254601354826132e69190614598565b6132f09190614606565b601a5f82825461330091906144a0565b925050819055505b5b5f81111561331d5761331c87308361349e565b5b80856133299190614ef0565b94505b61333787878761349e565b505050505b505050565b5f838311158290613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f9190613fe5565b60405180910390fd5b505f83856133969190614ef0565b9050809150509392505050565b5f8082846133b191906144a0565b9050838110156133f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ed90614f6d565b60405180910390fd5b8091505092915050565b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361350c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350390614b16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361357a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357190614ba4565b60405180910390fd5b613585838383613ae2565b6135ee81604051806060016040528060268152602001615334602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133419092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061367d815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a390919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161371a919061417e565b60405180910390a3505050565b5f6137313061159a565b90505f601c54601a54601b5461374791906144a0565b61375191906144a0565b90505f8083148061376157505f82145b1561376e57505050613a20565b5f1515600d60039054906101000a900460ff161515036137b5576014600b546137979190614598565b8311156137b0576014600b546137ad9190614598565b92505b6137c1565b6137be3061159a565b92505b5f600283601b54866137d39190614598565b6137dd9190614606565b6137e79190614606565b90505f6137fd8286613ae790919063ffffffff16565b90505f47905061380c82613b30565b5f6138208247613ae790919063ffffffff16565b90505f61384a8761383c601a5485613a2290919063ffffffff16565b613a9990919063ffffffff16565b90505f61387488613866601c5486613a2290919063ffffffff16565b613a9990919063ffffffff16565b90505f8183856138849190614ef0565b61388e9190614ef0565b90505f601b819055505f601a819055505f601c8190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138ea90614fb8565b5f6040518083038185875af1925050503d805f8114613924576040519150601f19603f3d011682016040523d82523d5f602084013e613929565b606091505b5050809850505f8711801561393d57505f81115b1561398a5761394c8782613d63565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b5460405161398193929190614fcc565b60405180910390a15b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139d090614fb8565b5f6040518083038185875af1925050503d805f8114613a0a576040519150601f19603f3d011682016040523d82523d5f602084013e613a0f565b606091505b505080985050505050505050505050505b565b5f808303613a32575f9050613a93565b5f8284613a3f9190614598565b9050828482613a4e9190614606565b14613a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8590615071565b60405180910390fd5b809150505b92915050565b5f613ada83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e3a565b905092915050565b505050565b5f613b2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613341565b905092915050565b5f600267ffffffffffffffff811115613b4c57613b4b61508f565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b50905030815f81518110613b9157613b906150bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c5891906150fd565b81600181518110613c6c57613c6b6150bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613cd1307f000000000000000000000000000000000000000000000000000000000000000084612453565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613d32959493929190615218565b5f604051808303815f87803b158015613d49575f80fd5b505af1158015613d5b573d5f803e3d5ffd5b505050505050565b613d8e307f000000000000000000000000000000000000000000000000000000000000000084612453565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613df296959493929190615270565b60606040518083038185885af1158015613e0e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613e3391906152e3565b5050505050565b5f8083118290613e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e779190613fe5565b60405180910390fd5b505f8385613e8e9190614606565b9050809150509392505050565b5f80fd5b5f819050919050565b613eb181613e9f565b8114613ebb575f80fd5b50565b5f81359050613ecc81613ea8565b92915050565b5f805f805f8060c08789031215613eec57613eeb613e9b565b5b5f613ef989828a01613ebe565b9650506020613f0a89828a01613ebe565b9550506040613f1b89828a01613ebe565b9450506060613f2c89828a01613ebe565b9350506080613f3d89828a01613ebe565b92505060a0613f4e89828a01613ebe565b9150509295509295509295565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f92578082015181840152602081019050613f77565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fb782613f5b565b613fc18185613f65565b9350613fd1818560208601613f75565b613fda81613f9d565b840191505092915050565b5f6020820190508181035f830152613ffd8184613fad565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61402e82614005565b9050919050565b61403e81614024565b8114614048575f80fd5b50565b5f8135905061405981614035565b92915050565b5f806040838503121561407557614074613e9b565b5b5f6140828582860161404b565b925050602061409385828601613ebe565b9150509250929050565b5f8115159050919050565b6140b18161409d565b82525050565b5f6020820190506140ca5f8301846140a8565b92915050565b5f602082840312156140e5576140e4613e9b565b5b5f6140f28482850161404b565b91505092915050565b5f819050919050565b5f61411e61411961411484614005565b6140fb565b614005565b9050919050565b5f61412f82614104565b9050919050565b5f61414082614125565b9050919050565b61415081614136565b82525050565b5f6020820190506141695f830184614147565b92915050565b61417881613e9f565b82525050565b5f6020820190506141915f83018461416f565b92915050565b6141a08161409d565b81146141aa575f80fd5b50565b5f813590506141bb81614197565b92915050565b5f602082840312156141d6576141d5613e9b565b5b5f6141e3848285016141ad565b91505092915050565b5f806040838503121561420257614201613e9b565b5b5f61420f8582860161404b565b92505060206142208582860161404b565b9150509250929050565b5f805f6060848603121561424157614240613e9b565b5b5f61424e8682870161404b565b935050602061425f8682870161404b565b925050604061427086828701613ebe565b9150509250925092565b5f60ff82169050919050565b61428f8161427a565b82525050565b5f6020820190506142a85f830184614286565b92915050565b5f80604083850312156142c4576142c3613e9b565b5b5f6142d18582860161404b565b92505060206142e2858286016141ad565b9150509250929050565b6142f581614024565b82525050565b5f60208201905061430e5f8301846142ec565b92915050565b5f806040838503121561432a57614329613e9b565b5b5f61433785828601613ebe565b925050602061434885828601613ebe565b9150509250929050565b5f6020828403121561436757614366613e9b565b5b5f61437484828501613ebe565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143b1602083613f65565b91506143bc8261437d565b602082019050919050565b5f6020820190508181035f8301526143de816143a5565b9050919050565b7f46656573206d757374206265206c6f776572207468656e2074686520637572725f8201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b5f61443f602383613f65565b915061444a826143e5565b604082019050919050565b5f6020820190508181035f83015261446c81614433565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6144aa82613e9f565b91506144b583613e9f565b92508282019050808211156144cd576144cc614473565b5b92915050565b7f466565732063616e6e6f7420626520686967686572207468656e2033302500005f82015250565b5f614507601e83613f65565b9150614512826144d3565b602082019050919050565b5f6020820190508181035f830152614534816144fb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061457f57607f821691505b6020821081036145925761459161453b565b5b50919050565b5f6145a282613e9f565b91506145ad83613e9f565b92508282026145bb81613e9f565b915082820484148315176145d2576145d1614473565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61461082613e9f565b915061461b83613e9f565b92508261462b5761462a6145d9565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614690602f83613f65565b915061469b82614636565b604082019050919050565b5f6020820190508181035f8301526146bd81614684565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61471e602483613f65565b9150614729826146c4565b604082019050919050565b5f6020820190508181035f83015261474b81614712565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6147ac603983613f65565b91506147b782614752565b604082019050919050565b5f6020820190508181035f8301526147d9816147a0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61483a603583613f65565b9150614845826147e0565b604082019050919050565b5f6020820190508181035f8301526148678161482e565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6148c8603483613f65565b91506148d38261486e565b604082019050919050565b5f6020820190508181035f8301526148f5816148bc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614956602683613f65565b9150614961826148fc565b604082019050919050565b5f6020820190508181035f8301526149838161494a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6149e4602483613f65565b91506149ef8261498a565b604082019050919050565b5f6020820190508181035f830152614a11816149d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a72602283613f65565b9150614a7d82614a18565b604082019050919050565b5f6020820190508181035f830152614a9f81614a66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614b00602583613f65565b9150614b0b82614aa6565b604082019050919050565b5f6020820190508181035f830152614b2d81614af4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614b8e602383613f65565b9150614b9982614b34565b604082019050919050565b5f6020820190508181035f830152614bbb81614b82565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614c1c603183613f65565b9150614c2782614bc2565b604082019050919050565b5f6020820190508181035f830152614c4981614c10565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614c84601683613f65565b9150614c8f82614c50565b602082019050919050565b5f6020820190508181035f830152614cb181614c78565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614d38604983613f65565b9150614d4382614cb8565b606082019050919050565b5f6020820190508181035f830152614d6581614d2c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614dc6603583613f65565b9150614dd182614d6c565b604082019050919050565b5f6020820190508181035f830152614df381614dba565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614e2e601383613f65565b9150614e3982614dfa565b602082019050919050565b5f6020820190508181035f830152614e5b81614e22565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614ebc603683613f65565b9150614ec782614e62565b604082019050919050565b5f6020820190508181035f830152614ee981614eb0565b9050919050565b5f614efa82613e9f565b9150614f0583613e9f565b9250828203905081811115614f1d57614f1c614473565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614f57601b83613f65565b9150614f6282614f23565b602082019050919050565b5f6020820190508181035f830152614f8481614f4b565b9050919050565b5f81905092915050565b50565b5f614fa35f83614f8b565b9150614fae82614f95565b5f82019050919050565b5f614fc282614f98565b9150819050919050565b5f606082019050614fdf5f83018661416f565b614fec602083018561416f565b614ff9604083018461416f565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61505b602183613f65565b915061506682615001565b604082019050919050565b5f6020820190508181035f8301526150888161504f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506150f781614035565b92915050565b5f6020828403121561511257615111613e9b565b5b5f61511f848285016150e9565b91505092915050565b5f819050919050565b5f61514b61514661514184615128565b6140fb565b613e9f565b9050919050565b61515b81615131565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61519381614024565b82525050565b5f6151a4838361518a565b60208301905092915050565b5f602082019050919050565b5f6151c682615161565b6151d0818561516b565b93506151db8361517b565b805f5b8381101561520b5781516151f28882615199565b97506151fd836151b0565b9250506001810190506151de565b5085935050505092915050565b5f60a08201905061522b5f83018861416f565b6152386020830187615152565b818103604083015261524a81866151bc565b905061525960608301856142ec565b615266608083018461416f565b9695505050505050565b5f60c0820190506152835f8301896142ec565b615290602083018861416f565b61529d6040830187615152565b6152aa6060830186615152565b6152b760808301856142ec565b6152c460a083018461416f565b979650505050505050565b5f815190506152dd81613ea8565b92915050565b5f805f606084860312156152fa576152f9613e9b565b5b5f615307868287016152cf565b9350506020615318868287016152cf565b9250506040615329868287016152cf565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122006e34172e150b1e2fd9320afa49631ef6093b7dbfeef0f879abf6777a963500c64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c80637437681e1161018f578063c0246668116100db578063dd62ed3e11610094578063f11a24d31161006e578063f11a24d314610b46578063f2fde38b14610b70578063f637434214610b98578063f8b45b0514610bc2576102ee565b8063dd62ed3e14610ab6578063e52fb9ec14610af2578063e884f26014610b1c576102ee565b8063c0246668146109ac578063c75a4845146109d4578063c876d0b9146109fc578063cc2ffe7c14610a26578063cfd1940e14610a50578063d85ba06314610a8c576102ee565b80639a7a23d611610148578063a0d82dc511610122578063a0d82dc5146108ce578063a457c2d7146108f8578063a9059cbb14610934578063b62496f514610970576102ee565b80639a7a23d6146108525780639c3b4fdc1461087a5780639fccce32146108a4576102ee565b80637437681e1461075a578063751039fc146107845780637571336a146107ae5780637ebb640a146107d65780638da5cb5b146107fe57806395d89b4114610828576102ee565b806323b872dd1161024e5780635c068a8c116102075780636b2fb124116101e15780636b2fb124146106b45780636ddd1713146106de57806370a0823114610708578063715018a614610744576102ee565b80635c068a8c146106385780635f5828f6146106625780636a486a8e1461068a576102ee565b806323b872dd14610508578063313ce56714610544578063395093511461056e578063404e5129146105aa57806349bd5a5e146105d25780634fbee193146105fc576102ee565b806318160ddd116102a057806318160ddd14610410578063184f5c6a1461043a5780631864217b146104625780631a8145bb1461048c5780631cce34ee146104b657806322b55037146104e0576102ee565b806303863ff6146102f257806306fdde031461031a578063095ea7b31461034457806310d5de531461038057806311704f52146103bc5780631694505e146103e6576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b5061031860048036038101906103139190613ed2565b610bec565b005b348015610325575f80fd5b5061032e610dda565b60405161033b9190613fe5565b60405180910390f35b34801561034f575f80fd5b5061036a6004803603810190610365919061405f565b610e6a565b60405161037791906140b7565b60405180910390f35b34801561038b575f80fd5b506103a660048036038101906103a191906140d0565b610e87565b6040516103b391906140b7565b60405180910390f35b3480156103c7575f80fd5b506103d0610ea4565b6040516103dd91906140b7565b60405180910390f35b3480156103f1575f80fd5b506103fa610eb7565b6040516104079190614156565b60405180910390f35b34801561041b575f80fd5b50610424610edb565b604051610431919061417e565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b91906141c1565b610ee4565b005b34801561046d575f80fd5b50610476610f97565b60405161048391906140b7565b60405180910390f35b348015610497575f80fd5b506104a0610faa565b6040516104ad919061417e565b60405180910390f35b3480156104c1575f80fd5b506104ca610fb0565b6040516104d791906140b7565b60405180910390f35b3480156104eb575f80fd5b50610506600480360381019061050191906141ec565b610fc2565b005b348015610513575f80fd5b5061052e6004803603810190610529919061422a565b6111d4565b60405161053b91906140b7565b60405180910390f35b34801561054f575f80fd5b506105586112a8565b6040516105659190614295565b60405180910390f35b348015610579575f80fd5b50610594600480360381019061058f919061405f565b6112b0565b6040516105a191906140b7565b60405180910390f35b3480156105b5575f80fd5b506105d060048036038101906105cb91906142ae565b61135e565b005b3480156105dd575f80fd5b506105e661144c565b6040516105f391906142fb565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d91906140d0565b611470565b60405161062f91906140b7565b60405180910390f35b348015610643575f80fd5b5061064c6114c2565b604051610659919061417e565b60405180910390f35b34801561066d575f80fd5b50610688600480360381019061068391906141c1565b6114c8565b005b348015610695575f80fd5b5061069e61157b565b6040516106ab919061417e565b60405180910390f35b3480156106bf575f80fd5b506106c8611581565b6040516106d5919061417e565b60405180910390f35b3480156106e9575f80fd5b506106f2611587565b6040516106ff91906140b7565b60405180910390f35b348015610713575f80fd5b5061072e600480360381019061072991906140d0565b61159a565b60405161073b919061417e565b60405180910390f35b34801561074f575f80fd5b506107586115df565b005b348015610765575f80fd5b5061076e611732565b60405161077b919061417e565b60405180910390f35b34801561078f575f80fd5b50610798611738565b6040516107a591906140b7565b60405180910390f35b3480156107b9575f80fd5b506107d460048036038101906107cf91906142ae565b6117ef565b005b3480156107e1575f80fd5b506107fc60048036038101906107f79190614314565b6118dd565b005b348015610809575f80fd5b50610812611a97565b60405161081f91906142fb565b60405180910390f35b348015610833575f80fd5b5061083c611abf565b6040516108499190613fe5565b60405180910390f35b34801561085d575f80fd5b50610878600480360381019061087391906142ae565b611b4f565b005b348015610885575f80fd5b5061088e611c81565b60405161089b919061417e565b60405180910390f35b3480156108af575f80fd5b506108b8611c87565b6040516108c5919061417e565b60405180910390f35b3480156108d9575f80fd5b506108e2611c8d565b6040516108ef919061417e565b60405180910390f35b348015610903575f80fd5b5061091e6004803603810190610919919061405f565b611c93565b60405161092b91906140b7565b60405180910390f35b34801561093f575f80fd5b5061095a6004803603810190610955919061405f565b611d5b565b60405161096791906140b7565b60405180910390f35b34801561097b575f80fd5b50610996600480360381019061099191906140d0565b611d78565b6040516109a391906140b7565b60405180910390f35b3480156109b7575f80fd5b506109d260048036038101906109cd91906142ae565b611d94565b005b3480156109df575f80fd5b506109fa60048036038101906109f591906141c1565b611ed0565b005b348015610a07575f80fd5b50610a10611fad565b604051610a1d91906140b7565b60405180910390f35b348015610a31575f80fd5b50610a3a611fbf565b604051610a47919061417e565b60405180910390f35b348015610a5b575f80fd5b50610a766004803603810190610a719190614352565b611fc5565b604051610a8391906140b7565b60405180910390f35b348015610a97575f80fd5b50610aa0612133565b604051610aad919061417e565b60405180910390f35b348015610ac1575f80fd5b50610adc6004803603810190610ad791906141ec565b612139565b604051610ae9919061417e565b60405180910390f35b348015610afd575f80fd5b50610b066121bb565b604051610b13919061417e565b60405180910390f35b348015610b27575f80fd5b50610b306121c1565b604051610b3d91906140b7565b60405180910390f35b348015610b51575f80fd5b50610b5a612278565b604051610b67919061417e565b60405180910390f35b348015610b7b575f80fd5b50610b966004803603810190610b9191906140d0565b61227e565b005b348015610ba3575f80fd5b50610bac612440565b604051610bb9919061417e565b60405180910390f35b348015610bcd575f80fd5b50610bd6612446565b604051610be3919061417e565b60405180910390f35b610bf461244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c79906143c7565b60405180910390fd5b6015548611158015610c9657506014548511155b8015610ca457506013548411155b8015610cb257506019548311155b8015610cc057506018548211155b8015610cce57506017548111155b610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490614455565b60405180910390fd5b856015819055508460148190555083601381905550601354601454601554610d3591906144a0565b610d3f91906144a0565b601281905550826019819055508160188190555080601781905550601754601854601954610d6d91906144a0565b610d7791906144a0565b601681905550601e60125411158015610d935750601e60165411155b610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc99061451d565b60405180910390fd5b505050505050565b606060038054610de990614568565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1590614568565b8015610e605780601f10610e3757610100808354040283529160200191610e60565b820191905f5260205f20905b815481529060010190602001808311610e4357829003601f168201915b5050505050905090565b5f610e7d610e7661244c565b8484612453565b6001905092915050565b601f602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610eec61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f71906143c7565b60405180910390fd5b80600d60036101000a81548160ff02191690831515021790555050565b600d60039054906101000a900460ff1681565b601b5481565b600d5f9054906101000a900460ff1681565b610fca61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f906143c7565b60405180910390fd5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f63560405160405180910390a381600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6111e0848484612616565b61129d846111ec61244c565b6112988560405180606001604052806028815260200161535a6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61124f61244c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133419092919063ffffffff16565b612453565b600190509392505050565b5f6012905090565b5f6113546112bc61244c565b8461134f8560015f6112cc61244c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a390919063ffffffff16565b612453565b6001905092915050565b61136661244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906143c7565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000767d010c9812c5809bba01996022812e7f9af05781565b5f601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60135481565b6114d061244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611555906143c7565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60165481565b60175481565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115e761244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906143c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b5f61174161244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906143c7565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b6117f761244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906143c7565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6118e561244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a906143c7565b60405180910390fd5b670de0b6b3a76400006103e86001611989610edb565b6119939190614598565b61199d9190614606565b6119a79190614606565b8210156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e0906146a6565b60405180910390fd5b670de0b6b3a76400006103e860056119ff610edb565b611a099190614598565b611a139190614606565b611a1d9190614606565b811015611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5690614734565b60405180910390fd5b670de0b6b3a764000082611a739190614598565b600a81905550670de0b6b3a764000081611a8d9190614598565b600c819055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611ace90614568565b80601f0160208091040260200160405190810160405280929190818152602001828054611afa90614568565b8015611b455780601f10611b1c57610100808354040283529160200191611b45565b820191905f5260205f20905b815481529060010190602001808311611b2857829003601f168201915b5050505050905090565b611b5761244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc906143c7565b60405180910390fd5b7f000000000000000000000000767d010c9812c5809bba01996022812e7f9af05773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a906147c2565b60405180910390fd5b611c7d8282613400565b5050565b60155481565b601c5481565b60195481565b5f611d51611c9f61244c565b84611d4c856040518060600160405280602581526020016153826025913960015f611cc861244c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133419092919063ffffffff16565b612453565b6001905092915050565b5f611d6e611d6761244c565b8484612616565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b611d9c61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e21906143c7565b60405180910390fd5b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ec491906140b7565b60405180910390a25050565b611ed861244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d906143c7565b60405180910390fd5b8015611faa576001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601d819055505b50565b60115f9054906101000a900460ff1681565b601a5481565b5f611fce61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612053906143c7565b60405180910390fd5b620186a0600161206a610edb565b6120749190614598565b61207e9190614606565b8210156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614850565b60405180910390fd5b6103e860056120cd610edb565b6120d79190614598565b6120e19190614606565b821115612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a906148de565b60405180910390fd5b81600b8190555060019050919050565b60125481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b5f6121ca61244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f906143c7565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b60145481565b61228661244c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b906143c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123799061496c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906149fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252690614a88565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612609919061417e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267b90614b16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e990614ba4565b60405180910390fd5b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612790575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690614c32565b60405180910390fd5b5f81036127e6576127e183835f61349e565b61333c565b600d5f9054906101000a900460ff1615612e8c57612802611a97565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128705750612840611a97565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128e2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128fa575060085f9054906101000a900460ff16155b15612e8b57600d60019054906101000a900460ff166129ee57601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129ae5750601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e490614c9a565b60405180910390fd5b5b60115f9054906101000a900460ff1615612bb157612a0a611a97565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a9157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ae957507f000000000000000000000000767d010c9812c5809bba01996022812e7f9af05773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bb05743600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6490614d4e565b60405180910390fd5b43600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c4e5750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cf557600a54811115612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90614ddc565b60405180910390fd5b600c54612ca48361159a565b82612caf91906144a0565b1115612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce790614e44565b60405180910390fd5b612e8a565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d925750601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612de157600a54811115612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390614ed2565b60405180910390fd5b612e89565b601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e8857600c54612e3b8361159a565b82612e4691906144a0565b1115612e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7e90614e44565b60405180910390fd5b5b5b5b5b5b5f612e963061159a565b90505f600b548210159050808015612eba5750600d60029054906101000a900460ff165b8015612ed2575060085f9054906101000a900460ff16155b8015612f25575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f785750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fcb5750601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561300c57600160085f6101000a81548160ff021916908315150217905550612ff2613727565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff16159050601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806130ba5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156130c3575f90505b5f811561332c5760205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561312157505f601654115b156131eb5761314e606461314060165488613a2290919063ffffffff16565b613a9990919063ffffffff16565b9050601654601854826131619190614598565b61316b9190614606565b601b5f82825461317b91906144a0565b92505081905550601654601954826131939190614598565b61319d9190614606565b601c5f8282546131ad91906144a0565b92505081905550601654601754826131c59190614598565b6131cf9190614606565b601a5f8282546131df91906144a0565b92505081905550613309565b60205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561324257505f601254115b156133085761326f606461326160125488613a2290919063ffffffff16565b613a9990919063ffffffff16565b9050601254601454826132829190614598565b61328c9190614606565b601b5f82825461329c91906144a0565b92505081905550601254601554826132b49190614598565b6132be9190614606565b601c5f8282546132ce91906144a0565b92505081905550601254601354826132e69190614598565b6132f09190614606565b601a5f82825461330091906144a0565b925050819055505b5b5f81111561331d5761331c87308361349e565b5b80856133299190614ef0565b94505b61333787878761349e565b505050505b505050565b5f838311158290613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f9190613fe5565b60405180910390fd5b505f83856133969190614ef0565b9050809150509392505050565b5f8082846133b191906144a0565b9050838110156133f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ed90614f6d565b60405180910390fd5b8091505092915050565b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361350c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350390614b16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361357a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357190614ba4565b60405180910390fd5b613585838383613ae2565b6135ee81604051806060016040528060268152602001615334602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133419092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061367d815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a390919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161371a919061417e565b60405180910390a3505050565b5f6137313061159a565b90505f601c54601a54601b5461374791906144a0565b61375191906144a0565b90505f8083148061376157505f82145b1561376e57505050613a20565b5f1515600d60039054906101000a900460ff161515036137b5576014600b546137979190614598565b8311156137b0576014600b546137ad9190614598565b92505b6137c1565b6137be3061159a565b92505b5f600283601b54866137d39190614598565b6137dd9190614606565b6137e79190614606565b90505f6137fd8286613ae790919063ffffffff16565b90505f47905061380c82613b30565b5f6138208247613ae790919063ffffffff16565b90505f61384a8761383c601a5485613a2290919063ffffffff16565b613a9990919063ffffffff16565b90505f61387488613866601c5486613a2290919063ffffffff16565b613a9990919063ffffffff16565b90505f8183856138849190614ef0565b61388e9190614ef0565b90505f601b819055505f601a819055505f601c8190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138ea90614fb8565b5f6040518083038185875af1925050503d805f8114613924576040519150601f19603f3d011682016040523d82523d5f602084013e613929565b606091505b5050809850505f8711801561393d57505f81115b1561398a5761394c8782613d63565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b5460405161398193929190614fcc565b60405180910390a15b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139d090614fb8565b5f6040518083038185875af1925050503d805f8114613a0a576040519150601f19603f3d011682016040523d82523d5f602084013e613a0f565b606091505b505080985050505050505050505050505b565b5f808303613a32575f9050613a93565b5f8284613a3f9190614598565b9050828482613a4e9190614606565b14613a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8590615071565b60405180910390fd5b809150505b92915050565b5f613ada83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e3a565b905092915050565b505050565b5f613b2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613341565b905092915050565b5f600267ffffffffffffffff811115613b4c57613b4b61508f565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b50905030815f81518110613b9157613b906150bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c5891906150fd565b81600181518110613c6c57613c6b6150bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613cd1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612453565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613d32959493929190615218565b5f604051808303815f87803b158015613d49575f80fd5b505af1158015613d5b573d5f803e3d5ffd5b505050505050565b613d8e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612453565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613df296959493929190615270565b60606040518083038185885af1158015613e0e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613e3391906152e3565b5050505050565b5f8083118290613e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e779190613fe5565b60405180910390fd5b505f8385613e8e9190614606565b9050809150509392505050565b5f80fd5b5f819050919050565b613eb181613e9f565b8114613ebb575f80fd5b50565b5f81359050613ecc81613ea8565b92915050565b5f805f805f8060c08789031215613eec57613eeb613e9b565b5b5f613ef989828a01613ebe565b9650506020613f0a89828a01613ebe565b9550506040613f1b89828a01613ebe565b9450506060613f2c89828a01613ebe565b9350506080613f3d89828a01613ebe565b92505060a0613f4e89828a01613ebe565b9150509295509295509295565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f92578082015181840152602081019050613f77565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fb782613f5b565b613fc18185613f65565b9350613fd1818560208601613f75565b613fda81613f9d565b840191505092915050565b5f6020820190508181035f830152613ffd8184613fad565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61402e82614005565b9050919050565b61403e81614024565b8114614048575f80fd5b50565b5f8135905061405981614035565b92915050565b5f806040838503121561407557614074613e9b565b5b5f6140828582860161404b565b925050602061409385828601613ebe565b9150509250929050565b5f8115159050919050565b6140b18161409d565b82525050565b5f6020820190506140ca5f8301846140a8565b92915050565b5f602082840312156140e5576140e4613e9b565b5b5f6140f28482850161404b565b91505092915050565b5f819050919050565b5f61411e61411961411484614005565b6140fb565b614005565b9050919050565b5f61412f82614104565b9050919050565b5f61414082614125565b9050919050565b61415081614136565b82525050565b5f6020820190506141695f830184614147565b92915050565b61417881613e9f565b82525050565b5f6020820190506141915f83018461416f565b92915050565b6141a08161409d565b81146141aa575f80fd5b50565b5f813590506141bb81614197565b92915050565b5f602082840312156141d6576141d5613e9b565b5b5f6141e3848285016141ad565b91505092915050565b5f806040838503121561420257614201613e9b565b5b5f61420f8582860161404b565b92505060206142208582860161404b565b9150509250929050565b5f805f6060848603121561424157614240613e9b565b5b5f61424e8682870161404b565b935050602061425f8682870161404b565b925050604061427086828701613ebe565b9150509250925092565b5f60ff82169050919050565b61428f8161427a565b82525050565b5f6020820190506142a85f830184614286565b92915050565b5f80604083850312156142c4576142c3613e9b565b5b5f6142d18582860161404b565b92505060206142e2858286016141ad565b9150509250929050565b6142f581614024565b82525050565b5f60208201905061430e5f8301846142ec565b92915050565b5f806040838503121561432a57614329613e9b565b5b5f61433785828601613ebe565b925050602061434885828601613ebe565b9150509250929050565b5f6020828403121561436757614366613e9b565b5b5f61437484828501613ebe565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143b1602083613f65565b91506143bc8261437d565b602082019050919050565b5f6020820190508181035f8301526143de816143a5565b9050919050565b7f46656573206d757374206265206c6f776572207468656e2074686520637572725f8201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b5f61443f602383613f65565b915061444a826143e5565b604082019050919050565b5f6020820190508181035f83015261446c81614433565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6144aa82613e9f565b91506144b583613e9f565b92508282019050808211156144cd576144cc614473565b5b92915050565b7f466565732063616e6e6f7420626520686967686572207468656e2033302500005f82015250565b5f614507601e83613f65565b9150614512826144d3565b602082019050919050565b5f6020820190508181035f830152614534816144fb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061457f57607f821691505b6020821081036145925761459161453b565b5b50919050565b5f6145a282613e9f565b91506145ad83613e9f565b92508282026145bb81613e9f565b915082820484148315176145d2576145d1614473565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61461082613e9f565b915061461b83613e9f565b92508261462b5761462a6145d9565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614690602f83613f65565b915061469b82614636565b604082019050919050565b5f6020820190508181035f8301526146bd81614684565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61471e602483613f65565b9150614729826146c4565b604082019050919050565b5f6020820190508181035f83015261474b81614712565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6147ac603983613f65565b91506147b782614752565b604082019050919050565b5f6020820190508181035f8301526147d9816147a0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61483a603583613f65565b9150614845826147e0565b604082019050919050565b5f6020820190508181035f8301526148678161482e565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6148c8603483613f65565b91506148d38261486e565b604082019050919050565b5f6020820190508181035f8301526148f5816148bc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614956602683613f65565b9150614961826148fc565b604082019050919050565b5f6020820190508181035f8301526149838161494a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6149e4602483613f65565b91506149ef8261498a565b604082019050919050565b5f6020820190508181035f830152614a11816149d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a72602283613f65565b9150614a7d82614a18565b604082019050919050565b5f6020820190508181035f830152614a9f81614a66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614b00602583613f65565b9150614b0b82614aa6565b604082019050919050565b5f6020820190508181035f830152614b2d81614af4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614b8e602383613f65565b9150614b9982614b34565b604082019050919050565b5f6020820190508181035f830152614bbb81614b82565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614c1c603183613f65565b9150614c2782614bc2565b604082019050919050565b5f6020820190508181035f830152614c4981614c10565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614c84601683613f65565b9150614c8f82614c50565b602082019050919050565b5f6020820190508181035f830152614cb181614c78565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614d38604983613f65565b9150614d4382614cb8565b606082019050919050565b5f6020820190508181035f830152614d6581614d2c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614dc6603583613f65565b9150614dd182614d6c565b604082019050919050565b5f6020820190508181035f830152614df381614dba565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614e2e601383613f65565b9150614e3982614dfa565b602082019050919050565b5f6020820190508181035f830152614e5b81614e22565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614ebc603683613f65565b9150614ec782614e62565b604082019050919050565b5f6020820190508181035f830152614ee981614eb0565b9050919050565b5f614efa82613e9f565b9150614f0583613e9f565b9250828203905081811115614f1d57614f1c614473565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614f57601b83613f65565b9150614f6282614f23565b602082019050919050565b5f6020820190508181035f830152614f8481614f4b565b9050919050565b5f81905092915050565b50565b5f614fa35f83614f8b565b9150614fae82614f95565b5f82019050919050565b5f614fc282614f98565b9150819050919050565b5f606082019050614fdf5f83018661416f565b614fec602083018561416f565b614ff9604083018461416f565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61505b602183613f65565b915061506682615001565b604082019050919050565b5f6020820190508181035f8301526150888161504f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506150f781614035565b92915050565b5f6020828403121561511257615111613e9b565b5b5f61511f848285016150e9565b91505092915050565b5f819050919050565b5f61514b61514661514184615128565b6140fb565b613e9f565b9050919050565b61515b81615131565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61519381614024565b82525050565b5f6151a4838361518a565b60208301905092915050565b5f602082019050919050565b5f6151c682615161565b6151d0818561516b565b93506151db8361517b565b805f5b8381101561520b5781516151f28882615199565b97506151fd836151b0565b9250506001810190506151de565b5085935050505092915050565b5f60a08201905061522b5f83018861416f565b6152386020830187615152565b818103604083015261524a81866151bc565b905061525960608301856142ec565b615266608083018461416f565b9695505050505050565b5f60c0820190506152835f8301896142ec565b615290602083018861416f565b61529d6040830187615152565b6152aa6060830186615152565b6152b760808301856142ec565b6152c460a083018461416f565b979650505050505050565b5f815190506152dd81613ea8565b92915050565b5f805f606084860312156152fa576152f9613e9b565b5b5f615307868287016152cf565b9350506020615318868287016152cf565b9250506040615329868287016152cf565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122006e34172e150b1e2fd9320afa49631ef6093b7dbfeef0f879abf6777a963500c64736f6c63430008140033

Deployed Bytecode Sourcemap

17588:16128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24242:1059;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4786:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5700:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19229:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18099:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17755:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5107:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23125:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18173:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18943:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18061:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26293:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5877:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5006:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6240:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25706:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17813:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26619:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18652:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25397:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18759:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18794:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5223:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10761:148;;;;;;;;;;;;;:::i;:::-;;17966:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22803:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24090:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23688:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10547:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4894:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25842:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18725:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18983:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18869:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6466:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5358:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19452:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25515:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22537:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18569:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18904:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23308:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18618:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5541:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17993:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22983:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18688:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10917:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18831:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18027:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24242:1059;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24518:9:::1;;24504:10;:23;;:72;;;;;24561:15;;24541:16;:35;;24504:72;:120;;;;;24610:14;;24591:15;:33;;24504:120;:159;;;;;24653:10;;24638:11;:25;;24504:159;:211;;;;;24699:16;;24678:17;:37;;24504:211;:260;;;;;24749:15;;24729:16;:35;;24504:260;24496:308;;;;;;;;;;;;:::i;:::-;;;;;;;;;24829:10;24817:9;:22;;;;24868:16;24850:15;:34;;;;24912:15;24895:14;:32;;;;24983:14;;24965:15;;24953:9;;:27;;;;:::i;:::-;:44;;;;:::i;:::-;24938:12;:59;;;;25021:11;25008:10;:24;;;;25062:17;25043:16;:36;;;;25108:16;25090:15;:34;;;;25183:15;;25164:16;;25151:10;;:29;;;;:::i;:::-;:47;;;;:::i;:::-;25135:13;:63;;;;25233:2;25217:12;;:18;;:41;;;;;25256:2;25239:13;;:19;;25217:41;25209:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;24242:1059:::0;;;;;;:::o;4786:100::-;4840:13;4873:5;4866:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4786:100;:::o;5700:169::-;5783:4;5800:39;5809:12;:10;:12::i;:::-;5823:7;5832:6;5800:8;:39::i;:::-;5857:4;5850:11;;5700:169;;;;:::o;19229:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18099:30::-;;;;;;;;;;;;;:::o;17755:51::-;;;:::o;5107:108::-;5168:7;5195:12;;5188:19;;5107:108;:::o;23125:111::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23221:7:::1;23197:21;;:31;;;;;;;;;;;;;;;;;;23125:111:::0;:::o;18173:41::-;;;;;;;;;;;;;:::o;18943:33::-;;;;:::o;18061:31::-;;;;;;;;;;;;;:::o;26293:311::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26444:14:::1;;;;;;;;;;;26403:56;;26425:17;26403:56;;;;;;;;;;;;26487:17;26470:14;;:34;;;;;;;;;;;;;;;;;;26551:9;;;;;;;;;;;26520:41;;26537:12;26520:41;;;;;;;;;;;;26584:12;26572:9;;:24;;;;;;;;;;;;;;;;;;26293:311:::0;;:::o;5877:355::-;6017:4;6034:36;6044:6;6052:9;6063:6;6034:9;:36::i;:::-;6081:121;6090:6;6098:12;:10;:12::i;:::-;6112:89;6150:6;6112:89;;;;;;;;;;;;;;;;;:11;:19;6124:6;6112:19;;;;;;;;;;;;;;;:33;6132:12;:10;:12::i;:::-;6112:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6081:8;:121::i;:::-;6220:4;6213:11;;5877:355;;;;;:::o;5006:93::-;5064:5;5089:2;5082:9;;5006:93;:::o;6240:218::-;6328:4;6345:83;6354:12;:10;:12::i;:::-;6368:7;6377:50;6416:10;6377:11;:25;6389:12;:10;:12::i;:::-;6377:25;;;;;;;;;;;;;;;:34;6403:7;6377:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6345:8;:83::i;:::-;6446:4;6439:11;;6240:218;;;;:::o;25706:127::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25812:13:::1;25790:10;:19;25801:7;25790:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25706:127:::0;;:::o;17813:38::-;;;:::o;26619:125::-;26684:4;26708:19;:28;26728:7;26708:28;;;;;;;;;;;;;;;;;;;;;;;;;26701:35;;26619:125;;;:::o;18652:29::-;;;;:::o;25397:109::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25491:7:::1;25477:11;;:21;;;;;;;;;;;;;;;;;;25397:109:::0;:::o;18759:28::-;;;;:::o;18794:30::-;;;;:::o;18136:::-;;;;;;;;;;;;;:::o;5223:127::-;5297:7;5324:9;:18;5334:7;5324:18;;;;;;;;;;;;;;;;5317:25;;5223:127;;;:::o;10761:148::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10868:1:::1;10831:40;;10852:6;;;;;;;;;;;10831:40;;;;;;;;;;;;10899:1;10882:6;;:19;;;;;;;;;;;;;;;;;;10761:148::o:0;17966:20::-;;;;:::o;22803:118::-;22855:4;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22886:5:::1;22871:12;;:20;;;;;;;;;;;;;;;;;;22909:4;22902:11;;22803:118:::0;:::o;24090:144::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24222:4:::1;24180:31;:39;24212:6;24180:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24090:144:::0;;:::o;23688:393::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23832:4:::1;23826;23822:1;23806:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23805:31;;;;:::i;:::-;23795:6;:41;;23787:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;23948:4;23942;23938:1;23922:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23921:31;;;;:::i;:::-;23907:10;:45;;23899:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;24022:6;24012;:17;;;;:::i;:::-;24004:5;:25;;;;24066:6;24052:10;:21;;;;:::i;:::-;24040:9;:33;;;;23688:393:::0;;:::o;10547:79::-;10585:7;10612:6;;;;;;;;;;;10605:13;;10547:79;:::o;4894:104::-;4950:13;4983:7;4976:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4894:104;:::o;25842:245::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25949:13:::1;25941:21;;:4;:21;;::::0;25933:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26038:41;26067:4;26073:5;26038:28;:41::i;:::-;25842:245:::0;;:::o;18725:24::-;;;;:::o;18983:27::-;;;;:::o;18869:25::-;;;;:::o;6466:269::-;6559:4;6576:129;6585:12;:10;:12::i;:::-;6599:7;6608:96;6647:15;6608:96;;;;;;;;;;;;;;;;;:11;:25;6620:12;:10;:12::i;:::-;6608:25;;;;;;;;;;;;;;;:34;6634:7;6608:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6576:8;:129::i;:::-;6723:4;6716:11;;6466:269;;;;:::o;5358:175::-;5444:4;5461:42;5471:12;:10;:12::i;:::-;5485:9;5496:6;5461:9;:42::i;:::-;5521:4;5514:11;;5358:175;;;;:::o;19452:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;25515:182::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25631:8:::1;25600:19;:28;25620:7;25600:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25671:7;25655:34;;;25680:8;25655:34;;;;;;:::i;:::-;;;;;;;;25515:182:::0;;:::o;22537:213::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22604:3:::1;22601:114;;;22633:4;22619:11;;:18;;;;;;;;;;;;;;;;;;22662:4;22648:11;;:18;;;;;;;;;;;;;;;;;;22690:12;22677:10;:25;;;;22601:114;22537:213:::0;:::o;18569:39::-;;;;;;;;;;;;;:::o;18904:32::-;;;;:::o;23308:371::-;23380:4;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23437:6:::1;23433:1;23417:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;23404:9;:39;;23396:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;23553:4;23549:1;23533:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23520:9;:37;;23512:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23640:9;23625:12;:24;;;;23667:4;23660:11;;23308:371:::0;;;:::o;18618:27::-;;;;:::o;5541:151::-;5630:7;5657:11;:18;5669:5;5657:18;;;;;;;;;;;;;;;:27;5676:7;5657:27;;;;;;;;;;;;;;;;5650:34;;5541:151;;;;:::o;17993:27::-;;;;:::o;22983:134::-;23043:4;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23082:5:::1;23059:20;;:28;;;;;;;;;;;;;;;;;;23105:4;23098:11;;22983:134:::0;:::o;18688:30::-;;;;:::o;10917:244::-;10684:12;:10;:12::i;:::-;10674:22;;:6;;;;;;;;;;;:22;;;10666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11026:1:::1;11006:22;;:8;:22;;::::0;10998:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11116:8;11087:38;;11108:6;;;;;;;;;;;11087:38;;;;;;;;;;;;11145:8;11136:6;;:17;;;;;;;;;;;;;;;;;;10917:244:::0;:::o;18831:31::-;;;;:::o;18027:24::-;;;;:::o;139:98::-;192:7;219:10;212:17;;139:98;:::o;8142:381::-;8295:1;8278:19;;:5;:19;;;8270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8376:1;8357:21;;:7;:21;;;8349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8461:6;8431:11;:18;8443:5;8431:18;;;;;;;;;;;;;;;:27;8450:7;8431:27;;;;;;;;;;;;;;;:36;;;;8499:7;8483:32;;8492:5;8483:32;;;8508:6;8483:32;;;;;;:::i;:::-;;;;;;;;8142:381;;;:::o;26753:4111::-;26901:1;26885:18;;:4;:18;;;26877:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26978:1;26964:16;;:2;:16;;;26956:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27040:10;:14;27051:2;27040:14;;;;;;;;;;;;;;;;;;;;;;;;;27039:15;:36;;;;;27059:10;:16;27070:4;27059:16;;;;;;;;;;;;;;;;;;;;;;;;;27058:17;27039:36;27031:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;27154:1;27144:6;:11;27141:92;;27172:28;27188:4;27194:2;27198:1;27172:15;:28::i;:::-;27215:7;;27141:92;27249:12;;;;;;;;;;;27246:1779;;;27307:7;:5;:7::i;:::-;27299:15;;:4;:15;;;;:49;;;;;27341:7;:5;:7::i;:::-;27335:13;;:2;:13;;;;27299:49;:86;;;;;27383:1;27369:16;;:2;:16;;;;27299:86;:128;;;;;27420:6;27406:21;;:2;:21;;;;27299:128;:160;;;;;27449:10;;;;;;;;;;;27448:11;27299:160;27277:1737;;;27497:11;;;;;;;;;;;27493:146;;27540:19;:25;27560:4;27540:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27569:19;:23;27589:2;27569:23;;;;;;;;;;;;;;;;;;;;;;;;;27540:52;27532:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27493:146;27798:20;;;;;;;;;;;27794:423;;;27852:7;:5;:7::i;:::-;27846:13;;:2;:13;;;;:47;;;;;27877:15;27863:30;;:2;:30;;;;27846:47;:79;;;;;27911:13;27897:28;;:2;:28;;;;27846:79;27842:356;;;28003:12;27961:28;:39;27990:9;27961:39;;;;;;;;;;;;;;;;:54;27953:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28162:12;28120:28;:39;28149:9;28120:39;;;;;;;;;;;;;;;:54;;;;27842:356;27794:423;28270:25;:31;28296:4;28270:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28306:31;:35;28338:2;28306:35;;;;;;;;;;;;;;;;;;;;;;;;;28305:36;28270:71;28266:733;;;28388:5;;28378:6;:15;;28370:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;28512:9;;28495:13;28505:2;28495:9;:13::i;:::-;28486:6;:22;;;;:::i;:::-;:35;;28478:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28266:733;;;28624:25;:29;28650:2;28624:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28658:31;:37;28690:4;28658:37;;;;;;;;;;;;;;;;;;;;;;;;;28657:38;28624:71;28620:379;;;28742:5;;28732:6;:15;;28724:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;28620:379;;;28853:31;:35;28885:2;28853:35;;;;;;;;;;;;;;;;;;;;;;;;;28849:150;;28946:9;;28929:13;28939:2;28929:9;:13::i;:::-;28920:6;:22;;;;:::i;:::-;:35;;28912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28849:150;28620:379;28266:733;27277:1737;27246:1779;29038:28;29069:24;29087:4;29069:9;:24::i;:::-;29038:55;;29107:12;29146;;29122:20;:36;;29107:51;;29190:7;:35;;;;;29214:11;;;;;;;;;;;29190:35;:63;;;;;29243:10;;;;;;;;;;;29242:11;29190:63;:112;;;;;29271:25;:31;29297:4;29271:31;;;;;;;;;;;;;;;;;;;;;;;;;29270:32;29190:112;:155;;;;;29320:19;:25;29340:4;29320:25;;;;;;;;;;;;;;;;;;;;;;;;;29319:26;29190:155;:196;;;;;29363:19;:23;29383:2;29363:23;;;;;;;;;;;;;;;;;;;;;;;;;29362:24;29190:196;29172:334;;;29426:4;29413:10;;:17;;;;;;;;;;;;;;;;;;29448:10;:8;:10::i;:::-;29489:5;29476:10;;:18;;;;;;;;;;;;;;;;;;29172:334;29519:12;29535:10;;;;;;;;;;;29534:11;29519:26;;29647:19;:25;29667:4;29647:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29676:19;:23;29696:2;29676:23;;;;;;;;;;;;;;;;;;;;;;;;;29647:52;29644:99;;;29726:5;29716:15;;29644:99;29756:12;29860:7;29857:953;;;29911:25;:29;29937:2;29911:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29960:1;29944:13;;:17;29911:50;29907:750;;;29988:34;30018:3;29988:25;29999:13;;29988:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29981:41;;30089:13;;30070:16;;30063:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30041:18;;:61;;;;;;;:::i;:::-;;;;;;;;30157:13;;30144:10;;30137:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;30121:12;;:49;;;;;;;:::i;:::-;;;;;;;;30235:13;;30217:15;;30210:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;30189:17;;:59;;;;;;;:::i;:::-;;;;;;;;29907:750;;;30309:25;:31;30335:4;30309:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30359:1;30344:12;;:16;30309:51;30306:351;;;30388:33;30417:3;30388:24;30399:12;;30388:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30381:40;;30487:12;;30469:15;;30462:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30440:18;;:59;;;;;;;:::i;:::-;;;;;;;;30553:12;;30541:9;;30534:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;30518:12;;:47;;;;;;;:::i;:::-;;;;;;;;30629:12;;30612:14;;30605:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;30584:17;;:57;;;;;;;:::i;:::-;;;;;;;;30306:351;29907:750;30684:1;30677:4;:8;30674:93;;;30709:42;30725:4;30739;30746;30709:15;:42::i;:::-;30674:93;30794:4;30784:14;;;;;:::i;:::-;;;29857:953;30823:33;30839:4;30845:2;30849:6;30823:15;:33::i;:::-;26866:3998;;;;26753:4111;;;;:::o;9024:193::-;9110:7;9143:1;9138;:6;;9146:12;9130:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9170:9;9186:1;9182;:5;;;;:::i;:::-;9170:17;;9208:1;9201:8;;;9024:193;;;;;:::o;8690:182::-;8748:7;8768:9;8784:1;8780;:5;;;;:::i;:::-;8768:17;;8809:1;8804;:6;;8796:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8863:1;8856:8;;;8690:182;;;;:::o;26096:189::-;26213:5;26179:25;:31;26205:4;26179:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26271:5;26237:40;;26265:4;26237:40;;;;;;;;;;;;26096:189;;:::o;6743:575::-;6901:1;6883:20;;:6;:20;;;6875:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6985:1;6964:23;;:9;:23;;;6956:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7041:47;7062:6;7070:9;7081:6;7041:20;:47::i;:::-;7122:71;7144:6;7122:71;;;;;;;;;;;;;;;;;:9;:17;7132:6;7122:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7102:9;:17;7112:6;7102:17;;;;;;;;;;;;;;;:91;;;;7227:32;7252:6;7227:9;:20;7237:9;7227:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7204:9;:20;7214:9;7204:20;;;;;;;;;;;;;;;:55;;;;7292:9;7275:35;;7284:6;7275:35;;;7303:6;7275:35;;;;;;:::i;:::-;;;;;;;;6743:575;;;:::o;32008:1705::-;32047:23;32073:24;32091:4;32073:9;:24::i;:::-;32047:50;;32108:25;32177:12;;32157:17;;32136:18;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;32108:81;;32200:12;32248:1;32229:15;:20;:46;;;;32274:1;32253:17;:22;32229:46;32226:60;;;32278:7;;;;;32226:60;32327:5;32302:30;;:21;;;;;;;;;;;:30;;;32299:242;;32384:2;32369:12;;:17;;;;:::i;:::-;32351:15;:35;32348:109;;;32439:2;32424:12;;:17;;;;:::i;:::-;32406:35;;32348:109;32299:242;;;32505:24;32523:4;32505:9;:24::i;:::-;32487:42;;32299:242;32613:23;32698:1;32678:17;32657:18;;32639:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32613:86;;32710:26;32739:36;32759:15;32739;:19;;:36;;;;:::i;:::-;32710:65;;32789:25;32817:21;32789:49;;32852:36;32869:18;32852:16;:36::i;:::-;32903:18;32924:44;32950:17;32924:21;:25;;:44;;;;:::i;:::-;32903:65;;32982:23;33008:56;33046:17;33008:33;33023:17;;33008:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;32982:82;;33075:17;33095:51;33128:17;33095:28;33110:12;;33095:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33075:71;;33157:23;33214:9;33196:15;33183:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;33157:66;;33261:1;33240:18;:22;;;;33293:1;33273:17;:21;;;;33320:1;33305:12;:16;;;;33356:9;;;;;;;;;;;33348:23;;33379:9;33348:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33335:58;;;;;33428:1;33410:15;:19;:42;;;;;33451:1;33433:15;:19;33410:42;33407:210;;;33468:46;33481:15;33498;33468:12;:46::i;:::-;33534:71;33549:18;33569:15;33586:18;;33534:71;;;;;;;;:::i;:::-;;;;;;;;33407:210;33651:14;;;;;;;;;;;33643:28;;33679:21;33643:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33630:75;;;;;32036:1677;;;;;;;;;;32008:1705;:::o;9225:254::-;9283:7;9314:1;9309;:6;9305:47;;9339:1;9332:8;;;;9305:47;9365:9;9381:1;9377;:5;;;;:::i;:::-;9365:17;;9410:1;9405;9401;:5;;;;:::i;:::-;:10;9393:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9470:1;9463:8;;;9225:254;;;;;:::o;9487:132::-;9545:7;9572:39;9576:1;9579;9572:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9565:46;;9487:132;;;;:::o;8531:125::-;;;;:::o;8880:136::-;8938:7;8965:43;8969:1;8972;8965:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8958:50;;8880:136;;;;:::o;30873:597::-;31002:21;31040:1;31026:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31002:40;;31071:4;31053;31058:1;31053:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31097:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31087:4;31092:1;31087:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31133:62;31150:4;31165:15;31183:11;31133:8;:62::i;:::-;31235:15;:66;;;31316:11;31342:1;31386:4;31413;31433:15;31235:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30928:542;30873:597;:::o;31479:520::-;31627:62;31644:4;31659:15;31677:11;31627:8;:62::i;:::-;31733:15;:31;;;31772:9;31805:4;31825:11;31851:1;31894;31945:4;31965:15;31733:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31479:520;;:::o;9627:279::-;9713:7;9745:1;9741;:5;9748:12;9733:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9772:9;9788:1;9784;:5;;;;:::i;:::-;9772:17;;9897:1;9890:8;;;9627:279;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:1057::-;794:6;802;810;818;826;834;883:3;871:9;862:7;858:23;854:33;851:120;;;890:79;;:::i;:::-;851:120;1010:1;1035:53;1080:7;1071:6;1060:9;1056:22;1035:53;:::i;:::-;1025:63;;981:117;1137:2;1163:53;1208:7;1199:6;1188:9;1184:22;1163:53;:::i;:::-;1153:63;;1108:118;1265:2;1291:53;1336:7;1327:6;1316:9;1312:22;1291:53;:::i;:::-;1281:63;;1236:118;1393:2;1419:53;1464:7;1455:6;1444:9;1440:22;1419:53;:::i;:::-;1409:63;;1364:118;1521:3;1548:53;1593:7;1584:6;1573:9;1569:22;1548:53;:::i;:::-;1538:63;;1492:119;1650:3;1677:53;1722:7;1713:6;1702:9;1698:22;1677:53;:::i;:::-;1667:63;;1621:119;690:1057;;;;;;;;:::o;1753:99::-;1805:6;1839:5;1833:12;1823:22;;1753:99;;;:::o;1858:169::-;1942:11;1976:6;1971:3;1964:19;2016:4;2011:3;2007:14;1992:29;;1858:169;;;;:::o;2033:246::-;2114:1;2124:113;2138:6;2135:1;2132:13;2124:113;;;2223:1;2218:3;2214:11;2208:18;2204:1;2199:3;2195:11;2188:39;2160:2;2157:1;2153:10;2148:15;;2124:113;;;2271:1;2262:6;2257:3;2253:16;2246:27;2095:184;2033:246;;;:::o;2285:102::-;2326:6;2377:2;2373:7;2368:2;2361:5;2357:14;2353:28;2343:38;;2285:102;;;:::o;2393:377::-;2481:3;2509:39;2542:5;2509:39;:::i;:::-;2564:71;2628:6;2623:3;2564:71;:::i;:::-;2557:78;;2644:65;2702:6;2697:3;2690:4;2683:5;2679:16;2644:65;:::i;:::-;2734:29;2756:6;2734:29;:::i;:::-;2729:3;2725:39;2718:46;;2485:285;2393:377;;;;:::o;2776:313::-;2889:4;2927:2;2916:9;2912:18;2904:26;;2976:9;2970:4;2966:20;2962:1;2951:9;2947:17;2940:47;3004:78;3077:4;3068:6;3004:78;:::i;:::-;2996:86;;2776:313;;;;:::o;3095:126::-;3132:7;3172:42;3165:5;3161:54;3150:65;;3095:126;;;:::o;3227:96::-;3264:7;3293:24;3311:5;3293:24;:::i;:::-;3282:35;;3227:96;;;:::o;3329:122::-;3402:24;3420:5;3402:24;:::i;:::-;3395:5;3392:35;3382:63;;3441:1;3438;3431:12;3382:63;3329:122;:::o;3457:139::-;3503:5;3541:6;3528:20;3519:29;;3557:33;3584:5;3557:33;:::i;:::-;3457:139;;;;:::o;3602:474::-;3670:6;3678;3727:2;3715:9;3706:7;3702:23;3698:32;3695:119;;;3733:79;;:::i;:::-;3695:119;3853:1;3878:53;3923:7;3914:6;3903:9;3899:22;3878:53;:::i;:::-;3868:63;;3824:117;3980:2;4006:53;4051:7;4042:6;4031:9;4027:22;4006:53;:::i;:::-;3996:63;;3951:118;3602:474;;;;;:::o;4082:90::-;4116:7;4159:5;4152:13;4145:21;4134:32;;4082:90;;;:::o;4178:109::-;4259:21;4274:5;4259:21;:::i;:::-;4254:3;4247:34;4178:109;;:::o;4293:210::-;4380:4;4418:2;4407:9;4403:18;4395:26;;4431:65;4493:1;4482:9;4478:17;4469:6;4431:65;:::i;:::-;4293:210;;;;:::o;4509:329::-;4568:6;4617:2;4605:9;4596:7;4592:23;4588:32;4585:119;;;4623:79;;:::i;:::-;4585:119;4743:1;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;:::i;:::-;4758:63;;4714:117;4509:329;;;;:::o;4844:60::-;4872:3;4893:5;4886:12;;4844:60;;;:::o;4910:142::-;4960:9;4993:53;5011:34;5020:24;5038:5;5020:24;:::i;:::-;5011:34;:::i;:::-;4993:53;:::i;:::-;4980:66;;4910:142;;;:::o;5058:126::-;5108:9;5141:37;5172:5;5141:37;:::i;:::-;5128:50;;5058:126;;;:::o;5190:153::-;5267:9;5300:37;5331:5;5300:37;:::i;:::-;5287:50;;5190:153;;;:::o;5349:185::-;5463:64;5521:5;5463:64;:::i;:::-;5458:3;5451:77;5349:185;;:::o;5540:276::-;5660:4;5698:2;5687:9;5683:18;5675:26;;5711:98;5806:1;5795:9;5791:17;5782:6;5711:98;:::i;:::-;5540:276;;;;:::o;5822:118::-;5909:24;5927:5;5909:24;:::i;:::-;5904:3;5897:37;5822:118;;:::o;5946:222::-;6039:4;6077:2;6066:9;6062:18;6054:26;;6090:71;6158:1;6147:9;6143:17;6134:6;6090:71;:::i;:::-;5946:222;;;;:::o;6174:116::-;6244:21;6259:5;6244:21;:::i;:::-;6237:5;6234:32;6224:60;;6280:1;6277;6270:12;6224:60;6174:116;:::o;6296:133::-;6339:5;6377:6;6364:20;6355:29;;6393:30;6417:5;6393:30;:::i;:::-;6296:133;;;;:::o;6435:323::-;6491:6;6540:2;6528:9;6519:7;6515:23;6511:32;6508:119;;;6546:79;;:::i;:::-;6508:119;6666:1;6691:50;6733:7;6724:6;6713:9;6709:22;6691:50;:::i;:::-;6681:60;;6637:114;6435:323;;;;:::o;6764:474::-;6832:6;6840;6889:2;6877:9;6868:7;6864:23;6860:32;6857:119;;;6895:79;;:::i;:::-;6857:119;7015:1;7040:53;7085:7;7076:6;7065:9;7061:22;7040:53;:::i;:::-;7030:63;;6986:117;7142:2;7168:53;7213:7;7204:6;7193:9;7189:22;7168:53;:::i;:::-;7158:63;;7113:118;6764:474;;;;;:::o;7244:619::-;7321:6;7329;7337;7386:2;7374:9;7365:7;7361:23;7357:32;7354:119;;;7392:79;;:::i;:::-;7354:119;7512:1;7537:53;7582:7;7573:6;7562:9;7558:22;7537:53;:::i;:::-;7527:63;;7483:117;7639:2;7665:53;7710:7;7701:6;7690:9;7686:22;7665:53;:::i;:::-;7655:63;;7610:118;7767:2;7793:53;7838:7;7829:6;7818:9;7814:22;7793:53;:::i;:::-;7783:63;;7738:118;7244:619;;;;;:::o;7869:86::-;7904:7;7944:4;7937:5;7933:16;7922:27;;7869:86;;;:::o;7961:112::-;8044:22;8060:5;8044:22;:::i;:::-;8039:3;8032:35;7961:112;;:::o;8079:214::-;8168:4;8206:2;8195:9;8191:18;8183:26;;8219:67;8283:1;8272:9;8268:17;8259:6;8219:67;:::i;:::-;8079:214;;;;:::o;8299:468::-;8364:6;8372;8421:2;8409:9;8400:7;8396:23;8392:32;8389:119;;;8427:79;;:::i;:::-;8389:119;8547:1;8572:53;8617:7;8608:6;8597:9;8593:22;8572:53;:::i;:::-;8562:63;;8518:117;8674:2;8700:50;8742:7;8733:6;8722:9;8718:22;8700:50;:::i;:::-;8690:60;;8645:115;8299:468;;;;;:::o;8773:118::-;8860:24;8878:5;8860:24;:::i;:::-;8855:3;8848:37;8773:118;;:::o;8897:222::-;8990:4;9028:2;9017:9;9013:18;9005:26;;9041:71;9109:1;9098:9;9094:17;9085:6;9041:71;:::i;:::-;8897:222;;;;:::o;9125:474::-;9193:6;9201;9250:2;9238:9;9229:7;9225:23;9221:32;9218:119;;;9256:79;;:::i;:::-;9218:119;9376:1;9401:53;9446:7;9437:6;9426:9;9422:22;9401:53;:::i;:::-;9391:63;;9347:117;9503:2;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9474:118;9125:474;;;;;:::o;9605:329::-;9664:6;9713:2;9701:9;9692:7;9688:23;9684:32;9681:119;;;9719:79;;:::i;:::-;9681:119;9839:1;9864:53;9909:7;9900:6;9889:9;9885:22;9864:53;:::i;:::-;9854:63;;9810:117;9605:329;;;;:::o;9940:182::-;10080:34;10076:1;10068:6;10064:14;10057:58;9940:182;:::o;10128:366::-;10270:3;10291:67;10355:2;10350:3;10291:67;:::i;:::-;10284:74;;10367:93;10456:3;10367:93;:::i;:::-;10485:2;10480:3;10476:12;10469:19;;10128:366;;;:::o;10500:419::-;10666:4;10704:2;10693:9;10689:18;10681:26;;10753:9;10747:4;10743:20;10739:1;10728:9;10724:17;10717:47;10781:131;10907:4;10781:131;:::i;:::-;10773:139;;10500:419;;;:::o;10925:222::-;11065:34;11061:1;11053:6;11049:14;11042:58;11134:5;11129:2;11121:6;11117:15;11110:30;10925:222;:::o;11153:366::-;11295:3;11316:67;11380:2;11375:3;11316:67;:::i;:::-;11309:74;;11392:93;11481:3;11392:93;:::i;:::-;11510:2;11505:3;11501:12;11494:19;;11153:366;;;:::o;11525:419::-;11691:4;11729:2;11718:9;11714:18;11706:26;;11778:9;11772:4;11768:20;11764:1;11753:9;11749:17;11742:47;11806:131;11932:4;11806:131;:::i;:::-;11798:139;;11525:419;;;:::o;11950:180::-;11998:77;11995:1;11988:88;12095:4;12092:1;12085:15;12119:4;12116:1;12109:15;12136:191;12176:3;12195:20;12213:1;12195:20;:::i;:::-;12190:25;;12229:20;12247:1;12229:20;:::i;:::-;12224:25;;12272:1;12269;12265:9;12258:16;;12293:3;12290:1;12287:10;12284:36;;;12300:18;;:::i;:::-;12284:36;12136:191;;;;:::o;12333:180::-;12473:32;12469:1;12461:6;12457:14;12450:56;12333:180;:::o;12519:366::-;12661:3;12682:67;12746:2;12741:3;12682:67;:::i;:::-;12675:74;;12758:93;12847:3;12758:93;:::i;:::-;12876:2;12871:3;12867:12;12860:19;;12519:366;;;:::o;12891:419::-;13057:4;13095:2;13084:9;13080:18;13072:26;;13144:9;13138:4;13134:20;13130:1;13119:9;13115:17;13108:47;13172:131;13298:4;13172:131;:::i;:::-;13164:139;;12891:419;;;:::o;13316:180::-;13364:77;13361:1;13354:88;13461:4;13458:1;13451:15;13485:4;13482:1;13475:15;13502:320;13546:6;13583:1;13577:4;13573:12;13563:22;;13630:1;13624:4;13620:12;13651:18;13641:81;;13707:4;13699:6;13695:17;13685:27;;13641:81;13769:2;13761:6;13758:14;13738:18;13735:38;13732:84;;13788:18;;:::i;:::-;13732:84;13553:269;13502:320;;;:::o;13828:410::-;13868:7;13891:20;13909:1;13891:20;:::i;:::-;13886:25;;13925:20;13943:1;13925:20;:::i;:::-;13920:25;;13980:1;13977;13973:9;14002:30;14020:11;14002:30;:::i;:::-;13991:41;;14181:1;14172:7;14168:15;14165:1;14162:22;14142:1;14135:9;14115:83;14092:139;;14211:18;;:::i;:::-;14092:139;13876:362;13828:410;;;;:::o;14244:180::-;14292:77;14289:1;14282:88;14389:4;14386:1;14379:15;14413:4;14410:1;14403:15;14430:185;14470:1;14487:20;14505:1;14487:20;:::i;:::-;14482:25;;14521:20;14539:1;14521:20;:::i;:::-;14516:25;;14560:1;14550:35;;14565:18;;:::i;:::-;14550:35;14607:1;14604;14600:9;14595:14;;14430:185;;;;:::o;14621:234::-;14761:34;14757:1;14749:6;14745:14;14738:58;14830:17;14825:2;14817:6;14813:15;14806:42;14621:234;:::o;14861:366::-;15003:3;15024:67;15088:2;15083:3;15024:67;:::i;:::-;15017:74;;15100:93;15189:3;15100:93;:::i;:::-;15218:2;15213:3;15209:12;15202:19;;14861:366;;;:::o;15233:419::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15486:9;15480:4;15476:20;15472:1;15461:9;15457:17;15450:47;15514:131;15640:4;15514:131;:::i;:::-;15506:139;;15233:419;;;:::o;15658:223::-;15798:34;15794:1;15786:6;15782:14;15775:58;15867:6;15862:2;15854:6;15850:15;15843:31;15658:223;:::o;15887:366::-;16029:3;16050:67;16114:2;16109:3;16050:67;:::i;:::-;16043:74;;16126:93;16215:3;16126:93;:::i;:::-;16244:2;16239:3;16235:12;16228:19;;15887:366;;;:::o;16259:419::-;16425:4;16463:2;16452:9;16448:18;16440:26;;16512:9;16506:4;16502:20;16498:1;16487:9;16483:17;16476:47;16540:131;16666:4;16540:131;:::i;:::-;16532:139;;16259:419;;;:::o;16684:244::-;16824:34;16820:1;16812:6;16808:14;16801:58;16893:27;16888:2;16880:6;16876:15;16869:52;16684:244;:::o;16934:366::-;17076:3;17097:67;17161:2;17156:3;17097:67;:::i;:::-;17090:74;;17173:93;17262:3;17173:93;:::i;:::-;17291:2;17286:3;17282:12;17275:19;;16934:366;;;:::o;17306:419::-;17472:4;17510:2;17499:9;17495:18;17487:26;;17559:9;17553:4;17549:20;17545:1;17534:9;17530:17;17523:47;17587:131;17713:4;17587:131;:::i;:::-;17579:139;;17306:419;;;:::o;17731:240::-;17871:34;17867:1;17859:6;17855:14;17848:58;17940:23;17935:2;17927:6;17923:15;17916:48;17731:240;:::o;17977:366::-;18119:3;18140:67;18204:2;18199:3;18140:67;:::i;:::-;18133:74;;18216:93;18305:3;18216:93;:::i;:::-;18334:2;18329:3;18325:12;18318:19;;17977:366;;;:::o;18349:419::-;18515:4;18553:2;18542:9;18538:18;18530:26;;18602:9;18596:4;18592:20;18588:1;18577:9;18573:17;18566:47;18630:131;18756:4;18630:131;:::i;:::-;18622:139;;18349:419;;;:::o;18774:239::-;18914:34;18910:1;18902:6;18898:14;18891:58;18983:22;18978:2;18970:6;18966:15;18959:47;18774:239;:::o;19019:366::-;19161:3;19182:67;19246:2;19241:3;19182:67;:::i;:::-;19175:74;;19258:93;19347:3;19258:93;:::i;:::-;19376:2;19371:3;19367:12;19360:19;;19019:366;;;:::o;19391:419::-;19557:4;19595:2;19584:9;19580:18;19572:26;;19644:9;19638:4;19634:20;19630:1;19619:9;19615:17;19608:47;19672:131;19798:4;19672:131;:::i;:::-;19664:139;;19391:419;;;:::o;19816:225::-;19956:34;19952:1;19944:6;19940:14;19933:58;20025:8;20020:2;20012:6;20008:15;20001:33;19816:225;:::o;20047:366::-;20189:3;20210:67;20274:2;20269:3;20210:67;:::i;:::-;20203:74;;20286:93;20375:3;20286:93;:::i;:::-;20404:2;20399:3;20395:12;20388:19;;20047:366;;;:::o;20419:419::-;20585:4;20623:2;20612:9;20608:18;20600:26;;20672:9;20666:4;20662:20;20658:1;20647:9;20643:17;20636:47;20700:131;20826:4;20700:131;:::i;:::-;20692:139;;20419:419;;;:::o;20844:223::-;20984:34;20980:1;20972:6;20968:14;20961:58;21053:6;21048:2;21040:6;21036:15;21029:31;20844:223;:::o;21073:366::-;21215:3;21236:67;21300:2;21295:3;21236:67;:::i;:::-;21229:74;;21312:93;21401:3;21312:93;:::i;:::-;21430:2;21425:3;21421:12;21414:19;;21073:366;;;:::o;21445:419::-;21611:4;21649:2;21638:9;21634:18;21626:26;;21698:9;21692:4;21688:20;21684:1;21673:9;21669:17;21662:47;21726:131;21852:4;21726:131;:::i;:::-;21718:139;;21445:419;;;:::o;21870:221::-;22010:34;22006:1;21998:6;21994:14;21987:58;22079:4;22074:2;22066:6;22062:15;22055:29;21870:221;:::o;22097:366::-;22239:3;22260:67;22324:2;22319:3;22260:67;:::i;:::-;22253:74;;22336:93;22425:3;22336:93;:::i;:::-;22454:2;22449:3;22445:12;22438:19;;22097:366;;;:::o;22469:419::-;22635:4;22673:2;22662:9;22658:18;22650:26;;22722:9;22716:4;22712:20;22708:1;22697:9;22693:17;22686:47;22750:131;22876:4;22750:131;:::i;:::-;22742:139;;22469:419;;;:::o;22894:224::-;23034:34;23030:1;23022:6;23018:14;23011:58;23103:7;23098:2;23090:6;23086:15;23079:32;22894:224;:::o;23124:366::-;23266:3;23287:67;23351:2;23346:3;23287:67;:::i;:::-;23280:74;;23363:93;23452:3;23363:93;:::i;:::-;23481:2;23476:3;23472:12;23465:19;;23124:366;;;:::o;23496:419::-;23662:4;23700:2;23689:9;23685:18;23677:26;;23749:9;23743:4;23739:20;23735:1;23724:9;23720:17;23713:47;23777:131;23903:4;23777:131;:::i;:::-;23769:139;;23496:419;;;:::o;23921:222::-;24061:34;24057:1;24049:6;24045:14;24038:58;24130:5;24125:2;24117:6;24113:15;24106:30;23921:222;:::o;24149:366::-;24291:3;24312:67;24376:2;24371:3;24312:67;:::i;:::-;24305:74;;24388:93;24477:3;24388:93;:::i;:::-;24506:2;24501:3;24497:12;24490:19;;24149:366;;;:::o;24521:419::-;24687:4;24725:2;24714:9;24710:18;24702:26;;24774:9;24768:4;24764:20;24760:1;24749:9;24745:17;24738:47;24802:131;24928:4;24802:131;:::i;:::-;24794:139;;24521:419;;;:::o;24946:236::-;25086:34;25082:1;25074:6;25070:14;25063:58;25155:19;25150:2;25142:6;25138:15;25131:44;24946:236;:::o;25188:366::-;25330:3;25351:67;25415:2;25410:3;25351:67;:::i;:::-;25344:74;;25427:93;25516:3;25427:93;:::i;:::-;25545:2;25540:3;25536:12;25529:19;;25188:366;;;:::o;25560:419::-;25726:4;25764:2;25753:9;25749:18;25741:26;;25813:9;25807:4;25803:20;25799:1;25788:9;25784:17;25777:47;25841:131;25967:4;25841:131;:::i;:::-;25833:139;;25560:419;;;:::o;25985:172::-;26125:24;26121:1;26113:6;26109:14;26102:48;25985:172;:::o;26163:366::-;26305:3;26326:67;26390:2;26385:3;26326:67;:::i;:::-;26319:74;;26402:93;26491:3;26402:93;:::i;:::-;26520:2;26515:3;26511:12;26504:19;;26163:366;;;:::o;26535:419::-;26701:4;26739:2;26728:9;26724:18;26716:26;;26788:9;26782:4;26778:20;26774:1;26763:9;26759:17;26752:47;26816:131;26942:4;26816:131;:::i;:::-;26808:139;;26535:419;;;:::o;26960:297::-;27100:34;27096:1;27088:6;27084:14;27077:58;27169:34;27164:2;27156:6;27152:15;27145:59;27238:11;27233:2;27225:6;27221:15;27214:36;26960:297;:::o;27263:366::-;27405:3;27426:67;27490:2;27485:3;27426:67;:::i;:::-;27419:74;;27502:93;27591:3;27502:93;:::i;:::-;27620:2;27615:3;27611:12;27604:19;;27263:366;;;:::o;27635:419::-;27801:4;27839:2;27828:9;27824:18;27816:26;;27888:9;27882:4;27878:20;27874:1;27863:9;27859:17;27852:47;27916:131;28042:4;27916:131;:::i;:::-;27908:139;;27635:419;;;:::o;28060:240::-;28200:34;28196:1;28188:6;28184:14;28177:58;28269:23;28264:2;28256:6;28252:15;28245:48;28060:240;:::o;28306:366::-;28448:3;28469:67;28533:2;28528:3;28469:67;:::i;:::-;28462:74;;28545:93;28634:3;28545:93;:::i;:::-;28663:2;28658:3;28654:12;28647:19;;28306:366;;;:::o;28678:419::-;28844:4;28882:2;28871:9;28867:18;28859:26;;28931:9;28925:4;28921:20;28917:1;28906:9;28902:17;28895:47;28959:131;29085:4;28959:131;:::i;:::-;28951:139;;28678:419;;;:::o;29103:169::-;29243:21;29239:1;29231:6;29227:14;29220:45;29103:169;:::o;29278:366::-;29420:3;29441:67;29505:2;29500:3;29441:67;:::i;:::-;29434:74;;29517:93;29606:3;29517:93;:::i;:::-;29635:2;29630:3;29626:12;29619:19;;29278:366;;;:::o;29650:419::-;29816:4;29854:2;29843:9;29839:18;29831:26;;29903:9;29897:4;29893:20;29889:1;29878:9;29874:17;29867:47;29931:131;30057:4;29931:131;:::i;:::-;29923:139;;29650:419;;;:::o;30075:241::-;30215:34;30211:1;30203:6;30199:14;30192:58;30284:24;30279:2;30271:6;30267:15;30260:49;30075:241;:::o;30322:366::-;30464:3;30485:67;30549:2;30544:3;30485:67;:::i;:::-;30478:74;;30561:93;30650:3;30561:93;:::i;:::-;30679:2;30674:3;30670:12;30663:19;;30322:366;;;:::o;30694:419::-;30860:4;30898:2;30887:9;30883:18;30875:26;;30947:9;30941:4;30937:20;30933:1;30922:9;30918:17;30911:47;30975:131;31101:4;30975:131;:::i;:::-;30967:139;;30694:419;;;:::o;31119:194::-;31159:4;31179:20;31197:1;31179:20;:::i;:::-;31174:25;;31213:20;31231:1;31213:20;:::i;:::-;31208:25;;31257:1;31254;31250:9;31242:17;;31281:1;31275:4;31272:11;31269:37;;;31286:18;;:::i;:::-;31269:37;31119:194;;;;:::o;31319:177::-;31459:29;31455:1;31447:6;31443:14;31436:53;31319:177;:::o;31502:366::-;31644:3;31665:67;31729:2;31724:3;31665:67;:::i;:::-;31658:74;;31741:93;31830:3;31741:93;:::i;:::-;31859:2;31854:3;31850:12;31843:19;;31502:366;;;:::o;31874:419::-;32040:4;32078:2;32067:9;32063:18;32055:26;;32127:9;32121:4;32117:20;32113:1;32102:9;32098:17;32091:47;32155:131;32281:4;32155:131;:::i;:::-;32147:139;;31874:419;;;:::o;32299:147::-;32400:11;32437:3;32422:18;;32299:147;;;;:::o;32452:114::-;;:::o;32572:398::-;32731:3;32752:83;32833:1;32828:3;32752:83;:::i;:::-;32745:90;;32844:93;32933:3;32844:93;:::i;:::-;32962:1;32957:3;32953:11;32946:18;;32572:398;;;:::o;32976:379::-;33160:3;33182:147;33325:3;33182:147;:::i;:::-;33175:154;;33346:3;33339:10;;32976:379;;;:::o;33361:442::-;33510:4;33548:2;33537:9;33533:18;33525:26;;33561:71;33629:1;33618:9;33614:17;33605:6;33561:71;:::i;:::-;33642:72;33710:2;33699:9;33695:18;33686:6;33642:72;:::i;:::-;33724;33792:2;33781:9;33777:18;33768:6;33724:72;:::i;:::-;33361:442;;;;;;:::o;33809:220::-;33949:34;33945:1;33937:6;33933:14;33926:58;34018:3;34013:2;34005:6;34001:15;33994:28;33809:220;:::o;34035:366::-;34177:3;34198:67;34262:2;34257:3;34198:67;:::i;:::-;34191:74;;34274:93;34363:3;34274:93;:::i;:::-;34392:2;34387:3;34383:12;34376:19;;34035:366;;;:::o;34407:419::-;34573:4;34611:2;34600:9;34596:18;34588:26;;34660:9;34654:4;34650:20;34646:1;34635:9;34631:17;34624:47;34688:131;34814:4;34688:131;:::i;:::-;34680:139;;34407:419;;;:::o;34832:180::-;34880:77;34877:1;34870:88;34977:4;34974:1;34967:15;35001:4;34998:1;34991:15;35018:180;35066:77;35063:1;35056:88;35163:4;35160:1;35153:15;35187:4;35184:1;35177:15;35204:143;35261:5;35292:6;35286:13;35277:22;;35308:33;35335:5;35308:33;:::i;:::-;35204:143;;;;:::o;35353:351::-;35423:6;35472:2;35460:9;35451:7;35447:23;35443:32;35440:119;;;35478:79;;:::i;:::-;35440:119;35598:1;35623:64;35679:7;35670:6;35659:9;35655:22;35623:64;:::i;:::-;35613:74;;35569:128;35353:351;;;;:::o;35710:85::-;35755:7;35784:5;35773:16;;35710:85;;;:::o;35801:158::-;35859:9;35892:61;35910:42;35919:32;35945:5;35919:32;:::i;:::-;35910:42;:::i;:::-;35892:61;:::i;:::-;35879:74;;35801:158;;;:::o;35965:147::-;36060:45;36099:5;36060:45;:::i;:::-;36055:3;36048:58;35965:147;;:::o;36118:114::-;36185:6;36219:5;36213:12;36203:22;;36118:114;;;:::o;36238:184::-;36337:11;36371:6;36366:3;36359:19;36411:4;36406:3;36402:14;36387:29;;36238:184;;;;:::o;36428:132::-;36495:4;36518:3;36510:11;;36548:4;36543:3;36539:14;36531:22;;36428:132;;;:::o;36566:108::-;36643:24;36661:5;36643:24;:::i;:::-;36638:3;36631:37;36566:108;;:::o;36680:179::-;36749:10;36770:46;36812:3;36804:6;36770:46;:::i;:::-;36848:4;36843:3;36839:14;36825:28;;36680:179;;;;:::o;36865:113::-;36935:4;36967;36962:3;36958:14;36950:22;;36865:113;;;:::o;37014:732::-;37133:3;37162:54;37210:5;37162:54;:::i;:::-;37232:86;37311:6;37306:3;37232:86;:::i;:::-;37225:93;;37342:56;37392:5;37342:56;:::i;:::-;37421:7;37452:1;37437:284;37462:6;37459:1;37456:13;37437:284;;;37538:6;37532:13;37565:63;37624:3;37609:13;37565:63;:::i;:::-;37558:70;;37651:60;37704:6;37651:60;:::i;:::-;37641:70;;37497:224;37484:1;37481;37477:9;37472:14;;37437:284;;;37441:14;37737:3;37730:10;;37138:608;;;37014:732;;;;:::o;37752:831::-;38015:4;38053:3;38042:9;38038:19;38030:27;;38067:71;38135:1;38124:9;38120:17;38111:6;38067:71;:::i;:::-;38148:80;38224:2;38213:9;38209:18;38200:6;38148:80;:::i;:::-;38275:9;38269:4;38265:20;38260:2;38249:9;38245:18;38238:48;38303:108;38406:4;38397:6;38303:108;:::i;:::-;38295:116;;38421:72;38489:2;38478:9;38474:18;38465:6;38421:72;:::i;:::-;38503:73;38571:3;38560:9;38556:19;38547:6;38503:73;:::i;:::-;37752:831;;;;;;;;:::o;38589:807::-;38838:4;38876:3;38865:9;38861:19;38853:27;;38890:71;38958:1;38947:9;38943:17;38934:6;38890:71;:::i;:::-;38971:72;39039:2;39028:9;39024:18;39015:6;38971:72;:::i;:::-;39053:80;39129:2;39118:9;39114:18;39105:6;39053:80;:::i;:::-;39143;39219:2;39208:9;39204:18;39195:6;39143:80;:::i;:::-;39233:73;39301:3;39290:9;39286:19;39277:6;39233:73;:::i;:::-;39316;39384:3;39373:9;39369:19;39360:6;39316:73;:::i;:::-;38589:807;;;;;;;;;:::o;39402:143::-;39459:5;39490:6;39484:13;39475:22;;39506:33;39533:5;39506:33;:::i;:::-;39402:143;;;;:::o;39551:663::-;39639:6;39647;39655;39704:2;39692:9;39683:7;39679:23;39675:32;39672:119;;;39710:79;;:::i;:::-;39672:119;39830:1;39855:64;39911:7;39902:6;39891:9;39887:22;39855:64;:::i;:::-;39845:74;;39801:128;39968:2;39994:64;40050:7;40041:6;40030:9;40026:22;39994:64;:::i;:::-;39984:74;;39939:129;40107:2;40133:64;40189:7;40180:6;40169:9;40165:22;40133:64;:::i;:::-;40123:74;;40078:129;39551:663;;;;;:::o

Swarm Source

ipfs://06e34172e150b1e2fd9320afa49631ef6093b7dbfeef0f879abf6777a963500c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.