ETH Price: $2,277.51 (+1.99%)

Token

Token of Fire (Rhllor)
 

Overview

Max Total Supply

19,796,304,887.896856541 Rhllor

Holders

206 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
49,093,269.694443921 Rhllor

Value
$0.00
0x486a57e2ee35c71dd83e6236f5c82ceef36b65b1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

R'hllor is a deflationary token on the Ethereum network. With every transaction tokens are burned. adding value to your position. R'hllor token launched with staking, issuing Eth rewards, and has more utility on the way.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RhllorInu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-01
*/

/**
*
*
People>Profits
--------------
为了文化.
--------------
People>Profits
*
*
-Everything you think you know about defi is a lie. You live in chains. Those you worship are the very ones who betray you. 

-R'hllor Inu will show you the light.

-To honor the Lord of Light, we will shine the greatest larp defi has ever seen. We remember the darkness. Now, the light has set us free. 

-It purifies all and everything burns.

-Even members of the BAYC are within our reach. 
*
*
-Website-  https://www.rhllorinu.net/
-Twitter-  https://twitter.com/tokenoffire
-Telegram- https://t.me/RHLLORerc
-Owner-    0x282Aae83497763Cf32006eEBE86495C5FD5A58BB
*
*
---------------------------------------------------------------------------------------------
 ______       ___   ___      ______        ______        ______        _________   __       
/_____/\     /___/\/__/\    /_____/\      /_____/\      /_____/\      /________/\ /__/\     
\::::_\/_    \::.\ \\ \ \   \:::_ \ \     \:::_ \ \     \:::_ \ \     \__.::.__\/ \.:\ \    
 \:\/___/\    \:: \/_) \ \   \:(_) ) )_    \:(_) ) )_    \:(_) ) )_      \::\ \    \::\ \   
  \_::._\:\    \:. __  ( (    \: __ `\ \    \: __ `\ \    \: __ `\ \      \::\ \    \__\/_  
    /____\:\    \: \ )  \ \    \ \ `\ \ \    \ \ `\ \ \    \ \ `\ \ \      \::\ \     /__/\ 
    \_____\/     \__\/\__\/     \_\/ \_\/     \_\/ \_\/     \_\/ \_\/       \__\/     \__\/ 
                                                                                            
---------------------------------------------------------------------------------------------
*
*
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.17;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    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 9;
    }
    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;
        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;
        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) {
        require(b != -1 || a != MIN_INT256);
        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 RhllorInu is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    uint8 private constant _decimals = 9;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public supply;
    address public staking;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 public buyBurnFee;
    uint256 public buyVaultFee;
    uint256 public buyTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellVaultFee;
    uint256 public sellTotalFees;   
    uint256 public tokensForBurn;
    uint256 public tokensForVault;
    uint256 public walletDigit;
    uint256 public transDigit;
    uint256 public delayDigit;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public bots;
    mapping (address => bool) public floorControl;
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    constructor() ERC20("Token of Fire", "Rhllor") {
        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 _buyBurnFee = 1;
        uint256 _buyVaultFee = 9;
        uint256 _sellBurnFee = 1;
        uint256 _sellVaultFee = 9;
        uint256 totalSupply = 20000000000 * 10**_decimals;
        supply += totalSupply;
        walletDigit = 1;
        transDigit = 1;
        delayDigit = 0;
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
        buyBurnFee = _buyBurnFee;
        buyVaultFee = _buyVaultFee;
        buyTotalFees = buyBurnFee + buyVaultFee;
        sellBurnFee = _sellBurnFee;
        sellVaultFee = _sellVaultFee;
        sellTotalFees = sellBurnFee + sellVaultFee;
        staking = 0x431c71594CAE3a8935AFCf2133D294e37b84e6F2; //Dev Wallet until Staking is Deployed
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _approve(owner(), address(uniswapV2Router), totalSupply);
        _mint(msg.sender, totalSupply);
    }
    receive() external payable {
  	}
    function enableTrading() external onlyOwner {
        buyBurnFee = 1;
        buyVaultFee = 9;
        buyTotalFees = buyBurnFee + buyVaultFee;
        sellBurnFee = 1;
        sellVaultFee = 9;
        sellTotalFees = sellBurnFee + sellVaultFee;
        delayDigit = 5;
        tradingActive = true;
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                  delete bots[accounts[i]];
        }
    }

    function updateTransDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        transDigit = newNum;
        updateLimits();
    }
    function updateWalletDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        walletDigit = newNum;
        updateLimits();
    }
    function updateDelayDigit(uint256 newNum) external onlyOwner{
        delayDigit = newNum;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }

    function excludeFromMaxTransactionAdd(address[] memory accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
           _isExcludedMaxTransactionAmount[accounts[i]] = true;
        }
    }

    function excludeFromMaxTransactionRemove(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                  delete _isExcludedMaxTransactionAmount[accounts[i]];
        }
    }

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

    function updateBuyFees(uint256 _burnFee, uint256 _vaultFee) external onlyOwner {
        buyBurnFee = _burnFee;
        buyVaultFee = _vaultFee;
        buyTotalFees = buyBurnFee + buyVaultFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _burnFee, uint256 _vaultFee) external onlyOwner {
        sellBurnFee = _burnFee;
        sellVaultFee = _vaultFee;
        sellTotalFees = sellBurnFee + sellVaultFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }
    
    function updateStakingContract(address contractAddress) external onlyOwner {
        staking = contractAddress;
    }

    function excludeFromFeesAdd(address[] memory accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = true;
            emit ExcludeFromFees(accounts[i], true);
        }
    }

    function excludeFromFeesRemove(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                  delete _isExcludedFromFees[accounts[i]];
        }
    }

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

    function updateLimits() private {
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
    }
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to] || floorControl[from] || floorControl[to], "Trading is not active.");
                }                
                require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) && to != address(staking) && from != address(staking)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit;
                    }
                }
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            !swapping &&
            swapEnabled &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        bool takeFee = !swapping;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
                tokensForVault += fees * sellVaultFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForVault += fees * buyVaultFee / buyTotalFees;
            }
            if(fees > 0){    
                super._transfer(from, address(this), fees);
                if (tokensForBurn > 0) {
                    _burn(address(this), tokensForBurn);
                    supply = totalSupply();
                    updateLimits();
                    tokensForBurn = 0;
                }
            }
        	amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        if(contractBalance == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        swapTokensForEth(contractBalance); 
        tokensForVault = 0;
        (success,) = address(staking).call{value: address(this).balance}("");
    }

    // Withdraw an ERC20 Token from contract
    function withdrawToken(address _tokenContract, uint256 _amount) public onlyOwner  {
        IERC20 tokenContract = IERC20(_tokenContract);
        tokenContract.transfer(msg.sender, _amount);
    }
    
    function allowFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 floorControl[accounts[i]] = true;
        }
    }

    function removeFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 delete floorControl[accounts[i]];
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowFloorControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","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":"buyVaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":"accounts","type":"address[]"}],"name":"excludeFromFeesAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromFeesRemove","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":"accounts","type":"address[]"}],"name":"excludeFromMaxTransactionAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromMaxTransactionRemove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"floorControl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeFloorControl","outputs":[],"stateMutability":"nonpayable","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":"sellBurnFee","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":"sellVaultFee","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":[],"name":"staking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForVault","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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_vaultFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelayDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_vaultFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"updateStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWalletDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600d81526020017f546f6b656e206f662046697265000000000000000000000000000000000000008152506040518060400160405280600681526020017f52686c6c6f7200000000000000000000000000000000000000000000000000008152508160039081620000fb919062000fbb565b5080600490816200010d919062000fbb565b5050506000620001226200063d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200064560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029391906200110c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032191906200110c565b6040518363ffffffff1660e01b8152600401620003409291906200114f565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038691906200110c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200064560201b60201c565b620003e360a05160016200074260201b60201c565b60006001905060006009905060006001905060006009905060006009600a6200040d91906200130c565b6404a817c8006200041f91906200135d565b90508060096000828254620004359190620013a8565b9250508190555060016015819055506001601681905550600060178190555060646016546009546200046891906200135d565b62000474919062001412565b60068190555061271060056009546200048e91906200135d565b6200049a919062001412565b6007819055506064601554600954620004b491906200135d565b620004c0919062001412565b60088190555084600d8190555083600e81905550600e54600d54620004e69190620013a8565b600f8190555082601081905550816011819055506011546010546200050c9190620013a8565b60128190555073431c71594cae3a8935afcf2133d294e37b84e6f2600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005896200057b620007e360201b60201c565b60016200080d60201b60201c565b6200059c3060016200080d60201b60201c565b620005b161dead60016200080d60201b60201c565b620005d3620005c5620007e360201b60201c565b60016200064560201b60201c565b620005e63060016200064560201b60201c565b620005fb61dead60016200064560201b60201c565b6200061f6200060f620007e360201b60201c565b608051836200095a60201b60201c565b62000631338262000b2b60201b60201c565b50505050505062001749565b600033905090565b620006556200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006de90620014ab565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200081d6200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a690620014ab565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200094e9190620014ea565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c3906200157d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a359062001615565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b1e919062001648565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b9490620016b5565b60405180910390fd5b62000bb16000838362000cd960201b60201c565b62000bcd8160025462000cde60201b62002ea41790919060201c565b60028190555062000c2b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cde60201b62002ea41790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ccd919062001648565b60405180910390a35050565b505050565b600080828462000cef9190620013a8565b90508381101562000d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d2e9062001727565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000dc357607f821691505b60208210810362000dd95762000dd862000d7b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e04565b62000e4f868362000e04565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e9c62000e9662000e908462000e67565b62000e71565b62000e67565b9050919050565b6000819050919050565b62000eb88362000e7b565b62000ed062000ec78262000ea3565b84845462000e11565b825550505050565b600090565b62000ee762000ed8565b62000ef481848462000ead565b505050565b5b8181101562000f1c5762000f1060008262000edd565b60018101905062000efa565b5050565b601f82111562000f6b5762000f358162000ddf565b62000f408462000df4565b8101602085101562000f50578190505b62000f6862000f5f8562000df4565b83018262000ef9565b50505b505050565b600082821c905092915050565b600062000f906000198460080262000f70565b1980831691505092915050565b600062000fab838362000f7d565b9150826002028217905092915050565b62000fc68262000d41565b67ffffffffffffffff81111562000fe25762000fe162000d4c565b5b62000fee825462000daa565b62000ffb82828562000f20565b600060209050601f8311600181146200103357600084156200101e578287015190505b6200102a858262000f9d565b8655506200109a565b601f198416620010438662000ddf565b60005b828110156200106d5784890151825560018201915060208501945060208101905062001046565b868310156200108d578489015162001089601f89168262000f7d565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010d482620010a7565b9050919050565b620010e681620010c7565b8114620010f257600080fd5b50565b6000815190506200110681620010db565b92915050565b600060208284031215620011255762001124620010a2565b5b60006200113584828501620010f5565b91505092915050565b6200114981620010c7565b82525050565b60006040820190506200116660008301856200113e565b6200117560208301846200113e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200120a57808604811115620011e257620011e16200117c565b5b6001851615620011f25780820291505b80810290506200120285620011ab565b9450620011c2565b94509492505050565b600082620012255760019050620012f8565b81620012355760009050620012f8565b81600181146200124e576002811462001259576200128f565b6001915050620012f8565b60ff8411156200126e576200126d6200117c565b5b8360020a9150848211156200128857620012876200117c565b5b50620012f8565b5060208310610133831016604e8410600b8410161715620012c95782820a905083811115620012c357620012c26200117c565b5b620012f8565b620012d88484846001620011b8565b92509050818404811115620012f257620012f16200117c565b5b81810290505b9392505050565b600060ff82169050919050565b6000620013198262000e67565b91506200132683620012ff565b9250620013557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001213565b905092915050565b60006200136a8262000e67565b9150620013778362000e67565b9250828202620013878162000e67565b91508282048414831517620013a157620013a06200117c565b5b5092915050565b6000620013b58262000e67565b9150620013c28362000e67565b9250828201905080821115620013dd57620013dc6200117c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200141f8262000e67565b91506200142c8362000e67565b9250826200143f576200143e620013e3565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620014936020836200144a565b9150620014a0826200145b565b602082019050919050565b60006020820190508181036000830152620014c68162001484565b9050919050565b60008115159050919050565b620014e481620014cd565b82525050565b6000602082019050620015016000830184620014d9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620015656024836200144a565b9150620015728262001507565b604082019050919050565b60006020820190508181036000830152620015988162001556565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620015fd6022836200144a565b91506200160a826200159f565b604082019050919050565b600060208201905081810360008301526200163081620015ee565b9050919050565b620016428162000e67565b82525050565b60006020820190506200165f600083018462001637565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200169d601f836200144a565b9150620016aa8262001665565b602082019050919050565b60006020820190508181036000830152620016d0816200168e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200170f601b836200144a565b91506200171c82620016d7565b602082019050919050565b60006020820190508181036000830152620017428162001700565b9050919050565b60805160a051615eb162001799600039600081816117390152818161225c015261367b0152600081816113d2015281816136230152818161478401528181614865015261488c0152615eb16000f3fe6080604052600436106103bb5760003560e01c80637571336a116101f2578063bbc0c7421161010d578063e2f45605116100a0578063f101a7571161006f578063f101a75714610e3e578063f203acb614610e67578063f2fde38b14610e92578063f8b45b0514610ebb576103c2565b8063e2f4560514610d94578063e71dc3f514610dbf578063e884f26014610dea578063e9114fe914610e15576103c2565b8063c8c8ebe4116100dc578063c8c8ebe414610cd6578063cae979c214610d01578063d85ba06314610d2c578063dd62ed3e14610d57576103c2565b8063bbc0c74214610c1a578063bfd7928414610c45578063c024666814610c82578063c876d0b914610cab576103c2565b80639c71cc7011610185578063a9059cbb11610154578063a9059cbb14610b4c578063adb873bd14610b89578063b5a8b29814610bb4578063b62496f514610bdd576103c2565b80639c71cc7014610a805780639e281a9814610abd5780639fdc482414610ae6578063a457c2d714610b0f576103c2565b80638da5cb5b116101c15780638da5cb5b146109d657806395d89b4114610a01578063975d71e214610a2c5780639a7a23d614610a57576103c2565b80637571336a146109425780637ab439831461096b5780637d02b6ac146109965780638a8c523c146109bf576103c2565b8063313ce567116102e2578063516e7409116102755780636ddd1713116102445780636ddd17131461089857806370a08231146108c3578063715018a614610900578063751039fc14610917576103c2565b8063516e7409146107f057806365e4e5e01461081957806366ca9b83146108445780636a486a8e1461086d576103c2565b80634a62bb65116102b15780634a62bb65146107345780634ab736c01461075f5780634cf088d9146107885780634fbee193146107b3576103c2565b8063313ce567146106785780633347e4d6146106a357806339509351146106cc57806349bd5a5e14610709576103c2565b8063150de0bb1161035a5780631de65a4a116103295780631de65a4a146105bc5780631fa07da5146105e757806323b872dd1461061057806327c8f8351461064d576103c2565b8063150de0bb146105125780631694505e1461053b57806318160ddd146105665780631d77785614610591576103c2565b806306fdde031161039657806306fdde0314610444578063095ea7b31461046f57806310d5de53146104ac57806311a4b5cd146104e9576103c2565b8062b8cf2a146103c757806302dbd8f8146103f0578063047fc9aa14610419576103c2565b366103c257005b600080fd5b3480156103d357600080fd5b506103ee60048036038101906103e99190614b9a565b610ee6565b005b3480156103fc57600080fd5b5061041760048036038101906104129190614c19565b611012565b005b34801561042557600080fd5b5061042e611117565b60405161043b9190614c68565b60405180910390f35b34801561045057600080fd5b5061045961111d565b6040516104669190614d02565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190614d24565b6111af565b6040516104a39190614d7f565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190614d9a565b6111cd565b6040516104e09190614d7f565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614b9a565b6111ed565b005b34801561051e57600080fd5b5061053960048036038101906105349190614dc7565b611319565b005b34801561054757600080fd5b506105506113d0565b60405161055d9190614e53565b60405180910390f35b34801561057257600080fd5b5061057b6113f4565b6040516105889190614c68565b60405180910390f35b34801561059d57600080fd5b506105a66113fe565b6040516105b39190614c68565b60405180910390f35b3480156105c857600080fd5b506105d1611404565b6040516105de9190614c68565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614dc7565b61140a565b005b34801561061c57600080fd5b5061063760048036038101906106329190614e6e565b6114c1565b6040516106449190614d7f565b60405180910390f35b34801561065957600080fd5b5061066261159a565b60405161066f9190614ed0565b60405180910390f35b34801561068457600080fd5b5061068d6115a0565b60405161069a9190614f07565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190614d9a565b6115a9565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190614d24565b611684565b6040516107009190614d7f565b60405180910390f35b34801561071557600080fd5b5061071e611737565b60405161072b9190614ed0565b60405180910390f35b34801561074057600080fd5b5061074961175b565b6040516107569190614d7f565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190614f7d565b61176e565b005b34801561079457600080fd5b5061079d6118a1565b6040516107aa9190614ed0565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190614d9a565b6118c7565b6040516107e79190614d7f565b60405180910390f35b3480156107fc57600080fd5b5061081760048036038101906108129190614f7d565b61191d565b005b34801561082557600080fd5b5061082e611a50565b60405161083b9190614c68565b60405180910390f35b34801561085057600080fd5b5061086b60048036038101906108669190614c19565b611a56565b005b34801561087957600080fd5b50610882611b5a565b60405161088f9190614c68565b60405180910390f35b3480156108a457600080fd5b506108ad611b60565b6040516108ba9190614d7f565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190614d9a565b611b73565b6040516108f79190614c68565b60405180910390f35b34801561090c57600080fd5b50610915611bbb565b005b34801561092357600080fd5b5061092c611d13565b6040516109399190614d7f565b60405180910390f35b34801561094e57600080fd5b5061096960048036038101906109649190614ff6565b611dce565b005b34801561097757600080fd5b50610980611ec0565b60405161098d9190614c68565b60405180910390f35b3480156109a257600080fd5b506109bd60048036038101906109b89190614f7d565b611ec6565b005b3480156109cb57600080fd5b506109d4611ff9565b005b3480156109e257600080fd5b506109eb612101565b6040516109f89190614ed0565b60405180910390f35b348015610a0d57600080fd5b50610a1661212b565b604051610a239190614d02565b60405180910390f35b348015610a3857600080fd5b50610a416121bd565b604051610a4e9190614c68565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614ff6565b6121c3565b005b348015610a8c57600080fd5b50610aa76004803603810190610aa29190614d9a565b6122f6565b604051610ab49190614d7f565b60405180910390f35b348015610ac957600080fd5b50610ae46004803603810190610adf9190614d24565b612316565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190614dc7565b612436565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190614d24565b6124d7565b604051610b439190614d7f565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190614d24565b6125a4565b604051610b809190614d7f565b60405180910390f35b348015610b9557600080fd5b50610b9e6125c2565b604051610bab9190614c68565b60405180910390f35b348015610bc057600080fd5b50610bdb6004803603810190610bd69190614f7d565b6125c8565b005b348015610be957600080fd5b50610c046004803603810190610bff9190614d9a565b612704565b604051610c119190614d7f565b60405180910390f35b348015610c2657600080fd5b50610c2f612724565b604051610c3c9190614d7f565b60405180910390f35b348015610c5157600080fd5b50610c6c6004803603810190610c679190614d9a565b612737565b604051610c799190614d7f565b60405180910390f35b348015610c8e57600080fd5b50610ca96004803603810190610ca49190614ff6565b612757565b005b348015610cb757600080fd5b50610cc0612897565b604051610ccd9190614d7f565b60405180910390f35b348015610ce257600080fd5b50610ceb6128aa565b604051610cf89190614c68565b60405180910390f35b348015610d0d57600080fd5b50610d166128b0565b604051610d239190614c68565b60405180910390f35b348015610d3857600080fd5b50610d416128b6565b604051610d4e9190614c68565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d799190615036565b6128bc565b604051610d8b9190614c68565b60405180910390f35b348015610da057600080fd5b50610da9612943565b604051610db69190614c68565b60405180910390f35b348015610dcb57600080fd5b50610dd4612949565b604051610de19190614c68565b60405180910390f35b348015610df657600080fd5b50610dff61294f565b604051610e0c9190614d7f565b60405180910390f35b348015610e2157600080fd5b50610e3c6004803603810190610e379190614f7d565b612a0a565b005b348015610e4a57600080fd5b50610e656004803603810190610e609190614b9a565b612b3d565b005b348015610e7357600080fd5b50610e7c612cd2565b604051610e899190614c68565b60405180910390f35b348015610e9e57600080fd5b50610eb96004803603810190610eb49190614d9a565b612cd8565b005b348015610ec757600080fd5b50610ed0612e9e565b604051610edd9190614c68565b60405180910390f35b610eee612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f74906150c2565b60405180910390fd5b60005b815181101561100e576001601b6000848481518110610fa257610fa16150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100690615140565b915050610f80565b5050565b61101a612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906150c2565b60405180910390fd5b81601081905550806011819055506011546010546110c79190615188565b601281905550600f6012541115611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90615208565b60405180910390fd5b5050565b60095481565b60606003805461112c90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461115890615257565b80156111a55780601f1061117a576101008083540402835291602001916111a5565b820191906000526020600020905b81548152906001019060200180831161118857829003601f168201915b5050505050905090565b60006111c36111bc612f02565b8484612f0a565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6111f5612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906150c2565b60405180910390fd5b60005b8151811015611315576001601960008484815181106112a9576112a86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130d90615140565b915050611287565b5050565b611321612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906150c2565b60405180910390fd5b60018110156113be57600080fd5b806015819055506113cd6130d3565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60135481565b60145481565b611412612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611498906150c2565b60405180910390fd5b60018110156114af57600080fd5b806016819055506114be6130d3565b50565b60006114ce84848461313b565b61158f846114da612f02565b61158a85604051806060016040528060288152602001615e2f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611540612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b600190509392505050565b61dead81565b60006009905090565b6115b1612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906150c2565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061172d611691612f02565b8461172885600160006116a2612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b612f0a565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60149054906101000a900460ff1681565b611776612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906150c2565b60405180910390fd5b60005b8282905081101561189c57601c600084848481811061182a576118296150e2565b5b905060200201602081019061183f9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055808061189490615140565b915050611808565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611925612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab906150c2565b60405180910390fd5b60005b82829050811015611a4b57601b60008484848181106119d9576119d86150e2565b5b90506020020160208101906119ee9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611a4390615140565b9150506119b7565b505050565b600e5481565b611a5e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906150c2565b60405180910390fd5b81600d8190555080600e81905550600e54600d54611b0b9190615188565b600f81905550600f80541115611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90615208565b60405180910390fd5b5050565b60125481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bc3612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c49906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611d1d612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da3906150c2565b60405180910390fd5b6000600a60146101000a81548160ff0219169083151502179055506001905090565b611dd6612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c906150c2565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611ece612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906150c2565b60405180910390fd5b60005b82829050811015611ff45760196000848484818110611f8257611f816150e2565b5b9050602002016020810190611f979190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611fec90615140565b915050611f60565b505050565b612001612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612087906150c2565b60405180910390fd5b6001600d819055506009600e81905550600e54600d546120b09190615188565b600f81905550600160108190555060096011819055506011546010546120d69190615188565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461213a90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461216690615257565b80156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b5050505050905090565b60165481565b6121cb612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612251906150c2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df906152fa565b60405180910390fd5b6122f28282614052565b5050565b601c6020528060005260406000206000915054906101000a900460ff1681565b61231e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a4906150c2565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016123ed92919061531a565b6020604051808303816000875af115801561240c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124309190615358565b50505050565b61243e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c4906150c2565b60405180910390fd5b8060178190555050565b600061259a6124e4612f02565b8461259585604051806060016040528060258152602001615e57602591396001600061250e612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b6001905092915050565b60006125b86125b1612f02565b848461313b565b6001905092915050565b60105481565b6125d0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612656906150c2565b60405180910390fd5b60005b828290508110156126ff576001601c6000858585818110612686576126856150e2565b5b905060200201602081019061269b9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806126f790615140565b915050612662565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61275f612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e5906150c2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161288b9190614d7f565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b60115481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b6000612959612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df906150c2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b612a12612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a98906150c2565b60405180910390fd5b60005b82829050811015612b385760186000848484818110612ac657612ac56150e2565b5b9050602002016020810190612adb9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080612b3090615140565b915050612aa4565b505050565b612b45612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb906150c2565b60405180910390fd5b60005b8151811015612cce57600160186000848481518110612bf957612bf86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110612c6557612c646150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df76001604051612cb39190614d7f565b60405180910390a28080612cc690615140565b915050612bd7565b5050565b60175481565b612ce0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d66906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd5906153f7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000808284612eb39190615188565b905083811015612ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eef90615463565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f70906154f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf90615587565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130c69190614c68565b60405180910390a3505050565b60646016546009546130e591906155a7565b6130ef9190615618565b600681905550612710600560095461310791906155a7565b6131119190615618565b600781905550606460155460095461312991906155a7565b6131339190615618565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a1906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132109061574d565b60405180910390fd5b600081036132325761322d838360006140f3565b613fe9565b600a60149054906101000a900460ff1615613b415761324f612101565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132bd575061328d612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132f65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613330575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133495750600560149054906101000a900460ff16155b15613b4057600a60159054906101000a900460ff166134eb57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134035750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134575750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134ab5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e1906157b9565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561358f5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c59061584b565b60405180910390fd5b600c60009054906101000a900460ff1615613857576135eb612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561367257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136ca57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156137245750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561377e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156138565743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fb90615903565b60405180910390fd5b601754436138129190615188565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138fa5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139a157600654811115613944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393b90615995565b60405180910390fd5b60085461395083611b73565b8261395b9190615188565b111561399c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399390615a01565b60405180910390fd5b613b3f565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a445750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9357600654811115613a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8590615a93565b60405180910390fd5b613b3e565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b3d57600854613af083611b73565b82613afb9190615188565b1115613b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b3390615a01565b60405180910390fd5b5b5b5b5b5b6000613b4c30611b73565b905060006007548210159050808015613b725750600560149054906101000a900460ff16155b8015613b8a5750600a60169054906101000a900460ff165b8015613be05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c365750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c8c5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613cd0576001600560146101000a81548160ff021916908315150217905550613cb4614386565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d865750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d9057600090505b60008115613fd957601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613df357506000601254115b15613e8d57613e206064613e126012548861446f90919063ffffffff16565b6144e990919063ffffffff16565b905060125460105482613e3391906155a7565b613e3d9190615618565b60136000828254613e4e9190615188565b9250508190555060125460115482613e6691906155a7565b613e709190615618565b60146000828254613e819190615188565b92505081905550613f7f565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ee857506000600f54115b15613f7e57613f156064613f07600f548861446f90919063ffffffff16565b6144e990919063ffffffff16565b9050600f54600d5482613f2891906155a7565b613f329190615618565b60136000828254613f439190615188565b92505081905550600f54600e5482613f5b91906155a7565b613f659190615618565b60146000828254613f769190615188565b925050819055505b5b6000811115613fca57613f938730836140f3565b60006013541115613fc957613faa30601354614533565b613fb26113f4565b600981905550613fc06130d3565b60006013819055505b5b8085613fd69190615ab3565b94505b613fe48787876140f3565b505050505b505050565b6000838311158290614036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161402d9190614d02565b60405180910390fd5b50600083856140459190615ab3565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603614162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614159906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036141d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c89061574d565b60405180910390fd5b6141dc8383836146e0565b61424781604051806060016040528060268152602001615e09602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142da816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143799190614c68565b60405180910390a3505050565b600061439130611b73565b905060008082036143a357505061446d565b60146007546143b291906155a7565b8211156143cb5760146007546143c891906155a7565b91505b6143d4826146e5565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161442290615b18565b60006040518083038185875af1925050503d806000811461445f576040519150601f19603f3d011682016040523d82523d6000602084013e614464565b606091505b50508091505050505b565b600080830361448157600090506144e3565b6000828461448f91906155a7565b905082848261449e9190615618565b146144de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144d590615b9f565b60405180910390fd5b809150505b92915050565b600061452b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614922565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036145a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459990615c31565b60405180910390fd5b6145ae826000836146e0565b61461981604051806060016040528060228152602001615de7602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146708160025461498590919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516146d49190614c68565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115614702576147016149f9565b5b6040519080825280602002602001820160405280156147305781602001602082028036833780820191505090505b5090503081600081518110614748576147476150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148119190615c66565b81600181518110614825576148246150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061488a307f000000000000000000000000000000000000000000000000000000000000000084612f0a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016148ec959493929190615d8c565b600060405180830381600087803b15801561490657600080fd5b505af115801561491a573d6000803e3d6000fd5b505050505050565b60008083118290614969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149609190614d02565b60405180910390fd5b50600083856149789190615618565b9050809150509392505050565b60006149c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614a31826149e8565b810181811067ffffffffffffffff82111715614a5057614a4f6149f9565b5b80604052505050565b6000614a636149cf565b9050614a6f8282614a28565b919050565b600067ffffffffffffffff821115614a8f57614a8e6149f9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ad082614aa5565b9050919050565b614ae081614ac5565b8114614aeb57600080fd5b50565b600081359050614afd81614ad7565b92915050565b6000614b16614b1184614a74565b614a59565b90508083825260208201905060208402830185811115614b3957614b38614aa0565b5b835b81811015614b625780614b4e8882614aee565b845260208401935050602081019050614b3b565b5050509392505050565b600082601f830112614b8157614b806149e3565b5b8135614b91848260208601614b03565b91505092915050565b600060208284031215614bb057614baf6149d9565b5b600082013567ffffffffffffffff811115614bce57614bcd6149de565b5b614bda84828501614b6c565b91505092915050565b6000819050919050565b614bf681614be3565b8114614c0157600080fd5b50565b600081359050614c1381614bed565b92915050565b60008060408385031215614c3057614c2f6149d9565b5b6000614c3e85828601614c04565b9250506020614c4f85828601614c04565b9150509250929050565b614c6281614be3565b82525050565b6000602082019050614c7d6000830184614c59565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614cbd578082015181840152602081019050614ca2565b60008484015250505050565b6000614cd482614c83565b614cde8185614c8e565b9350614cee818560208601614c9f565b614cf7816149e8565b840191505092915050565b60006020820190508181036000830152614d1c8184614cc9565b905092915050565b60008060408385031215614d3b57614d3a6149d9565b5b6000614d4985828601614aee565b9250506020614d5a85828601614c04565b9150509250929050565b60008115159050919050565b614d7981614d64565b82525050565b6000602082019050614d946000830184614d70565b92915050565b600060208284031215614db057614daf6149d9565b5b6000614dbe84828501614aee565b91505092915050565b600060208284031215614ddd57614ddc6149d9565b5b6000614deb84828501614c04565b91505092915050565b6000819050919050565b6000614e19614e14614e0f84614aa5565b614df4565b614aa5565b9050919050565b6000614e2b82614dfe565b9050919050565b6000614e3d82614e20565b9050919050565b614e4d81614e32565b82525050565b6000602082019050614e686000830184614e44565b92915050565b600080600060608486031215614e8757614e866149d9565b5b6000614e9586828701614aee565b9350506020614ea686828701614aee565b9250506040614eb786828701614c04565b9150509250925092565b614eca81614ac5565b82525050565b6000602082019050614ee56000830184614ec1565b92915050565b600060ff82169050919050565b614f0181614eeb565b82525050565b6000602082019050614f1c6000830184614ef8565b92915050565b600080fd5b60008083601f840112614f3d57614f3c6149e3565b5b8235905067ffffffffffffffff811115614f5a57614f59614f22565b5b602083019150836020820283011115614f7657614f75614aa0565b5b9250929050565b60008060208385031215614f9457614f936149d9565b5b600083013567ffffffffffffffff811115614fb257614fb16149de565b5b614fbe85828601614f27565b92509250509250929050565b614fd381614d64565b8114614fde57600080fd5b50565b600081359050614ff081614fca565b92915050565b6000806040838503121561500d5761500c6149d9565b5b600061501b85828601614aee565b925050602061502c85828601614fe1565b9150509250929050565b6000806040838503121561504d5761504c6149d9565b5b600061505b85828601614aee565b925050602061506c85828601614aee565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150ac602083614c8e565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061514b82614be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361517d5761517c615111565b5b600182019050919050565b600061519382614be3565b915061519e83614be3565b92508282019050808211156151b6576151b5615111565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006151f2601d83614c8e565b91506151fd826151bc565b602082019050919050565b60006020820190508181036000830152615221816151e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061526f57607f821691505b60208210810361528257615281615228565b5b50919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006152e4603983614c8e565b91506152ef82615288565b604082019050919050565b60006020820190508181036000830152615313816152d7565b9050919050565b600060408201905061532f6000830185614ec1565b61533c6020830184614c59565b9392505050565b60008151905061535281614fca565b92915050565b60006020828403121561536e5761536d6149d9565b5b600061537c84828501615343565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e1602683614c8e565b91506153ec82615385565b604082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061544d601b83614c8e565b915061545882615417565b602082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006154df602483614c8e565b91506154ea82615483565b604082019050919050565b6000602082019050818103600083015261550e816154d2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615571602283614c8e565b915061557c82615515565b604082019050919050565b600060208201905081810360008301526155a081615564565b9050919050565b60006155b282614be3565b91506155bd83614be3565b92508282026155cb81614be3565b915082820484148315176155e2576155e1615111565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061562382614be3565b915061562e83614be3565b92508261563e5761563d6155e9565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156a5602583614c8e565b91506156b082615649565b604082019050919050565b600060208201905081810360008301526156d481615698565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615737602383614c8e565b9150615742826156db565b604082019050919050565b600060208201905081810360008301526157668161572a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157a3601683614c8e565b91506157ae8261576d565b602082019050919050565b600060208201905081810360008301526157d281615796565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000615835602383614c8e565b9150615840826157d9565b604082019050919050565b6000602082019050818103600083015261586481615828565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158ed604983614c8e565b91506158f88261586b565b606082019050919050565b6000602082019050818103600083015261591c816158e0565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061597f603583614c8e565b915061598a82615923565b604082019050919050565b600060208201905081810360008301526159ae81615972565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159eb601383614c8e565b91506159f6826159b5565b602082019050919050565b60006020820190508181036000830152615a1a816159de565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615a7d603683614c8e565b9150615a8882615a21565b604082019050919050565b60006020820190508181036000830152615aac81615a70565b9050919050565b6000615abe82614be3565b9150615ac983614be3565b9250828203905081811115615ae157615ae0615111565b5b92915050565b600081905092915050565b50565b6000615b02600083615ae7565b9150615b0d82615af2565b600082019050919050565b6000615b2382615af5565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b89602183614c8e565b9150615b9482615b2d565b604082019050919050565b60006020820190508181036000830152615bb881615b7c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c1b602183614c8e565b9150615c2682615bbf565b604082019050919050565b60006020820190508181036000830152615c4a81615c0e565b9050919050565b600081519050615c6081614ad7565b92915050565b600060208284031215615c7c57615c7b6149d9565b5b6000615c8a84828501615c51565b91505092915050565b6000819050919050565b6000615cb8615cb3615cae84615c93565b614df4565b614be3565b9050919050565b615cc881615c9d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d0381614ac5565b82525050565b6000615d158383615cfa565b60208301905092915050565b6000602082019050919050565b6000615d3982615cce565b615d438185615cd9565b9350615d4e83615cea565b8060005b83811015615d7f578151615d668882615d09565b9750615d7183615d21565b925050600181019050615d52565b5085935050505092915050565b600060a082019050615da16000830188614c59565b615dae6020830187615cbf565b8181036040830152615dc08186615d2e565b9050615dcf6060830185614ec1565b615ddc6080830184614c59565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d7fb182dff62fc31791b55098ff0f5a0d4bef82bfb5f83fe5a3f648ae07d64fb64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103bb5760003560e01c80637571336a116101f2578063bbc0c7421161010d578063e2f45605116100a0578063f101a7571161006f578063f101a75714610e3e578063f203acb614610e67578063f2fde38b14610e92578063f8b45b0514610ebb576103c2565b8063e2f4560514610d94578063e71dc3f514610dbf578063e884f26014610dea578063e9114fe914610e15576103c2565b8063c8c8ebe4116100dc578063c8c8ebe414610cd6578063cae979c214610d01578063d85ba06314610d2c578063dd62ed3e14610d57576103c2565b8063bbc0c74214610c1a578063bfd7928414610c45578063c024666814610c82578063c876d0b914610cab576103c2565b80639c71cc7011610185578063a9059cbb11610154578063a9059cbb14610b4c578063adb873bd14610b89578063b5a8b29814610bb4578063b62496f514610bdd576103c2565b80639c71cc7014610a805780639e281a9814610abd5780639fdc482414610ae6578063a457c2d714610b0f576103c2565b80638da5cb5b116101c15780638da5cb5b146109d657806395d89b4114610a01578063975d71e214610a2c5780639a7a23d614610a57576103c2565b80637571336a146109425780637ab439831461096b5780637d02b6ac146109965780638a8c523c146109bf576103c2565b8063313ce567116102e2578063516e7409116102755780636ddd1713116102445780636ddd17131461089857806370a08231146108c3578063715018a614610900578063751039fc14610917576103c2565b8063516e7409146107f057806365e4e5e01461081957806366ca9b83146108445780636a486a8e1461086d576103c2565b80634a62bb65116102b15780634a62bb65146107345780634ab736c01461075f5780634cf088d9146107885780634fbee193146107b3576103c2565b8063313ce567146106785780633347e4d6146106a357806339509351146106cc57806349bd5a5e14610709576103c2565b8063150de0bb1161035a5780631de65a4a116103295780631de65a4a146105bc5780631fa07da5146105e757806323b872dd1461061057806327c8f8351461064d576103c2565b8063150de0bb146105125780631694505e1461053b57806318160ddd146105665780631d77785614610591576103c2565b806306fdde031161039657806306fdde0314610444578063095ea7b31461046f57806310d5de53146104ac57806311a4b5cd146104e9576103c2565b8062b8cf2a146103c757806302dbd8f8146103f0578063047fc9aa14610419576103c2565b366103c257005b600080fd5b3480156103d357600080fd5b506103ee60048036038101906103e99190614b9a565b610ee6565b005b3480156103fc57600080fd5b5061041760048036038101906104129190614c19565b611012565b005b34801561042557600080fd5b5061042e611117565b60405161043b9190614c68565b60405180910390f35b34801561045057600080fd5b5061045961111d565b6040516104669190614d02565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190614d24565b6111af565b6040516104a39190614d7f565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190614d9a565b6111cd565b6040516104e09190614d7f565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614b9a565b6111ed565b005b34801561051e57600080fd5b5061053960048036038101906105349190614dc7565b611319565b005b34801561054757600080fd5b506105506113d0565b60405161055d9190614e53565b60405180910390f35b34801561057257600080fd5b5061057b6113f4565b6040516105889190614c68565b60405180910390f35b34801561059d57600080fd5b506105a66113fe565b6040516105b39190614c68565b60405180910390f35b3480156105c857600080fd5b506105d1611404565b6040516105de9190614c68565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614dc7565b61140a565b005b34801561061c57600080fd5b5061063760048036038101906106329190614e6e565b6114c1565b6040516106449190614d7f565b60405180910390f35b34801561065957600080fd5b5061066261159a565b60405161066f9190614ed0565b60405180910390f35b34801561068457600080fd5b5061068d6115a0565b60405161069a9190614f07565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190614d9a565b6115a9565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190614d24565b611684565b6040516107009190614d7f565b60405180910390f35b34801561071557600080fd5b5061071e611737565b60405161072b9190614ed0565b60405180910390f35b34801561074057600080fd5b5061074961175b565b6040516107569190614d7f565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190614f7d565b61176e565b005b34801561079457600080fd5b5061079d6118a1565b6040516107aa9190614ed0565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190614d9a565b6118c7565b6040516107e79190614d7f565b60405180910390f35b3480156107fc57600080fd5b5061081760048036038101906108129190614f7d565b61191d565b005b34801561082557600080fd5b5061082e611a50565b60405161083b9190614c68565b60405180910390f35b34801561085057600080fd5b5061086b60048036038101906108669190614c19565b611a56565b005b34801561087957600080fd5b50610882611b5a565b60405161088f9190614c68565b60405180910390f35b3480156108a457600080fd5b506108ad611b60565b6040516108ba9190614d7f565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190614d9a565b611b73565b6040516108f79190614c68565b60405180910390f35b34801561090c57600080fd5b50610915611bbb565b005b34801561092357600080fd5b5061092c611d13565b6040516109399190614d7f565b60405180910390f35b34801561094e57600080fd5b5061096960048036038101906109649190614ff6565b611dce565b005b34801561097757600080fd5b50610980611ec0565b60405161098d9190614c68565b60405180910390f35b3480156109a257600080fd5b506109bd60048036038101906109b89190614f7d565b611ec6565b005b3480156109cb57600080fd5b506109d4611ff9565b005b3480156109e257600080fd5b506109eb612101565b6040516109f89190614ed0565b60405180910390f35b348015610a0d57600080fd5b50610a1661212b565b604051610a239190614d02565b60405180910390f35b348015610a3857600080fd5b50610a416121bd565b604051610a4e9190614c68565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614ff6565b6121c3565b005b348015610a8c57600080fd5b50610aa76004803603810190610aa29190614d9a565b6122f6565b604051610ab49190614d7f565b60405180910390f35b348015610ac957600080fd5b50610ae46004803603810190610adf9190614d24565b612316565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190614dc7565b612436565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190614d24565b6124d7565b604051610b439190614d7f565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190614d24565b6125a4565b604051610b809190614d7f565b60405180910390f35b348015610b9557600080fd5b50610b9e6125c2565b604051610bab9190614c68565b60405180910390f35b348015610bc057600080fd5b50610bdb6004803603810190610bd69190614f7d565b6125c8565b005b348015610be957600080fd5b50610c046004803603810190610bff9190614d9a565b612704565b604051610c119190614d7f565b60405180910390f35b348015610c2657600080fd5b50610c2f612724565b604051610c3c9190614d7f565b60405180910390f35b348015610c5157600080fd5b50610c6c6004803603810190610c679190614d9a565b612737565b604051610c799190614d7f565b60405180910390f35b348015610c8e57600080fd5b50610ca96004803603810190610ca49190614ff6565b612757565b005b348015610cb757600080fd5b50610cc0612897565b604051610ccd9190614d7f565b60405180910390f35b348015610ce257600080fd5b50610ceb6128aa565b604051610cf89190614c68565b60405180910390f35b348015610d0d57600080fd5b50610d166128b0565b604051610d239190614c68565b60405180910390f35b348015610d3857600080fd5b50610d416128b6565b604051610d4e9190614c68565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d799190615036565b6128bc565b604051610d8b9190614c68565b60405180910390f35b348015610da057600080fd5b50610da9612943565b604051610db69190614c68565b60405180910390f35b348015610dcb57600080fd5b50610dd4612949565b604051610de19190614c68565b60405180910390f35b348015610df657600080fd5b50610dff61294f565b604051610e0c9190614d7f565b60405180910390f35b348015610e2157600080fd5b50610e3c6004803603810190610e379190614f7d565b612a0a565b005b348015610e4a57600080fd5b50610e656004803603810190610e609190614b9a565b612b3d565b005b348015610e7357600080fd5b50610e7c612cd2565b604051610e899190614c68565b60405180910390f35b348015610e9e57600080fd5b50610eb96004803603810190610eb49190614d9a565b612cd8565b005b348015610ec757600080fd5b50610ed0612e9e565b604051610edd9190614c68565b60405180910390f35b610eee612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f74906150c2565b60405180910390fd5b60005b815181101561100e576001601b6000848481518110610fa257610fa16150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100690615140565b915050610f80565b5050565b61101a612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906150c2565b60405180910390fd5b81601081905550806011819055506011546010546110c79190615188565b601281905550600f6012541115611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90615208565b60405180910390fd5b5050565b60095481565b60606003805461112c90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461115890615257565b80156111a55780601f1061117a576101008083540402835291602001916111a5565b820191906000526020600020905b81548152906001019060200180831161118857829003601f168201915b5050505050905090565b60006111c36111bc612f02565b8484612f0a565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6111f5612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906150c2565b60405180910390fd5b60005b8151811015611315576001601960008484815181106112a9576112a86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130d90615140565b915050611287565b5050565b611321612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906150c2565b60405180910390fd5b60018110156113be57600080fd5b806015819055506113cd6130d3565b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60135481565b60145481565b611412612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611498906150c2565b60405180910390fd5b60018110156114af57600080fd5b806016819055506114be6130d3565b50565b60006114ce84848461313b565b61158f846114da612f02565b61158a85604051806060016040528060288152602001615e2f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611540612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b600190509392505050565b61dead81565b60006009905090565b6115b1612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906150c2565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061172d611691612f02565b8461172885600160006116a2612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b612f0a565b6001905092915050565b7f00000000000000000000000031a087493244cef87da1dc6a6856e564bd96993981565b600a60149054906101000a900460ff1681565b611776612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906150c2565b60405180910390fd5b60005b8282905081101561189c57601c600084848481811061182a576118296150e2565b5b905060200201602081019061183f9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055808061189490615140565b915050611808565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611925612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab906150c2565b60405180910390fd5b60005b82829050811015611a4b57601b60008484848181106119d9576119d86150e2565b5b90506020020160208101906119ee9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611a4390615140565b9150506119b7565b505050565b600e5481565b611a5e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906150c2565b60405180910390fd5b81600d8190555080600e81905550600e54600d54611b0b9190615188565b600f81905550600f80541115611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90615208565b60405180910390fd5b5050565b60125481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bc3612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c49906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611d1d612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da3906150c2565b60405180910390fd5b6000600a60146101000a81548160ff0219169083151502179055506001905090565b611dd6612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c906150c2565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611ece612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906150c2565b60405180910390fd5b60005b82829050811015611ff45760196000848484818110611f8257611f816150e2565b5b9050602002016020810190611f979190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611fec90615140565b915050611f60565b505050565b612001612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612087906150c2565b60405180910390fd5b6001600d819055506009600e81905550600e54600d546120b09190615188565b600f81905550600160108190555060096011819055506011546010546120d69190615188565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461213a90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461216690615257565b80156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b5050505050905090565b60165481565b6121cb612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612251906150c2565b60405180910390fd5b7f00000000000000000000000031a087493244cef87da1dc6a6856e564bd96993973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df906152fa565b60405180910390fd5b6122f28282614052565b5050565b601c6020528060005260406000206000915054906101000a900460ff1681565b61231e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a4906150c2565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016123ed92919061531a565b6020604051808303816000875af115801561240c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124309190615358565b50505050565b61243e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c4906150c2565b60405180910390fd5b8060178190555050565b600061259a6124e4612f02565b8461259585604051806060016040528060258152602001615e57602591396001600061250e612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b6001905092915050565b60006125b86125b1612f02565b848461313b565b6001905092915050565b60105481565b6125d0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612656906150c2565b60405180910390fd5b60005b828290508110156126ff576001601c6000858585818110612686576126856150e2565b5b905060200201602081019061269b9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806126f790615140565b915050612662565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61275f612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e5906150c2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161288b9190614d7f565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b60115481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b6000612959612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df906150c2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b612a12612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a98906150c2565b60405180910390fd5b60005b82829050811015612b385760186000848484818110612ac657612ac56150e2565b5b9050602002016020810190612adb9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080612b3090615140565b915050612aa4565b505050565b612b45612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb906150c2565b60405180910390fd5b60005b8151811015612cce57600160186000848481518110612bf957612bf86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110612c6557612c646150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df76001604051612cb39190614d7f565b60405180910390a28080612cc690615140565b915050612bd7565b5050565b60175481565b612ce0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d66906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd5906153f7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000808284612eb39190615188565b905083811015612ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eef90615463565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f70906154f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf90615587565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130c69190614c68565b60405180910390a3505050565b60646016546009546130e591906155a7565b6130ef9190615618565b600681905550612710600560095461310791906155a7565b6131119190615618565b600781905550606460155460095461312991906155a7565b6131339190615618565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a1906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132109061574d565b60405180910390fd5b600081036132325761322d838360006140f3565b613fe9565b600a60149054906101000a900460ff1615613b415761324f612101565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132bd575061328d612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132f65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613330575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133495750600560149054906101000a900460ff16155b15613b4057600a60159054906101000a900460ff166134eb57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134035750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134575750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134ab5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e1906157b9565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561358f5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c59061584b565b60405180910390fd5b600c60009054906101000a900460ff1615613857576135eb612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561367257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136ca57507f00000000000000000000000031a087493244cef87da1dc6a6856e564bd96993973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156137245750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561377e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156138565743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fb90615903565b60405180910390fd5b601754436138129190615188565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138fa5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139a157600654811115613944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393b90615995565b60405180910390fd5b60085461395083611b73565b8261395b9190615188565b111561399c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399390615a01565b60405180910390fd5b613b3f565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a445750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9357600654811115613a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8590615a93565b60405180910390fd5b613b3e565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b3d57600854613af083611b73565b82613afb9190615188565b1115613b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b3390615a01565b60405180910390fd5b5b5b5b5b5b6000613b4c30611b73565b905060006007548210159050808015613b725750600560149054906101000a900460ff16155b8015613b8a5750600a60169054906101000a900460ff165b8015613be05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c365750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c8c5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613cd0576001600560146101000a81548160ff021916908315150217905550613cb4614386565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d865750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d9057600090505b60008115613fd957601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613df357506000601254115b15613e8d57613e206064613e126012548861446f90919063ffffffff16565b6144e990919063ffffffff16565b905060125460105482613e3391906155a7565b613e3d9190615618565b60136000828254613e4e9190615188565b9250508190555060125460115482613e6691906155a7565b613e709190615618565b60146000828254613e819190615188565b92505081905550613f7f565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ee857506000600f54115b15613f7e57613f156064613f07600f548861446f90919063ffffffff16565b6144e990919063ffffffff16565b9050600f54600d5482613f2891906155a7565b613f329190615618565b60136000828254613f439190615188565b92505081905550600f54600e5482613f5b91906155a7565b613f659190615618565b60146000828254613f769190615188565b925050819055505b5b6000811115613fca57613f938730836140f3565b60006013541115613fc957613faa30601354614533565b613fb26113f4565b600981905550613fc06130d3565b60006013819055505b5b8085613fd69190615ab3565b94505b613fe48787876140f3565b505050505b505050565b6000838311158290614036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161402d9190614d02565b60405180910390fd5b50600083856140459190615ab3565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603614162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614159906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036141d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c89061574d565b60405180910390fd5b6141dc8383836146e0565b61424781604051806060016040528060268152602001615e09602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142da816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143799190614c68565b60405180910390a3505050565b600061439130611b73565b905060008082036143a357505061446d565b60146007546143b291906155a7565b8211156143cb5760146007546143c891906155a7565b91505b6143d4826146e5565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161442290615b18565b60006040518083038185875af1925050503d806000811461445f576040519150601f19603f3d011682016040523d82523d6000602084013e614464565b606091505b50508091505050505b565b600080830361448157600090506144e3565b6000828461448f91906155a7565b905082848261449e9190615618565b146144de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144d590615b9f565b60405180910390fd5b809150505b92915050565b600061452b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614922565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036145a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459990615c31565b60405180910390fd5b6145ae826000836146e0565b61461981604051806060016040528060228152602001615de7602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146708160025461498590919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516146d49190614c68565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115614702576147016149f9565b5b6040519080825280602002602001820160405280156147305781602001602082028036833780820191505090505b5090503081600081518110614748576147476150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148119190615c66565b81600181518110614825576148246150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061488a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612f0a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016148ec959493929190615d8c565b600060405180830381600087803b15801561490657600080fd5b505af115801561491a573d6000803e3d6000fd5b505050505050565b60008083118290614969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149609190614d02565b60405180910390fd5b50600083856149789190615618565b9050809150509392505050565b60006149c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614a31826149e8565b810181811067ffffffffffffffff82111715614a5057614a4f6149f9565b5b80604052505050565b6000614a636149cf565b9050614a6f8282614a28565b919050565b600067ffffffffffffffff821115614a8f57614a8e6149f9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ad082614aa5565b9050919050565b614ae081614ac5565b8114614aeb57600080fd5b50565b600081359050614afd81614ad7565b92915050565b6000614b16614b1184614a74565b614a59565b90508083825260208201905060208402830185811115614b3957614b38614aa0565b5b835b81811015614b625780614b4e8882614aee565b845260208401935050602081019050614b3b565b5050509392505050565b600082601f830112614b8157614b806149e3565b5b8135614b91848260208601614b03565b91505092915050565b600060208284031215614bb057614baf6149d9565b5b600082013567ffffffffffffffff811115614bce57614bcd6149de565b5b614bda84828501614b6c565b91505092915050565b6000819050919050565b614bf681614be3565b8114614c0157600080fd5b50565b600081359050614c1381614bed565b92915050565b60008060408385031215614c3057614c2f6149d9565b5b6000614c3e85828601614c04565b9250506020614c4f85828601614c04565b9150509250929050565b614c6281614be3565b82525050565b6000602082019050614c7d6000830184614c59565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614cbd578082015181840152602081019050614ca2565b60008484015250505050565b6000614cd482614c83565b614cde8185614c8e565b9350614cee818560208601614c9f565b614cf7816149e8565b840191505092915050565b60006020820190508181036000830152614d1c8184614cc9565b905092915050565b60008060408385031215614d3b57614d3a6149d9565b5b6000614d4985828601614aee565b9250506020614d5a85828601614c04565b9150509250929050565b60008115159050919050565b614d7981614d64565b82525050565b6000602082019050614d946000830184614d70565b92915050565b600060208284031215614db057614daf6149d9565b5b6000614dbe84828501614aee565b91505092915050565b600060208284031215614ddd57614ddc6149d9565b5b6000614deb84828501614c04565b91505092915050565b6000819050919050565b6000614e19614e14614e0f84614aa5565b614df4565b614aa5565b9050919050565b6000614e2b82614dfe565b9050919050565b6000614e3d82614e20565b9050919050565b614e4d81614e32565b82525050565b6000602082019050614e686000830184614e44565b92915050565b600080600060608486031215614e8757614e866149d9565b5b6000614e9586828701614aee565b9350506020614ea686828701614aee565b9250506040614eb786828701614c04565b9150509250925092565b614eca81614ac5565b82525050565b6000602082019050614ee56000830184614ec1565b92915050565b600060ff82169050919050565b614f0181614eeb565b82525050565b6000602082019050614f1c6000830184614ef8565b92915050565b600080fd5b60008083601f840112614f3d57614f3c6149e3565b5b8235905067ffffffffffffffff811115614f5a57614f59614f22565b5b602083019150836020820283011115614f7657614f75614aa0565b5b9250929050565b60008060208385031215614f9457614f936149d9565b5b600083013567ffffffffffffffff811115614fb257614fb16149de565b5b614fbe85828601614f27565b92509250509250929050565b614fd381614d64565b8114614fde57600080fd5b50565b600081359050614ff081614fca565b92915050565b6000806040838503121561500d5761500c6149d9565b5b600061501b85828601614aee565b925050602061502c85828601614fe1565b9150509250929050565b6000806040838503121561504d5761504c6149d9565b5b600061505b85828601614aee565b925050602061506c85828601614aee565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150ac602083614c8e565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061514b82614be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361517d5761517c615111565b5b600182019050919050565b600061519382614be3565b915061519e83614be3565b92508282019050808211156151b6576151b5615111565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006151f2601d83614c8e565b91506151fd826151bc565b602082019050919050565b60006020820190508181036000830152615221816151e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061526f57607f821691505b60208210810361528257615281615228565b5b50919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006152e4603983614c8e565b91506152ef82615288565b604082019050919050565b60006020820190508181036000830152615313816152d7565b9050919050565b600060408201905061532f6000830185614ec1565b61533c6020830184614c59565b9392505050565b60008151905061535281614fca565b92915050565b60006020828403121561536e5761536d6149d9565b5b600061537c84828501615343565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e1602683614c8e565b91506153ec82615385565b604082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061544d601b83614c8e565b915061545882615417565b602082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006154df602483614c8e565b91506154ea82615483565b604082019050919050565b6000602082019050818103600083015261550e816154d2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615571602283614c8e565b915061557c82615515565b604082019050919050565b600060208201905081810360008301526155a081615564565b9050919050565b60006155b282614be3565b91506155bd83614be3565b92508282026155cb81614be3565b915082820484148315176155e2576155e1615111565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061562382614be3565b915061562e83614be3565b92508261563e5761563d6155e9565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156a5602583614c8e565b91506156b082615649565b604082019050919050565b600060208201905081810360008301526156d481615698565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615737602383614c8e565b9150615742826156db565b604082019050919050565b600060208201905081810360008301526157668161572a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157a3601683614c8e565b91506157ae8261576d565b602082019050919050565b600060208201905081810360008301526157d281615796565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000615835602383614c8e565b9150615840826157d9565b604082019050919050565b6000602082019050818103600083015261586481615828565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158ed604983614c8e565b91506158f88261586b565b606082019050919050565b6000602082019050818103600083015261591c816158e0565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061597f603583614c8e565b915061598a82615923565b604082019050919050565b600060208201905081810360008301526159ae81615972565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159eb601383614c8e565b91506159f6826159b5565b602082019050919050565b60006020820190508181036000830152615a1a816159de565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615a7d603683614c8e565b9150615a8882615a21565b604082019050919050565b60006020820190508181036000830152615aac81615a70565b9050919050565b6000615abe82614be3565b9150615ac983614be3565b9250828203905081811115615ae157615ae0615111565b5b92915050565b600081905092915050565b50565b6000615b02600083615ae7565b9150615b0d82615af2565b600082019050919050565b6000615b2382615af5565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b89602183614c8e565b9150615b9482615b2d565b604082019050919050565b60006020820190508181036000830152615bb881615b7c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c1b602183614c8e565b9150615c2682615bbf565b604082019050919050565b60006020820190508181036000830152615c4a81615c0e565b9050919050565b600081519050615c6081614ad7565b92915050565b600060208284031215615c7c57615c7b6149d9565b5b6000615c8a84828501615c51565b91505092915050565b6000819050919050565b6000615cb8615cb3615cae84615c93565b614df4565b614be3565b9050919050565b615cc881615c9d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d0381614ac5565b82525050565b6000615d158383615cfa565b60208301905092915050565b6000602082019050919050565b6000615d3982615cce565b615d438185615cd9565b9350615d4e83615cea565b8060005b83811015615d7f578151615d668882615d09565b9750615d7183615d21565b925050600181019050615d52565b5085935050505092915050565b600060a082019050615da16000830188614c59565b615dae6020830187615cbf565b8181036040830152615dc08186615d2e565b9050615dcf6060830185614ec1565b615ddc6080830184614c59565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d7fb182dff62fc31791b55098ff0f5a0d4bef82bfb5f83fe5a3f648ae07d64fb64736f6c63430008110033

Deployed Bytecode Sourcemap

18771:13176:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22530:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24605:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19195:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6395:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7294:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19918:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23698:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23062:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18848:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6709:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19690:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19725:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22901:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7469:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18994:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24898:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7830:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18906:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19252:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31743:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19223:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26344:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22707:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19518:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24323:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19652:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19332:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6823:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12181:148;;;;;;;;;;;;;:::i;:::-;;23570:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24171:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19761:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23929:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22207:315;;;;;;;;;;;;;:::i;:::-;;11971:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6501:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19794:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25904:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20097:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31323:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23225:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8054:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6956:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19585:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31535:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19989:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19292:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20054:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25509:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19440:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19082:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19618:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19551;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7137:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19124:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19486:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23384:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25289:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25025:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19826:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12335:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19164:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22530:169;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22606:9:::1;22601:91;22625:5;:12;22621:1;:16;22601:91;;;22676:4;22659;:14;22664:5;22670:1;22664:8;;;;;;;;:::i;:::-;;;;;;;;22659:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22639:3;;;;;:::i;:::-;;;;22601:91;;;;22530:169:::0;:::o;24605:281::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24710:8:::1;24696:11;:22;;;;24744:9;24729:12;:24;;;;24794:12;;24780:11;;:26;;;;:::i;:::-;24764:13;:42;;;;24842:2;24825:13;;:19;;24817:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24605:281:::0;;:::o;19195:21::-;;;;:::o;6395:100::-;6449:13;6482:5;6475:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6395:100;:::o;7294:169::-;7377:4;7394:39;7403:12;:10;:12::i;:::-;7417:7;7426:6;7394:8;:39::i;:::-;7451:4;7444:11;;7294:169;;;;:::o;19918:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;23698:223::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23796:9:::1;23791:123;23815:8;:15;23811:1;:19;23791:123;;;23898:4;23851:31;:44;23883:8;23892:1;23883:11;;;;;;;;:::i;:::-;;;;;;;;23851:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;23832:3;;;;;:::i;:::-;;;;23791:123;;;;23698:223:::0;:::o;23062:157::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23153:1:::1;23143:6;:11;;23135:20;;;::::0;::::1;;23180:6;23166:11;:20;;;;23197:14;:12;:14::i;:::-;23062:157:::0;:::o;18848:51::-;;;:::o;6709:108::-;6770:7;6797:12;;6790:19;;6709:108;:::o;19690:28::-;;;;:::o;19725:29::-;;;;:::o;22901:155::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22991:1:::1;22981:6;:11;;22973:20;;;::::0;::::1;;23017:6;23004:10;:19;;;;23034:14;:12;:14::i;:::-;22901:155:::0;:::o;7469:355::-;7609:4;7626:36;7636:6;7644:9;7655:6;7626:9;:36::i;:::-;7673:121;7682:6;7690:12;:10;:12::i;:::-;7704:89;7742:6;7704:89;;;;;;;;;;;;;;;;;:11;:19;7716:6;7704:19;;;;;;;;;;;;;;;:33;7724:12;:10;:12::i;:::-;7704:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7673:8;:121::i;:::-;7812:4;7805:11;;7469:355;;;;;:::o;18994:53::-;19040:6;18994:53;:::o;6611:92::-;6669:5;6694:1;6687:8;;6611:92;:::o;24898:119::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24994:15:::1;24984:7;;:25;;;;;;;;;;;;;;;;;;24898:119:::0;:::o;7830:218::-;7918:4;7935:83;7944:12;:10;:12::i;:::-;7958:7;7967:50;8006:10;7967:11;:25;7979:12;:10;:12::i;:::-;7967:25;;;;;;;;;;;;;;;:34;7993:7;7967:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7935:8;:83::i;:::-;8036:4;8029:11;;7830:218;;;;:::o;18906:38::-;;;:::o;19252:33::-;;;;;;;;;;;;;:::o;31743:201::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31832:9:::1;31828:109;31851:8;;:15;;31847:1;:19;31828:109;;;31900:12;:25;31913:8;;31922:1;31913:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31900:25;;;;;;;;;;;;;;;;31893:32;;;;;;;;;;;31868:3;;;;;:::i;:::-;;;;31828:109;;;;31743:201:::0;;:::o;19223:22::-;;;;;;;;;;;;;:::o;26344:125::-;26409:4;26433:19;:28;26453:7;26433:28;;;;;;;;;;;;;;;;;;;;;;;;;26426:35;;26344:125;;;:::o;22707:186::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22788:9:::1;22784:102;22807:8;;:15;;22803:1;:19;22784:102;;;22857:4;:17;22862:8;;22871:1;22862:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22857:17;;;;;;;;;;;;;;;;22850:24;;;;;;;;;;;22824:3;;;;;:::i;:::-;;;;22784:102;;;;22707:186:::0;;:::o;19518:26::-;;;;:::o;24323:274::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24426:8:::1;24413:10;:21;;;;24459:9;24445:11;:23;;;;24507:11;;24494:10;;:24;;;;:::i;:::-;24479:12;:39;;;;24553:2;24537:12:::0;::::1;:18;;24529:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24323:274:::0;;:::o;19652:28::-;;;;:::o;19332:30::-;;;;;;;;;;;;;:::o;6823:127::-;6897:7;6924:9;:18;6934:7;6924:18;;;;;;;;;;;;;;;;6917:25;;6823:127;;;:::o;12181:148::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12288:1:::1;12251:40;;12272:6;;;;;;;;;;;12251:40;;;;;;;;;;;;12319:1;12302:6;;:19;;;;;;;;;;;;;;;;;;12181:148::o:0;23570:120::-;23622:4;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23655:5:::1;23638:14;;:22;;;;;;;;;;;;;;;;;;23678:4;23671:11;;23570:120:::0;:::o;24171:144::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24303:4:::1;24261:31;:39;24293:6;24261:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24171:144:::0;;:::o;19761:26::-;;;;:::o;23929:234::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24031:9:::1;24027:129;24050:8;;:15;;24046:1;:19;24027:129;;;24100:31;:44;24132:8;;24141:1;24132:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24100:44;;;;;;;;;;;;;;;;24093:51;;;;;;;;;;;24067:3;;;;;:::i;:::-;;;;24027:129;;;;23929:234:::0;;:::o;22207:315::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22275:1:::1;22262:10;:14;;;;22301:1;22287:11;:15;;;;22341:11;;22328:10;;:24;;;;:::i;:::-;22313:12;:39;;;;22377:1;22363:11;:15;;;;22404:1;22389:12;:16;;;;22446:12;;22432:11;;:26;;;;:::i;:::-;22416:13;:42;;;;22482:1;22469:10;:14;;;;22510:4;22494:13;;:20;;;;;;;;;;;;;;;;;;22207:315::o:0;11971:79::-;12009:7;12036:6;;;;;;;;;;;12029:13;;11971:79;:::o;6501:104::-;6557:13;6590:7;6583:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6501:104;:::o;19794:25::-;;;;:::o;25904:242::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26011:13:::1;26003:21;;:4;:21;;::::0;25995:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26097:41;26126:4;26132:5;26097:28;:41::i;:::-;25904:242:::0;;:::o;20097:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;31323:200::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31416:20:::1;31446:14;31416:45;;31472:13;:22;;;31495:10;31507:7;31472:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31405:118;31323:200:::0;;:::o;23225:98::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23309:6:::1;23296:10;:19;;;;23225:98:::0;:::o;8054:269::-;8147:4;8164:129;8173:12;:10;:12::i;:::-;8187:7;8196:96;8235:15;8196:96;;;;;;;;;;;;;;;;;:11;:25;8208:12;:10;:12::i;:::-;8196:25;;;;;;;;;;;;;;;:34;8222:7;8196:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8164:8;:129::i;:::-;8311:4;8304:11;;8054:269;;;;:::o;6956:175::-;7042:4;7059:42;7069:12;:10;:12::i;:::-;7083:9;7094:6;7059:9;:42::i;:::-;7119:4;7112:11;;6956:175;;;;:::o;19585:26::-;;;;:::o;31535:200::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31623:9:::1;31619:109;31642:8;;:15;;31638:1;:19;31619:109;;;31712:4;31684:12;:25;31697:8;;31706:1;31697:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31684:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;31659:3;;;;;:::i;:::-;;;;31619:109;;;;31535:200:::0;;:::o;19989:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19292:33::-;;;;;;;;;;;;;:::o;20054:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;25509:182::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25625:8:::1;25594:19;:28;25614:7;25594:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25665:7;25649:34;;;25674:8;25649:34;;;;;;:::i;:::-;;;;;;;;25509:182:::0;;:::o;19440:39::-;;;;;;;;;;;;;:::o;19082:35::-;;;;:::o;19618:27::-;;;;:::o;19551:::-;;;;:::o;7137:151::-;7226:7;7253:11;:18;7265:5;7253:18;;;;;;;;;;;;;;;:27;7272:7;7253:27;;;;;;;;;;;;;;;;7246:34;;7137:151;;;;:::o;19124:33::-;;;;:::o;19486:25::-;;;;:::o;23384:134::-;23444:4;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23483:5:::1;23460:20;;:28;;;;;;;;;;;;;;;;;;23506:4;23499:11;;23384:134:::0;:::o;25289:212::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25381:9:::1;25377:117;25400:8;;:15;;25396:1;:19;25377:117;;;25450:19;:32;25470:8;;25479:1;25470:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25450:32;;;;;;;;;;;;;;;;25443:39;;;;;;;;;;;25417:3;;;;;:::i;:::-;;;;25377:117;;;;25289:212:::0;;:::o;25025:256::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25113:9:::1;25108:166;25132:8;:15;25128:1;:19;25108:166;;;25204:4;25169:19;:32;25189:8;25198:1;25189:11;;;;;;;;:::i;:::-;;;;;;;;25169:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25244:8;25253:1;25244:11;;;;;;;;:::i;:::-;;;;;;;;25228:34;;;25257:4;25228:34;;;;;;:::i;:::-;;;;;;;;25149:3;;;;;:::i;:::-;;;;25108:166;;;;25025:256:::0;:::o;19826:25::-;;;;:::o;12335:244::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12444:1:::1;12424:22;;:8;:22;;::::0;12416:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12534:8;12505:38;;12526:6;;;;;;;;;;;12505:38;;;;;;;;;;;;12563:8;12554:6;;:17;;;;;;;;;;;;;;;;;;12335:244:::0;:::o;19164:24::-;;;;:::o;10242:179::-;10300:7;10320:9;10336:1;10332;:5;;;;:::i;:::-;10320:17;;10361:1;10356;:6;;10348:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10412:1;10405:8;;;10242:179;;;;:::o;1738:98::-;1791:7;1818:10;1811:17;;1738:98;:::o;9704:378::-;9857:1;9840:19;;:5;:19;;;9832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9938:1;9919:21;;:7;:21;;;9911:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10020:6;9990:11;:18;10002:5;9990:18;;;;;;;;;;;;;;;:27;10009:7;9990:27;;;;;;;;;;;;;;;:36;;;;10058:7;10042:32;;10051:5;10042:32;;;10067:6;10042:32;;;;;;:::i;:::-;;;;;;;;9704:378;;;:::o;25699:199::-;25787:3;25774:10;;25765:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;25742:20;:48;;;;25835:5;25831:1;25822:6;;:10;;;;:::i;:::-;:18;;;;:::i;:::-;25801;:39;;;;25887:3;25873:11;;25864:6;;:20;;;;:::i;:::-;:26;;;;:::i;:::-;25852:9;:38;;;;25699:199::o;26475:3872::-;26623:1;26607:18;;:4;:18;;;26599:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26700:1;26686:16;;:2;:16;;;26678:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26767:1;26757:6;:11;26754:92;;26785:28;26801:4;26807:2;26811:1;26785:15;:28::i;:::-;26828:7;;26754:92;26859:14;;;;;;;;;;;26856:1827;;;26919:7;:5;:7::i;:::-;26911:15;;:4;:15;;;;:49;;;;;26953:7;:5;:7::i;:::-;26947:13;;:2;:13;;;;26911:49;:86;;;;;26995:1;26981:16;;:2;:16;;;;26911:86;:128;;;;;27032:6;27018:21;;:2;:21;;;;26911:128;:158;;;;;27061:8;;;;;;;;;;;27060:9;26911:158;26889:1783;;;27107:13;;;;;;;;;;;27103:190;;27152:19;:25;27172:4;27152:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27181:19;:23;27201:2;27181:23;;;;;;;;;;;;;;;;;;;;;;;;;27152:52;:74;;;;27208:12;:18;27221:4;27208:18;;;;;;;;;;;;;;;;;;;;;;;;;27152:74;:94;;;;27230:12;:16;27243:2;27230:16;;;;;;;;;;;;;;;;;;;;;;;;;27152:94;27144:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;27103:190;27336:4;:10;27341:4;27336:10;;;;;;;;;;;;;;;;;;;;;;;;;27335:11;:24;;;;;27351:4;:8;27356:2;27351:8;;;;;;;;;;;;;;;;;;;;;;;;;27350:9;27335:24;27327:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;27422:20;;;;;;;;;;;27418:490;;;27476:7;:5;:7::i;:::-;27470:13;;:2;:13;;;;:47;;;;;27501:15;27487:30;;:2;:30;;;;27470:47;:79;;;;;27535:13;27521:28;;:2;:28;;;;27470:79;:105;;;;;27567:7;;;;;;;;;;;27553:22;;:2;:22;;;;27470:105;:133;;;;;27595:7;;;;;;;;;;;27579:24;;:4;:24;;;;27470:133;27466:423;;;27681:12;27639:28;:39;27668:9;27639:39;;;;;;;;;;;;;;;;:54;27631:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27855:10;;27840:12;:25;;;;:::i;:::-;27798:28;:39;27827:9;27798:39;;;;;;;;;;;;;;;:67;;;;27466:423;27418:490;27930:25;:31;27956:4;27930:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27966:31;:35;27998:2;27966:35;;;;;;;;;;;;;;;;;;;;;;;;;27965:36;27930:71;27926:731;;;28048:20;;28038:6;:30;;28030:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;28187:9;;28170:13;28180:2;28170:9;:13::i;:::-;28161:6;:22;;;;:::i;:::-;:35;;28153:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27926:731;;;28267:25;:29;28293:2;28267:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28301:31;:37;28333:4;28301:37;;;;;;;;;;;;;;;;;;;;;;;;;28300:38;28267:71;28263:394;;;28385:20;;28375:6;:30;;28367:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;28263:394;;;28511:31;:35;28543:2;28511:35;;;;;;;;;;;;;;;;;;;;;;;;;28507:150;;28604:9;;28587:13;28597:2;28587:9;:13::i;:::-;28578:6;:22;;;;:::i;:::-;:35;;28570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28507:150;28263:394;27926:731;26889:1783;26856:1827;28693:28;28724:24;28742:4;28724:9;:24::i;:::-;28693:55;;28759:12;28798:18;;28774:20;:42;;28759:57;;28845:7;:33;;;;;28870:8;;;;;;;;;;;28869:9;28845:33;:61;;;;;28895:11;;;;;;;;;;;28845:61;:110;;;;;28924:25;:31;28950:4;28924:31;;;;;;;;;;;;;;;;;;;;;;;;;28923:32;28845:110;:153;;;;;28973:19;:25;28993:4;28973:25;;;;;;;;;;;;;;;;;;;;;;;;;28972:26;28845:153;:194;;;;;29016:19;:23;29036:2;29016:23;;;;;;;;;;;;;;;;;;;;;;;;;29015:24;28845:194;28827:322;;;29077:4;29066:8;;:15;;;;;;;;;;;;;;;;;;29096:10;:8;:10::i;:::-;29132:5;29121:8;;:16;;;;;;;;;;;;;;;;;;28827:322;29159:12;29175:8;;;;;;;;;;;29174:9;29159:24;;29197:19;:25;29217:4;29197:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29226:19;:23;29246:2;29226:23;;;;;;;;;;;;;;;;;;;;;;;;;29197:52;29194:99;;;29276:5;29266:15;;29194:99;29303:12;29333:7;29330:966;;;29360:25;:29;29386:2;29360:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29409:1;29393:13;;:17;29360:50;29356:555;;;29437:34;29467:3;29437:25;29448:13;;29437:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29430:41;;29528:13;;29514:11;;29507:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;29490:13;;:51;;;;;;;:::i;:::-;;;;;;;;29600:13;;29585:12;;29578:4;:19;;;;:::i;:::-;:35;;;;:::i;:::-;29560:14;;:53;;;;;;;:::i;:::-;;;;;;;;29356:555;;;29651:25;:31;29677:4;29651:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29701:1;29686:12;;:16;29651:51;29648:263;;;29727:33;29756:3;29727:24;29738:12;;29727:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29720:40;;29813:12;;29800:10;;29793:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;29776:13;;:49;;;;;;;:::i;:::-;;;;;;;;29883:12;;29869:11;;29862:4;:18;;;;:::i;:::-;:33;;;;:::i;:::-;29844:14;;:51;;;;;;;:::i;:::-;;;;;;;;29648:263;29356:555;29935:1;29928:4;:8;29925:334;;;29960:42;29976:4;29990;29997;29960:15;:42::i;:::-;30041:1;30025:13;;:17;30021:223;;;30067:35;30081:4;30088:13;;30067:5;:35::i;:::-;30134:13;:11;:13::i;:::-;30125:6;:22;;;;30170:14;:12;:14::i;:::-;30223:1;30207:13;:17;;;;30021:223;29925:334;30280:4;30270:14;;;;;:::i;:::-;;;29330:966;30306:33;30322:4;30328:2;30332:6;30306:15;:33::i;:::-;26588:3759;;;;26475:3872;;;;:::o;10569:190::-;10655:7;10688:1;10683;:6;;10691:12;10675:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10715:9;10731:1;10727;:5;;;;:::i;:::-;10715:17;;10750:1;10743:8;;;10569:190;;;;;:::o;26152:186::-;26269:5;26235:25;:31;26261:4;26235:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26324:5;26290:40;;26318:4;26290:40;;;;;;;;;;;;26152:186;;:::o;8329:569::-;8487:1;8469:20;;:6;:20;;;8461:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8571:1;8550:23;;:9;:23;;;8542:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8624:47;8645:6;8653:9;8664:6;8624:20;:47::i;:::-;8702:71;8724:6;8702:71;;;;;;;;;;;;;;;;;:9;:17;8712:6;8702:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;8682:9;:17;8692:6;8682:17;;;;;;;;;;;;;;;:91;;;;8807:32;8832:6;8807:9;:20;8817:9;8807:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8784:9;:20;8794:9;8784:20;;;;;;;;;;;;;;;:55;;;;8872:9;8855:35;;8864:6;8855:35;;;8883:6;8855:35;;;;;;:::i;:::-;;;;;;;;8329:569;;;:::o;30831:438::-;30870:23;30896:24;30914:4;30896:9;:24::i;:::-;30870:50;;30931:12;30976:1;30957:15;:20;30954:34;;30980:7;;;;30954:34;31040:2;31019:18;;:23;;;;:::i;:::-;31001:15;:41;30998:111;;;31095:2;31074:18;;:23;;;;:::i;:::-;31056:41;;30998:111;31119:33;31136:15;31119:16;:33::i;:::-;31181:1;31164:14;:18;;;;31214:7;;;;;;;;;;;31206:21;;31235;31206:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31193:68;;;;;30859:410;;30831:438;:::o;10765:246::-;10823:7;10852:1;10847;:6;10843:47;;10877:1;10870:8;;;;10843:47;10900:9;10916:1;10912;:5;;;;:::i;:::-;10900:17;;10945:1;10940;10936;:5;;;;:::i;:::-;:10;10928:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11002:1;10995:8;;;10765:246;;;;;:::o;11017:132::-;11075:7;11102:39;11106:1;11109;11102:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11095:46;;11017:132;;;;:::o;9284:414::-;9387:1;9368:21;;:7;:21;;;9360:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9438:49;9459:7;9476:1;9480:6;9438:20;:49::i;:::-;9519:68;9542:6;9519:68;;;;;;;;;;;;;;;;;:9;:18;9529:7;9519:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;9498:9;:18;9508:7;9498:18;;;;;;;;;;;;;;;:89;;;;9613:24;9630:6;9613:12;;:16;;:24;;;;:::i;:::-;9598:12;:39;;;;9679:1;9653:37;;9662:7;9653:37;;;9683:6;9653:37;;;;;;:::i;:::-;;;;;;;;9284:414;;:::o;10088:125::-;;;;:::o;30353:472::-;30419:21;30457:1;30443:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30419:40;;30488:4;30470;30475:1;30470:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30514:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30504:4;30509:1;30504:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30547:62;30564:4;30579:15;30597:11;30547:8;:62::i;:::-;30620:15;:66;;;30701:11;30727:1;30744:4;30771;30791:15;30620:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30408:417;30353:472;:::o;11155:189::-;11241:7;11273:1;11269;:5;11276:12;11261:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11300:9;11316:1;11312;:5;;;;:::i;:::-;11300:17;;11335:1;11328:8;;;11155:189;;;;;:::o;10427:136::-;10485:7;10512:43;10516:1;10519;10512:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10505:50;;10427:136;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:474::-;4215:6;4223;4272:2;4260:9;4251:7;4247:23;4243:32;4240:119;;;4278:79;;:::i;:::-;4240:119;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4147:474;;;;;:::o;4627:118::-;4714:24;4732:5;4714:24;:::i;:::-;4709:3;4702:37;4627:118;;:::o;4751:222::-;4844:4;4882:2;4871:9;4867:18;4859:26;;4895:71;4963:1;4952:9;4948:17;4939:6;4895:71;:::i;:::-;4751:222;;;;:::o;4979:99::-;5031:6;5065:5;5059:12;5049:22;;4979:99;;;:::o;5084:169::-;5168:11;5202:6;5197:3;5190:19;5242:4;5237:3;5233:14;5218:29;;5084:169;;;;:::o;5259:246::-;5340:1;5350:113;5364:6;5361:1;5358:13;5350:113;;;5449:1;5444:3;5440:11;5434:18;5430:1;5425:3;5421:11;5414:39;5386:2;5383:1;5379:10;5374:15;;5350:113;;;5497:1;5488:6;5483:3;5479:16;5472:27;5321:184;5259:246;;;:::o;5511:377::-;5599:3;5627:39;5660:5;5627:39;:::i;:::-;5682:71;5746:6;5741:3;5682:71;:::i;:::-;5675:78;;5762:65;5820:6;5815:3;5808:4;5801:5;5797:16;5762:65;:::i;:::-;5852:29;5874:6;5852:29;:::i;:::-;5847:3;5843:39;5836:46;;5603:285;5511:377;;;;:::o;5894:313::-;6007:4;6045:2;6034:9;6030:18;6022:26;;6094:9;6088:4;6084:20;6080:1;6069:9;6065:17;6058:47;6122:78;6195:4;6186:6;6122:78;:::i;:::-;6114:86;;5894:313;;;;:::o;6213:474::-;6281:6;6289;6338:2;6326:9;6317:7;6313:23;6309:32;6306:119;;;6344:79;;:::i;:::-;6306:119;6464:1;6489:53;6534:7;6525:6;6514:9;6510:22;6489:53;:::i;:::-;6479:63;;6435:117;6591:2;6617:53;6662:7;6653:6;6642:9;6638:22;6617:53;:::i;:::-;6607:63;;6562:118;6213:474;;;;;:::o;6693:90::-;6727:7;6770:5;6763:13;6756:21;6745:32;;6693:90;;;:::o;6789:109::-;6870:21;6885:5;6870:21;:::i;:::-;6865:3;6858:34;6789:109;;:::o;6904:210::-;6991:4;7029:2;7018:9;7014:18;7006:26;;7042:65;7104:1;7093:9;7089:17;7080:6;7042:65;:::i;:::-;6904:210;;;;:::o;7120:329::-;7179:6;7228:2;7216:9;7207:7;7203:23;7199:32;7196:119;;;7234:79;;:::i;:::-;7196:119;7354:1;7379:53;7424:7;7415:6;7404:9;7400:22;7379:53;:::i;:::-;7369:63;;7325:117;7120:329;;;;:::o;7455:::-;7514:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7455:329;;;;:::o;7790:60::-;7818:3;7839:5;7832:12;;7790:60;;;:::o;7856:142::-;7906:9;7939:53;7957:34;7966:24;7984:5;7966:24;:::i;:::-;7957:34;:::i;:::-;7939:53;:::i;:::-;7926:66;;7856:142;;;:::o;8004:126::-;8054:9;8087:37;8118:5;8087:37;:::i;:::-;8074:50;;8004:126;;;:::o;8136:153::-;8213:9;8246:37;8277:5;8246:37;:::i;:::-;8233:50;;8136:153;;;:::o;8295:185::-;8409:64;8467:5;8409:64;:::i;:::-;8404:3;8397:77;8295:185;;:::o;8486:276::-;8606:4;8644:2;8633:9;8629:18;8621:26;;8657:98;8752:1;8741:9;8737:17;8728:6;8657:98;:::i;:::-;8486:276;;;;:::o;8768:619::-;8845:6;8853;8861;8910:2;8898:9;8889:7;8885:23;8881:32;8878:119;;;8916:79;;:::i;:::-;8878:119;9036:1;9061:53;9106:7;9097:6;9086:9;9082:22;9061:53;:::i;:::-;9051:63;;9007:117;9163:2;9189:53;9234:7;9225:6;9214:9;9210:22;9189:53;:::i;:::-;9179:63;;9134:118;9291:2;9317:53;9362:7;9353:6;9342:9;9338:22;9317:53;:::i;:::-;9307:63;;9262:118;8768:619;;;;;:::o;9393:118::-;9480:24;9498:5;9480:24;:::i;:::-;9475:3;9468:37;9393:118;;:::o;9517:222::-;9610:4;9648:2;9637:9;9633:18;9625:26;;9661:71;9729:1;9718:9;9714:17;9705:6;9661:71;:::i;:::-;9517:222;;;;:::o;9745:86::-;9780:7;9820:4;9813:5;9809:16;9798:27;;9745:86;;;:::o;9837:112::-;9920:22;9936:5;9920:22;:::i;:::-;9915:3;9908:35;9837:112;;:::o;9955:214::-;10044:4;10082:2;10071:9;10067:18;10059:26;;10095:67;10159:1;10148:9;10144:17;10135:6;10095:67;:::i;:::-;9955:214;;;;:::o;10175:117::-;10284:1;10281;10274:12;10315:568;10388:8;10398:6;10448:3;10441:4;10433:6;10429:17;10425:27;10415:122;;10456:79;;:::i;:::-;10415:122;10569:6;10556:20;10546:30;;10599:18;10591:6;10588:30;10585:117;;;10621:79;;:::i;:::-;10585:117;10735:4;10727:6;10723:17;10711:29;;10789:3;10781:4;10773:6;10769:17;10759:8;10755:32;10752:41;10749:128;;;10796:79;;:::i;:::-;10749:128;10315:568;;;;;:::o;10889:559::-;10975:6;10983;11032:2;11020:9;11011:7;11007:23;11003:32;11000:119;;;11038:79;;:::i;:::-;11000:119;11186:1;11175:9;11171:17;11158:31;11216:18;11208:6;11205:30;11202:117;;;11238:79;;:::i;:::-;11202:117;11351:80;11423:7;11414:6;11403:9;11399:22;11351:80;:::i;:::-;11333:98;;;;11129:312;10889:559;;;;;:::o;11454:116::-;11524:21;11539:5;11524:21;:::i;:::-;11517:5;11514:32;11504:60;;11560:1;11557;11550:12;11504:60;11454:116;:::o;11576:133::-;11619:5;11657:6;11644:20;11635:29;;11673:30;11697:5;11673:30;:::i;:::-;11576:133;;;;:::o;11715:468::-;11780:6;11788;11837:2;11825:9;11816:7;11812:23;11808:32;11805:119;;;11843:79;;:::i;:::-;11805:119;11963:1;11988:53;12033:7;12024:6;12013:9;12009:22;11988:53;:::i;:::-;11978:63;;11934:117;12090:2;12116:50;12158:7;12149:6;12138:9;12134:22;12116:50;:::i;:::-;12106:60;;12061:115;11715:468;;;;;:::o;12189:474::-;12257:6;12265;12314:2;12302:9;12293:7;12289:23;12285:32;12282:119;;;12320:79;;:::i;:::-;12282:119;12440:1;12465:53;12510:7;12501:6;12490:9;12486:22;12465:53;:::i;:::-;12455:63;;12411:117;12567:2;12593:53;12638:7;12629:6;12618:9;12614:22;12593:53;:::i;:::-;12583:63;;12538:118;12189:474;;;;;:::o;12669:182::-;12809:34;12805:1;12797:6;12793:14;12786:58;12669:182;:::o;12857:366::-;12999:3;13020:67;13084:2;13079:3;13020:67;:::i;:::-;13013:74;;13096:93;13185:3;13096:93;:::i;:::-;13214:2;13209:3;13205:12;13198:19;;12857:366;;;:::o;13229:419::-;13395:4;13433:2;13422:9;13418:18;13410:26;;13482:9;13476:4;13472:20;13468:1;13457:9;13453:17;13446:47;13510:131;13636:4;13510:131;:::i;:::-;13502:139;;13229:419;;;:::o;13654:180::-;13702:77;13699:1;13692:88;13799:4;13796:1;13789:15;13823:4;13820:1;13813:15;13840:180;13888:77;13885:1;13878:88;13985:4;13982:1;13975:15;14009:4;14006:1;13999:15;14026:233;14065:3;14088:24;14106:5;14088:24;:::i;:::-;14079:33;;14134:66;14127:5;14124:77;14121:103;;14204:18;;:::i;:::-;14121:103;14251:1;14244:5;14240:13;14233:20;;14026:233;;;:::o;14265:191::-;14305:3;14324:20;14342:1;14324:20;:::i;:::-;14319:25;;14358:20;14376:1;14358:20;:::i;:::-;14353:25;;14401:1;14398;14394:9;14387:16;;14422:3;14419:1;14416:10;14413:36;;;14429:18;;:::i;:::-;14413:36;14265:191;;;;:::o;14462:179::-;14602:31;14598:1;14590:6;14586:14;14579:55;14462:179;:::o;14647:366::-;14789:3;14810:67;14874:2;14869:3;14810:67;:::i;:::-;14803:74;;14886:93;14975:3;14886:93;:::i;:::-;15004:2;14999:3;14995:12;14988:19;;14647:366;;;:::o;15019:419::-;15185:4;15223:2;15212:9;15208:18;15200:26;;15272:9;15266:4;15262:20;15258:1;15247:9;15243:17;15236:47;15300:131;15426:4;15300:131;:::i;:::-;15292:139;;15019:419;;;:::o;15444:180::-;15492:77;15489:1;15482:88;15589:4;15586:1;15579:15;15613:4;15610:1;15603:15;15630:320;15674:6;15711:1;15705:4;15701:12;15691:22;;15758:1;15752:4;15748:12;15779:18;15769:81;;15835:4;15827:6;15823:17;15813:27;;15769:81;15897:2;15889:6;15886:14;15866:18;15863:38;15860:84;;15916:18;;:::i;:::-;15860:84;15681:269;15630:320;;;:::o;15956:244::-;16096:34;16092:1;16084:6;16080:14;16073:58;16165:27;16160:2;16152:6;16148:15;16141:52;15956:244;:::o;16206:366::-;16348:3;16369:67;16433:2;16428:3;16369:67;:::i;:::-;16362:74;;16445:93;16534:3;16445:93;:::i;:::-;16563:2;16558:3;16554:12;16547:19;;16206:366;;;:::o;16578:419::-;16744:4;16782:2;16771:9;16767:18;16759:26;;16831:9;16825:4;16821:20;16817:1;16806:9;16802:17;16795:47;16859:131;16985:4;16859:131;:::i;:::-;16851:139;;16578:419;;;:::o;17003:332::-;17124:4;17162:2;17151:9;17147:18;17139:26;;17175:71;17243:1;17232:9;17228:17;17219:6;17175:71;:::i;:::-;17256:72;17324:2;17313:9;17309:18;17300:6;17256:72;:::i;:::-;17003:332;;;;;:::o;17341:137::-;17395:5;17426:6;17420:13;17411:22;;17442:30;17466:5;17442:30;:::i;:::-;17341:137;;;;:::o;17484:345::-;17551:6;17600:2;17588:9;17579:7;17575:23;17571:32;17568:119;;;17606:79;;:::i;:::-;17568:119;17726:1;17751:61;17804:7;17795:6;17784:9;17780:22;17751:61;:::i;:::-;17741:71;;17697:125;17484:345;;;;:::o;17835:225::-;17975:34;17971:1;17963:6;17959:14;17952:58;18044:8;18039:2;18031:6;18027:15;18020:33;17835:225;:::o;18066:366::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:419::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18691:9;18685:4;18681:20;18677:1;18666:9;18662:17;18655:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18438:419;;;:::o;18863:177::-;19003:29;18999:1;18991:6;18987:14;18980:53;18863:177;:::o;19046:366::-;19188:3;19209:67;19273:2;19268:3;19209:67;:::i;:::-;19202:74;;19285:93;19374:3;19285:93;:::i;:::-;19403:2;19398:3;19394:12;19387:19;;19046:366;;;:::o;19418:419::-;19584:4;19622:2;19611:9;19607:18;19599:26;;19671:9;19665:4;19661:20;19657:1;19646:9;19642:17;19635:47;19699:131;19825:4;19699:131;:::i;:::-;19691:139;;19418:419;;;:::o;19843:223::-;19983:34;19979:1;19971:6;19967:14;19960:58;20052:6;20047:2;20039:6;20035:15;20028:31;19843:223;:::o;20072:366::-;20214:3;20235:67;20299:2;20294:3;20235:67;:::i;:::-;20228:74;;20311:93;20400:3;20311:93;:::i;:::-;20429:2;20424:3;20420:12;20413:19;;20072:366;;;:::o;20444:419::-;20610:4;20648:2;20637:9;20633:18;20625:26;;20697:9;20691:4;20687:20;20683:1;20672:9;20668:17;20661:47;20725:131;20851:4;20725:131;:::i;:::-;20717:139;;20444:419;;;:::o;20869:221::-;21009:34;21005:1;20997:6;20993:14;20986:58;21078:4;21073:2;21065:6;21061:15;21054:29;20869:221;:::o;21096:366::-;21238:3;21259:67;21323:2;21318:3;21259:67;:::i;:::-;21252:74;;21335:93;21424:3;21335:93;:::i;:::-;21453:2;21448:3;21444:12;21437:19;;21096:366;;;:::o;21468:419::-;21634:4;21672:2;21661:9;21657:18;21649:26;;21721:9;21715:4;21711:20;21707:1;21696:9;21692:17;21685:47;21749:131;21875:4;21749:131;:::i;:::-;21741:139;;21468:419;;;:::o;21893:410::-;21933:7;21956:20;21974:1;21956:20;:::i;:::-;21951:25;;21990:20;22008:1;21990:20;:::i;:::-;21985:25;;22045:1;22042;22038:9;22067:30;22085:11;22067:30;:::i;:::-;22056:41;;22246:1;22237:7;22233:15;22230:1;22227:22;22207:1;22200:9;22180:83;22157:139;;22276:18;;:::i;:::-;22157:139;21941:362;21893:410;;;;:::o;22309:180::-;22357:77;22354:1;22347:88;22454:4;22451:1;22444:15;22478:4;22475:1;22468:15;22495:185;22535:1;22552:20;22570:1;22552:20;:::i;:::-;22547:25;;22586:20;22604:1;22586:20;:::i;:::-;22581:25;;22625:1;22615:35;;22630:18;;:::i;:::-;22615:35;22672:1;22669;22665:9;22660:14;;22495:185;;;;:::o;22686:224::-;22826:34;22822:1;22814:6;22810:14;22803:58;22895:7;22890:2;22882:6;22878:15;22871:32;22686:224;:::o;22916:366::-;23058:3;23079:67;23143:2;23138:3;23079:67;:::i;:::-;23072:74;;23155:93;23244:3;23155:93;:::i;:::-;23273:2;23268:3;23264:12;23257:19;;22916:366;;;:::o;23288:419::-;23454:4;23492:2;23481:9;23477:18;23469:26;;23541:9;23535:4;23531:20;23527:1;23516:9;23512:17;23505:47;23569:131;23695:4;23569:131;:::i;:::-;23561:139;;23288:419;;;:::o;23713:222::-;23853:34;23849:1;23841:6;23837:14;23830:58;23922:5;23917:2;23909:6;23905:15;23898:30;23713:222;:::o;23941:366::-;24083:3;24104:67;24168:2;24163:3;24104:67;:::i;:::-;24097:74;;24180:93;24269:3;24180:93;:::i;:::-;24298:2;24293:3;24289:12;24282:19;;23941:366;;;:::o;24313:419::-;24479:4;24517:2;24506:9;24502:18;24494:26;;24566:9;24560:4;24556:20;24552:1;24541:9;24537:17;24530:47;24594:131;24720:4;24594:131;:::i;:::-;24586:139;;24313:419;;;:::o;24738:172::-;24878:24;24874:1;24866:6;24862:14;24855:48;24738:172;:::o;24916:366::-;25058:3;25079:67;25143:2;25138:3;25079:67;:::i;:::-;25072:74;;25155:93;25244:3;25155:93;:::i;:::-;25273:2;25268:3;25264:12;25257:19;;24916:366;;;:::o;25288:419::-;25454:4;25492:2;25481:9;25477:18;25469:26;;25541:9;25535:4;25531:20;25527:1;25516:9;25512:17;25505:47;25569:131;25695:4;25569:131;:::i;:::-;25561:139;;25288:419;;;:::o;25713:222::-;25853:34;25849:1;25841:6;25837:14;25830:58;25922:5;25917:2;25909:6;25905:15;25898:30;25713:222;:::o;25941:366::-;26083:3;26104:67;26168:2;26163:3;26104:67;:::i;:::-;26097:74;;26180:93;26269:3;26180:93;:::i;:::-;26298:2;26293:3;26289:12;26282:19;;25941:366;;;:::o;26313:419::-;26479:4;26517:2;26506:9;26502:18;26494:26;;26566:9;26560:4;26556:20;26552:1;26541:9;26537:17;26530:47;26594:131;26720:4;26594:131;:::i;:::-;26586:139;;26313:419;;;:::o;26738:297::-;26878:34;26874:1;26866:6;26862:14;26855:58;26947:34;26942:2;26934:6;26930:15;26923:59;27016:11;27011:2;27003:6;26999:15;26992:36;26738:297;:::o;27041:366::-;27183:3;27204:67;27268:2;27263:3;27204:67;:::i;:::-;27197:74;;27280:93;27369:3;27280:93;:::i;:::-;27398:2;27393:3;27389:12;27382:19;;27041:366;;;:::o;27413:419::-;27579:4;27617:2;27606:9;27602:18;27594:26;;27666:9;27660:4;27656:20;27652:1;27641:9;27637:17;27630:47;27694:131;27820:4;27694:131;:::i;:::-;27686:139;;27413:419;;;:::o;27838:240::-;27978:34;27974:1;27966:6;27962:14;27955:58;28047:23;28042:2;28034:6;28030:15;28023:48;27838:240;:::o;28084:366::-;28226:3;28247:67;28311:2;28306:3;28247:67;:::i;:::-;28240:74;;28323:93;28412:3;28323:93;:::i;:::-;28441:2;28436:3;28432:12;28425:19;;28084:366;;;:::o;28456:419::-;28622:4;28660:2;28649:9;28645:18;28637:26;;28709:9;28703:4;28699:20;28695:1;28684:9;28680:17;28673:47;28737:131;28863:4;28737:131;:::i;:::-;28729:139;;28456:419;;;:::o;28881:169::-;29021:21;29017:1;29009:6;29005:14;28998:45;28881:169;:::o;29056:366::-;29198:3;29219:67;29283:2;29278:3;29219:67;:::i;:::-;29212:74;;29295:93;29384:3;29295:93;:::i;:::-;29413:2;29408:3;29404:12;29397:19;;29056:366;;;:::o;29428:419::-;29594:4;29632:2;29621:9;29617:18;29609:26;;29681:9;29675:4;29671:20;29667:1;29656:9;29652:17;29645:47;29709:131;29835:4;29709:131;:::i;:::-;29701:139;;29428:419;;;:::o;29853:241::-;29993:34;29989:1;29981:6;29977:14;29970:58;30062:24;30057:2;30049:6;30045:15;30038:49;29853:241;:::o;30100:366::-;30242:3;30263:67;30327:2;30322:3;30263:67;:::i;:::-;30256:74;;30339:93;30428:3;30339:93;:::i;:::-;30457:2;30452:3;30448:12;30441:19;;30100:366;;;:::o;30472:419::-;30638:4;30676:2;30665:9;30661:18;30653:26;;30725:9;30719:4;30715:20;30711:1;30700:9;30696:17;30689:47;30753:131;30879:4;30753:131;:::i;:::-;30745:139;;30472:419;;;:::o;30897:194::-;30937:4;30957:20;30975:1;30957:20;:::i;:::-;30952:25;;30991:20;31009:1;30991:20;:::i;:::-;30986:25;;31035:1;31032;31028:9;31020:17;;31059:1;31053:4;31050:11;31047:37;;;31064:18;;:::i;:::-;31047:37;30897:194;;;;:::o;31097:147::-;31198:11;31235:3;31220:18;;31097:147;;;;:::o;31250:114::-;;:::o;31370:398::-;31529:3;31550:83;31631:1;31626:3;31550:83;:::i;:::-;31543:90;;31642:93;31731:3;31642:93;:::i;:::-;31760:1;31755:3;31751:11;31744:18;;31370:398;;;:::o;31774:379::-;31958:3;31980:147;32123:3;31980:147;:::i;:::-;31973:154;;32144:3;32137:10;;31774:379;;;:::o;32159:220::-;32299:34;32295:1;32287:6;32283:14;32276:58;32368:3;32363:2;32355:6;32351:15;32344:28;32159:220;:::o;32385:366::-;32527:3;32548:67;32612:2;32607:3;32548:67;:::i;:::-;32541:74;;32624:93;32713:3;32624:93;:::i;:::-;32742:2;32737:3;32733:12;32726:19;;32385:366;;;:::o;32757:419::-;32923:4;32961:2;32950:9;32946:18;32938:26;;33010:9;33004:4;33000:20;32996:1;32985:9;32981:17;32974:47;33038:131;33164:4;33038:131;:::i;:::-;33030:139;;32757:419;;;:::o;33182:220::-;33322:34;33318:1;33310:6;33306:14;33299:58;33391:3;33386:2;33378:6;33374:15;33367:28;33182:220;:::o;33408:366::-;33550:3;33571:67;33635:2;33630:3;33571:67;:::i;:::-;33564:74;;33647:93;33736:3;33647:93;:::i;:::-;33765:2;33760:3;33756:12;33749:19;;33408:366;;;:::o;33780:419::-;33946:4;33984:2;33973:9;33969:18;33961:26;;34033:9;34027:4;34023:20;34019:1;34008:9;34004:17;33997:47;34061:131;34187:4;34061:131;:::i;:::-;34053:139;;33780:419;;;:::o;34205:143::-;34262:5;34293:6;34287:13;34278:22;;34309:33;34336:5;34309:33;:::i;:::-;34205:143;;;;:::o;34354:351::-;34424:6;34473:2;34461:9;34452:7;34448:23;34444:32;34441:119;;;34479:79;;:::i;:::-;34441:119;34599:1;34624:64;34680:7;34671:6;34660:9;34656:22;34624:64;:::i;:::-;34614:74;;34570:128;34354:351;;;;:::o;34711:85::-;34756:7;34785:5;34774:16;;34711:85;;;:::o;34802:158::-;34860:9;34893:61;34911:42;34920:32;34946:5;34920:32;:::i;:::-;34911:42;:::i;:::-;34893:61;:::i;:::-;34880:74;;34802:158;;;:::o;34966:147::-;35061:45;35100:5;35061:45;:::i;:::-;35056:3;35049:58;34966:147;;:::o;35119:114::-;35186:6;35220:5;35214:12;35204:22;;35119:114;;;:::o;35239:184::-;35338:11;35372:6;35367:3;35360:19;35412:4;35407:3;35403:14;35388:29;;35239:184;;;;:::o;35429:132::-;35496:4;35519:3;35511:11;;35549:4;35544:3;35540:14;35532:22;;35429:132;;;:::o;35567:108::-;35644:24;35662:5;35644:24;:::i;:::-;35639:3;35632:37;35567:108;;:::o;35681:179::-;35750:10;35771:46;35813:3;35805:6;35771:46;:::i;:::-;35849:4;35844:3;35840:14;35826:28;;35681:179;;;;:::o;35866:113::-;35936:4;35968;35963:3;35959:14;35951:22;;35866:113;;;:::o;36015:732::-;36134:3;36163:54;36211:5;36163:54;:::i;:::-;36233:86;36312:6;36307:3;36233:86;:::i;:::-;36226:93;;36343:56;36393:5;36343:56;:::i;:::-;36422:7;36453:1;36438:284;36463:6;36460:1;36457:13;36438:284;;;36539:6;36533:13;36566:63;36625:3;36610:13;36566:63;:::i;:::-;36559:70;;36652:60;36705:6;36652:60;:::i;:::-;36642:70;;36498:224;36485:1;36482;36478:9;36473:14;;36438:284;;;36442:14;36738:3;36731:10;;36139:608;;;36015:732;;;;:::o;36753:831::-;37016:4;37054:3;37043:9;37039:19;37031:27;;37068:71;37136:1;37125:9;37121:17;37112:6;37068:71;:::i;:::-;37149:80;37225:2;37214:9;37210:18;37201:6;37149:80;:::i;:::-;37276:9;37270:4;37266:20;37261:2;37250:9;37246:18;37239:48;37304:108;37407:4;37398:6;37304:108;:::i;:::-;37296:116;;37422:72;37490:2;37479:9;37475:18;37466:6;37422:72;:::i;:::-;37504:73;37572:3;37561:9;37557:19;37548:6;37504:73;:::i;:::-;36753:831;;;;;;;;:::o

Swarm Source

ipfs://d7fb182dff62fc31791b55098ff0f5a0d4bef82bfb5f83fe5a3f648ae07d64fb
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.