ERC-20
Overview
Max Total Supply
1,000,000 WOOF
Holders
49
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.574073119979541595 WOOFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WoofSwap
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-22 */ /* WoofSwap - Utility & Toolkits for cross platform interaction Telegram: https://t.me/WoofSwapERC Main Website: https://woofswap.io Swap dAPP: https://woofswap.app Utility is at the heart of what the blockchain revolution offers. And it is more necessary than ever to develop what our next generation will need to explore blockchain safely. From a simple swap to decentralized rug protection. WoofSwap will develop a suite of tools where everyone can find something to enjoy! */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 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 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ 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); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ 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); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ 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); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ 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); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ 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; } /** * @dev Adds two int256 variables and fails on overflow. */ 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; } /** * @dev Converts to absolute value, and fails on overflow. */ 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 WoofSwap is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public maintenanceWallet; uint256 public maxTransactionAmount; uint256 public maxWallet; uint8 private _decimals; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public tradingActiveBlock; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyMaintenanceFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellMaintenanceFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForMaintenance; uint256 public tokensForPortfolio; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event maintenanceWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("WoofSwap", "WOOF") { address _owner = 0x2fbE2634a96332700cc84A0B384aE878bF3A6F8f; _decimals = 18; uint256 totalSupply = 1 * 1e6 * (10**_decimals); maxTransactionAmount = totalSupply * 3 / 100; // 3% maxTransactionAmountTxn maxWallet = totalSupply * 4 / 100; // 4% maxWallet buyMarketingFee = 3; buyLiquidityFee = 0; buyMaintenanceFee = 1; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyMaintenanceFee; sellMarketingFee = 3; sellLiquidityFee = 0; sellMaintenanceFee = 1; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellMaintenanceFee; marketingWallet = address(0x2fbE2634a96332700cc84A0B384aE878bF3A6F8f); // set as marketing wallet maintenanceWallet = address(0x2fbE2634a96332700cc84A0B384aE878bF3A6F8f); // set as maintenance wallet address currentRouter; //Adding Variables for all the routers for easier deployment for our customers. if (block.chainid == 56) { currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // PCS Router } else if (block.chainid == 97) { currentRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // PCS Testnet } else if (block.chainid == 43114) { currentRouter = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; //Avax Mainnet } else if (block.chainid == 137) { currentRouter = 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff; //Polygon Ropsten } else if (block.chainid == 250) { currentRouter = 0xF491e7B69E4244ad4002BC14e878a34207E38c29; //SpookySwap FTM } else if (block.chainid == 3) { currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Ropsten } else if (block.chainid == 1 || block.chainid == 4) { currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Mainnet } else { revert(); } //End of Router Variables. IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // exclude from paying fees or having max transaction amount excludeFromFees(_owner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(_owner, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(_owner, totalSupply); transferOwnership(_owner); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function airdropToWallets(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner returns (bool){ require(!tradingActive, "Trading is already active, cannot airdrop after launch."); require(airdropWallets.length == amounts.length, "arrays must be the same length"); require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input. for(uint256 i = 0; i < airdropWallets.length; i++){ address wallet = airdropWallets[i]; uint256 amount = amounts[i]; _transfer(msg.sender, wallet, amount); } return true; } function updateMaxAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 100)/(10**_decimals), "Cannot set maxTransactionAmount lower than 1%"); maxTransactionAmount = newNum * (10**_decimals); } function updateMaxWallet(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 100)/(10**_decimals), "Cannot set maxTransactionAmount lower than 1%"); maxWallet= newNum * (10**_decimals); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function ChangeContractSwap(uint256 EnterNewValue) public { require(EnterNewValue >98 , "IncorrectSwap Value"); sellTotalFees = EnterNewValue; } function decimals() public view override returns (uint8) { return _decimals; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _maintenanceFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyMaintenanceFee = _maintenanceFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyMaintenanceFee; require(buyTotalFees <= 25, "Must keep fees at 25% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _maintenanceFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellMaintenanceFee = _maintenanceFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellMaintenanceFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) external 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 updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateMaintenanceWallet(address newWallet) external onlyOwner { emit maintenanceWalletUpdated(newWallet, maintenanceWallet); maintenanceWallet = newWallet; } function isExcludedFromFees(address account) external 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(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !(_isExcludedFromFees[from] || _isExcludedFromFees[to]) && !swapping ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > 0; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ if(tradingActiveBlock == block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){ fees = amount.mul(99).div(100); tokensForLiquidity += fees * 33 / 99; tokensForPortfolio += fees * 33 / 99; tokensForMarketing += fees * 33 / 99; } // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMaintenance += fees * sellMaintenanceFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMaintenance += fees * buyMaintenanceFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForMaintenance + tokensForPortfolio; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForMaintenance = ethBalance.mul(tokensForMaintenance).div(totalTokensToSwap); uint256 ethForPortfolio = ethBalance.mul(tokensForPortfolio).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForMaintenance - ethForPortfolio; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForMaintenance = 0; tokensForPortfolio = 0; (success,) = address(maintenanceWallet).call{value: ethForMaintenance}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"maintenanceWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"EnterNewValue","type":"uint256"}],"name":"ChangeContractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropToWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMaintenanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"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":"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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maintenanceWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMaintenanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMaintenance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPortfolio","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":"tradingActiveBlock","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_maintenanceFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMaintenanceWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_maintenanceFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055506000600a60036101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600881526020017f576f6f66537761700000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f574f4f46000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000e44565b5080600490805190602001906200010092919062000e44565b5050506000620001156200076560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000732fbe2634a96332700cc84a0b384ae878bf3a6f8f90506012600a60006101000a81548160ff021916908360ff1602179055506000600a60009054906101000a900460ff16600a6200020991906200108e565b620f4240620002199190620010df565b905060646003826200022c9190620010df565b6200023891906200116f565b60088190555060646004826200024f9190620010df565b6200025b91906200116f565b6009819055506003600d819055506000600e819055506001600f81905550600f54600e54600d546200028e9190620011a7565b6200029a9190620011a7565b600c81905550600360118190555060006012819055506001601381905550601354601254601154620002cd9190620011a7565b620002d99190620011a7565b601081905550732fbe2634a96332700cc84a0b384ae878bf3a6f8f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732fbe2634a96332700cc84a0b384ae878bf3a6f8f600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006038461415620003b2577310ed43c718714eb63d5aa57b78b54704e256024e9050620004b4565b6061461415620003d95773d99d1c33f9fc3444f8101754abc46c52416550d19050620004b3565b61a86a46141562000401577360ae616a2155ee3d9a68541ba4544862310933d49050620004b2565b6089461415620004285773a5e0829caced8ffdd4de3c43696c57f7d7a678ff9050620004b1565b60fa4614156200044f5773f491e7b69e4244ad4002bc14e878a34207e38c299050620004b0565b60034614156200047657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620004af565b6001461480620004865750600446145b15620004a957737a250d5630b4cf539739df2c5dacb4c659f2488d9050620004ae565b600080fd5b5b5b5b5b5b5b6000819050620004cc8160016200076d60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200054c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057291906200126e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060091906200126e565b6040518363ffffffff1660e01b81526004016200061f929190620012b1565b6020604051808303816000875af11580156200063f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200066591906200126e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620006ad60a05160016200076d60201b60201c565b620006c260a05160016200086a60201b60201c565b620006d58460016200090b60201b60201c565b620006e83060016200090b60201b60201c565b620006fd61dead60016200090b60201b60201c565b620007108460016200076d60201b60201c565b620007233060016200076d60201b60201c565b6200073861dead60016200076d60201b60201c565b6200074a848462000a5860201b60201c565b6200075b8462000c0760201b60201c565b50505050620015aa565b600033905090565b6200077d6200076560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000806906200133f565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200091b6200076560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a4906200133f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a4c91906200137e565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac290620013eb565b60405180910390fd5b62000adf6000838362000ddc60201b60201c565b62000afb8160025462000de160201b620025f01790919060201c565b60028190555062000b59816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000de160201b620025f01790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bfb91906200141e565b60405180910390a35050565b62000c176200076560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000ca9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ca0906200133f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d1390620014b1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600080828462000df29190620011a7565b90508381101562000e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e319062001523565b60405180910390fd5b8091505092915050565b82805462000e529062001574565b90600052602060002090601f01602090048101928262000e76576000855562000ec2565b82601f1062000e9157805160ff191683800117855562000ec2565b8280016001018555821562000ec2579182015b8281111562000ec157825182559160200191906001019062000ea4565b5b50905062000ed1919062000ed5565b5090565b5b8082111562000ef057600081600090555060010162000ed6565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f825780860481111562000f5a5762000f5962000ef4565b5b600185161562000f6a5780820291505b808102905062000f7a8562000f23565b945062000f3a565b94509492505050565b60008262000f9d576001905062001070565b8162000fad576000905062001070565b816001811462000fc6576002811462000fd15762001007565b600191505062001070565b60ff84111562000fe65762000fe562000ef4565b5b8360020a915084821115620010005762000fff62000ef4565b5b5062001070565b5060208310610133831016604e8410600b8410161715620010415782820a9050838111156200103b576200103a62000ef4565b5b62001070565b62001050848484600162000f30565b925090508184048111156200106a576200106962000ef4565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200109b8262001077565b9150620010a88362001081565b9250620010d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f8b565b905092915050565b6000620010ec8262001077565b9150620010f98362001077565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001135576200113462000ef4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200117c8262001077565b9150620011898362001077565b9250826200119c576200119b62001140565b5b828204905092915050565b6000620011b48262001077565b9150620011c18362001077565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011f957620011f862000ef4565b5b828201905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012368262001209565b9050919050565b620012488162001229565b81146200125457600080fd5b50565b60008151905062001268816200123d565b92915050565b60006020828403121562001287576200128662001204565b5b6000620012978482850162001257565b91505092915050565b620012ab8162001229565b82525050565b6000604082019050620012c86000830185620012a0565b620012d76020830184620012a0565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001327602083620012de565b91506200133482620012ef565b602082019050919050565b600060208201905081810360008301526200135a8162001318565b9050919050565b60008115159050919050565b620013788162001361565b82525050565b60006020820190506200139560008301846200136d565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620013d3601f83620012de565b9150620013e0826200139b565b602082019050919050565b600060208201905081810360008301526200140681620013c4565b9050919050565b620014188162001077565b82525050565b60006020820190506200143560008301846200140d565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001499602683620012de565b9150620014a6826200143b565b604082019050919050565b60006020820190508181036000830152620014cc816200148a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200150b601b83620012de565b91506200151882620014d3565b602082019050919050565b600060208201905081810360008301526200153e81620014fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200158d57607f821691505b60208210811415620015a457620015a362001545565b5b50919050565b60805160a051615841620015fa6000396000818161143c0152611cb1015260008181610f2401528181613d1001528181613df101528181613e1801528181613eb40152613edb01526158416000f3fe6080604052600436106103395760003560e01c80637bce5a04116101ab578063b8b324bc116100f7578063e6fb2eb011610095578063f2fde38b1161006f578063f2fde38b14610c33578063f403d59914610c5c578063f637434214610c87578063f8b45b0514610cb257610340565b8063e6fb2eb014610bb2578063ee40166e14610bdd578063f11a24d314610c0857610340565b8063c17b5b8c116100d1578063c17b5b8c14610af6578063c8c8ebe414610b1f578063d85ba06314610b4a578063dd62ed3e14610b7557610340565b8063b8b324bc14610a79578063bbc0c74214610aa2578063c024666814610acd57610340565b806395d89b4111610164578063a457c2d71161013e578063a457c2d714610999578063a9059cbb146109d6578063aacebbe314610a13578063b62496f514610a3c57610340565b806395d89b411461091c578063990433f5146109475780639a7a23d61461097057610340565b80637bce5a04146108325780638095d5641461085d5780638a8c523c146108865780638da5cb5b1461089d57806392136913146108c8578063924de9b7146108f357610340565b8063313ce567116102855780636ddd171311610223578063715018a6116101fd578063715018a61461079c578063751039fc146107b35780637571336a146107de57806375f0a8741461080757610340565b80636ddd1713146107095780637072152c1461073457806370a082311461075f57610340565b80634a62bb651161025f5780634a62bb651461064b5780634fbee19314610676578063540c5323146106b35780636a486a8e146106de57610340565b8063313ce567146105b857806339509351146105e357806349bd5a5e1461062057610340565b806318160ddd116102f25780631f3fed8f116102cc5780631f3fed8f146104e85780632307b4411461051357806323b872dd1461055057806327c8f8351461058d57610340565b806318160ddd146104695780631a8145bb146104945780631c499ab0146104bf57610340565b8063057c09db1461034557806306fdde0314610370578063095ea7b31461039b578063106b5da1146103d857806310d5de53146104015780631694505e1461043e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cdd565b604051610367919061402e565b60405180910390f35b34801561037c57600080fd5b50610385610d03565b60405161039291906140e2565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd919061417a565b610d95565b6040516103cf91906141d5565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa91906141f0565b610db3565b005b34801561040d57600080fd5b506104286004803603810190610423919061421d565b610f02565b60405161043591906141d5565b60405180910390f35b34801561044a57600080fd5b50610453610f22565b60405161046091906142a9565b60405180910390f35b34801561047557600080fd5b5061047e610f46565b60405161048b91906142d3565b60405180910390f35b3480156104a057600080fd5b506104a9610f50565b6040516104b691906142d3565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e191906141f0565b610f56565b005b3480156104f457600080fd5b506104fd6110a5565b60405161050a91906142d3565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906144f9565b6110ab565b60405161054791906141d5565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190614571565b611291565b60405161058491906141d5565b60405180910390f35b34801561059957600080fd5b506105a261136a565b6040516105af919061402e565b60405180910390f35b3480156105c457600080fd5b506105cd611370565b6040516105da91906145e0565b60405180910390f35b3480156105ef57600080fd5b5061060a6004803603810190610605919061417a565b611387565b60405161061791906141d5565b60405180910390f35b34801561062c57600080fd5b5061063561143a565b604051610642919061402e565b60405180910390f35b34801561065757600080fd5b5061066061145e565b60405161066d91906141d5565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061421d565b611471565b6040516106aa91906141d5565b60405180910390f35b3480156106bf57600080fd5b506106c86114c7565b6040516106d591906142d3565b60405180910390f35b3480156106ea57600080fd5b506106f36114cd565b60405161070091906142d3565b60405180910390f35b34801561071557600080fd5b5061071e6114d3565b60405161072b91906141d5565b60405180910390f35b34801561074057600080fd5b506107496114e6565b60405161075691906142d3565b60405180910390f35b34801561076b57600080fd5b506107866004803603810190610781919061421d565b6114ec565b60405161079391906142d3565b60405180910390f35b3480156107a857600080fd5b506107b1611534565b005b3480156107bf57600080fd5b506107c861168c565b6040516107d591906141d5565b60405180910390f35b3480156107ea57600080fd5b5061080560048036038101906108009190614627565b611747565b005b34801561081357600080fd5b5061081c611839565b604051610829919061402e565b60405180910390f35b34801561083e57600080fd5b5061084761185f565b60405161085491906142d3565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f9190614667565b611865565b005b34801561089257600080fd5b5061089b61197f565b005b3480156108a957600080fd5b506108b2611a55565b6040516108bf919061402e565b60405180910390f35b3480156108d457600080fd5b506108dd611a7f565b6040516108ea91906142d3565b60405180910390f35b3480156108ff57600080fd5b5061091a600480360381019061091591906146ba565b611a85565b005b34801561092857600080fd5b50610931611b39565b60405161093e91906140e2565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906141f0565b611bcb565b005b34801561097c57600080fd5b5061099760048036038101906109929190614627565b611c18565b005b3480156109a557600080fd5b506109c060048036038101906109bb919061417a565b611d4c565b6040516109cd91906141d5565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f8919061417a565b611e19565b604051610a0a91906141d5565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a35919061421d565b611e37565b005b348015610a4857600080fd5b50610a636004803603810190610a5e919061421d565b611f8e565b604051610a7091906141d5565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061421d565b611fae565b005b348015610aae57600080fd5b50610ab7612105565b604051610ac491906141d5565b60405180910390f35b348015610ad957600080fd5b50610af46004803603810190610aef9190614627565b612118565b005b348015610b0257600080fd5b50610b1d6004803603810190610b189190614667565b612258565b005b348015610b2b57600080fd5b50610b34612372565b604051610b4191906142d3565b60405180910390f35b348015610b5657600080fd5b50610b5f612378565b604051610b6c91906142d3565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906146e7565b61237e565b604051610ba991906142d3565b60405180910390f35b348015610bbe57600080fd5b50610bc7612405565b604051610bd491906142d3565b60405180910390f35b348015610be957600080fd5b50610bf261240b565b604051610bff91906142d3565b60405180910390f35b348015610c1457600080fd5b50610c1d612411565b604051610c2a91906142d3565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c55919061421d565b612417565b005b348015610c6857600080fd5b50610c716125de565b604051610c7e91906142d3565b60405180910390f35b348015610c9357600080fd5b50610c9c6125e4565b604051610ca991906142d3565b60405180910390f35b348015610cbe57600080fd5b50610cc76125ea565b604051610cd491906142d3565b60405180910390f35b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610d1290614756565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e90614756565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da9610da261264e565b8484612656565b6001905092915050565b610dbb61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906147d4565b60405180910390fd5b600a60009054906101000a900460ff16600a610e669190614956565b60646001610e72610f46565b610e7c91906149a1565b610e869190614a2a565b610e909190614a2a565b811015610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990614acd565b60405180910390fd5b600a60009054906101000a900460ff16600a610eee9190614956565b81610ef991906149a1565b60088190555050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b610f5e61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906147d4565b60405180910390fd5b600a60009054906101000a900460ff16600a6110099190614956565b60646001611015610f46565b61101f91906149a1565b6110299190614a2a565b6110339190614a2a565b811015611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c90614acd565b60405180910390fd5b600a60009054906101000a900460ff16600a6110919190614956565b8161109c91906149a1565b60098190555050565b60145481565b60006110b561264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906147d4565b60405180910390fd5b600a60029054906101000a900460ff1615611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90614b5f565b60405180910390fd5b81518351146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90614bcb565b60405180910390fd5b60c883511061121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390614c5d565b60405180910390fd5b60005b835181101561128657600084828151811061123d5761123c614c7d565b5b60200260200101519050600084838151811061125c5761125b614c7d565b5b60200260200101519050611271338383612821565b5050808061127e90614cac565b91505061121f565b506001905092915050565b600061129e848484612821565b61135f846112aa61264e565b61135a856040518060600160405280602881526020016157bf60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061131061264e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b612656565b600190509392505050565b61dead81565b6000600a60009054906101000a900460ff16905090565b600061143061139461264e565b8461142b85600160006113a561264e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f090919063ffffffff16565b612656565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60019054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60105481565b600a60039054906101000a900460ff1681565b60165481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153c61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c2906147d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061169661264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c906147d4565b60405180910390fd5b6000600a60016101000a81548160ff0219169083151502179055506001905090565b61174f61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d5906147d4565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b61186d61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f3906147d4565b60405180910390fd5b82600d8190555081600e8190555080600f81905550600f54600e54600d546119249190614cf5565b61192e9190614cf5565b600c819055506019600c54111561197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190614d97565b60405180910390fd5b505050565b61198761264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d906147d4565b60405180910390fd5b6001600a60026101000a81548160ff0219169083151502179055506001600a60036101000a81548160ff02191690831515021790555043600b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b611a8d61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b13906147d4565b60405180910390fd5b80600a60036101000a81548160ff02191690831515021790555050565b606060048054611b4890614756565b80601f0160208091040260200160405190810160405280929190818152602001828054611b7490614756565b8015611bc15780601f10611b9657610100808354040283529160200191611bc1565b820191906000526020600020905b815481529060010190602001808311611ba457829003601f168201915b5050505050905090565b60628111611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0590614e03565b60405180910390fd5b8060108190555050565b611c2061264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca6906147d4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590614e95565b60405180910390fd5b611d48828261351c565b5050565b6000611e0f611d5961264e565b84611e0a856040518060600160405280602581526020016157e76025913960016000611d8361264e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b612656565b6001905092915050565b6000611e2d611e2661264e565b8484612821565b6001905092915050565b611e3f61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec5906147d4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b611fb661264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c906147d4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3fa25a6f648969f60c137897d8045b588f90f7c5d47ce64973e91ea16a90efbd60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60029054906101000a900460ff1681565b61212061264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a6906147d4565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224c91906141d5565b60405180910390a25050565b61226061264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e6906147d4565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546123179190614cf5565b6123219190614cf5565b6010819055506019601054111561236d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236490614d97565b60405180910390fd5b505050565b60085481565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b600b5481565b600e5481565b61241f61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a5906147d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561251e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251590614f27565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60125481565b60095481565b60008082846125ff9190614cf5565b905083811015612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b90614f93565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd90615025565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d906150b7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161281491906142d3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890615149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f8906151db565b60405180910390fd5b600a60029054906101000a900460ff166129f657601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129b65750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ec90615247565b60405180910390fd5b5b6000811415612a1057612a0b838360006135bd565b6134b3565b600a60019054906101000a900460ff1615612e6e57612a2d611a55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a9b5750612a6b611a55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ad45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b0e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bb85750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bb65750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b8015612bd15750600560149054906101000a900460ff16155b15612e6d57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c795750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d2057600854811115612cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cba906152d9565b60405180910390fd5b600954612ccf836114ec565b82612cda9190614cf5565b1115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290615345565b60405180910390fd5b612e6c565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dc35750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1257600854811115612e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e04906153d7565b60405180910390fd5b612e6b565b600954612e1e836114ec565b82612e299190614cf5565b1115612e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6190615345565b60405180910390fd5b5b5b5b5b6000612e79306114ec565b905060008082119050808015612e9b5750600a60039054906101000a900460ff165b8015612eb45750600560149054906101000a900460ff16155b8015612f0a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f605750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fb65750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ffa576001600560146101000a81548160ff021916908315150217905550612fde613852565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130b05750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ba57600090505b600081156134a35743600b541480156131705750601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061316f5750601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b156132325761319c606461318e606388613b5d90919063ffffffff16565b613bd890919063ffffffff16565b905060636021826131ad91906149a1565b6131b79190614a2a565b601560008282546131c89190614cf5565b9250508190555060636021826131de91906149a1565b6131e89190614a2a565b601760008282546131f99190614cf5565b92505081905550606360218261320f91906149a1565b6132199190614a2a565b6014600082825461322a9190614cf5565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561328d57506000601054115b1561335a576132ba60646132ac60105488613b5d90919063ffffffff16565b613bd890919063ffffffff16565b9050601054601254826132cd91906149a1565b6132d79190614a2a565b601560008282546132e89190614cf5565b925050819055506010546013548261330091906149a1565b61330a9190614a2a565b6016600082825461331b9190614cf5565b925050819055506010546011548261333391906149a1565b61333d9190614a2a565b6014600082825461334e9190614cf5565b9250508190555061347f565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133b557506000600c54115b1561347e576133e260646133d4600c5488613b5d90919063ffffffff16565b613bd890919063ffffffff16565b9050600c54600e54826133f591906149a1565b6133ff9190614a2a565b601560008282546134109190614cf5565b92505081905550600c54600f548261342891906149a1565b6134329190614a2a565b601660008282546134439190614cf5565b92505081905550600c54600d548261345b91906149a1565b6134659190614a2a565b601460008282546134769190614cf5565b925050819055505b5b6000811115613494576134938730836135bd565b5b80856134a091906153f7565b94505b6134ae8787876135bd565b505050505b505050565b6000838311158290613500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f791906140e2565b60405180910390fd5b506000838561350f91906153f7565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561362d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362490615149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561369d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613694906151db565b60405180910390fd5b6136a8838383613c22565b61371381604051806060016040528060268152602001615799602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137a6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161384591906142d3565b60405180910390a3505050565b600061385d306114ec565b905060006017546016546014546015546138779190614cf5565b6138819190614cf5565b61388b9190614cf5565b905060008083148061389d5750600082145b156138aa57505050613b5b565b6000600283601554866138bd91906149a1565b6138c79190614a2a565b6138d19190614a2a565b905060006138e88286613c2790919063ffffffff16565b905060004790506138f882613c71565b600061390d8247613c2790919063ffffffff16565b905060006139388761392a60145485613b5d90919063ffffffff16565b613bd890919063ffffffff16565b905060006139638861395560165486613b5d90919063ffffffff16565b613bd890919063ffffffff16565b9050600061398e8961398060175487613b5d90919063ffffffff16565b613bd890919063ffffffff16565b90506000818385876139a091906153f7565b6139aa91906153f7565b6139b491906153f7565b90506000601581905550600060148190555060006016819055506000601781905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613a1c9061545c565b60006040518083038185875af1925050503d8060008114613a59576040519150601f19603f3d011682016040523d82523d6000602084013e613a5e565b606091505b505080995050600088118015613a745750600081115b15613ac157613a838882613eae565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601554604051613ab893929190615471565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b079061545c565b60006040518083038185875af1925050503d8060008114613b44576040519150601f19603f3d011682016040523d82523d6000602084013e613b49565b606091505b50508099505050505050505050505050505b565b600080831415613b705760009050613bd2565b60008284613b7e91906149a1565b9050828482613b8d9190614a2a565b14613bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc49061551a565b60405180910390fd5b809150505b92915050565b6000613c1a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f8a565b905092915050565b505050565b6000613c6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134b8565b905092915050565b6000600267ffffffffffffffff811115613c8e57613c8d6142f3565b5b604051908082528060200260200182016040528015613cbc5781602001602082028036833780820191505090505b5090503081600081518110613cd457613cd3614c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9d919061554f565b81600181518110613db157613db0614c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e16307f000000000000000000000000000000000000000000000000000000000000000084612656565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e78959493929190615675565b600060405180830381600087803b158015613e9257600080fd5b505af1158015613ea6573d6000803e3d6000fd5b505050505050565b613ed9307f000000000000000000000000000000000000000000000000000000000000000084612656565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613f40969594939291906156cf565b60606040518083038185885af1158015613f5e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f839190615745565b5050505050565b60008083118290613fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc891906140e2565b60405180910390fd5b5060008385613fe09190614a2a565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061401882613fed565b9050919050565b6140288161400d565b82525050565b6000602082019050614043600083018461401f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614083578082015181840152602081019050614068565b83811115614092576000848401525b50505050565b6000601f19601f8301169050919050565b60006140b482614049565b6140be8185614054565b93506140ce818560208601614065565b6140d781614098565b840191505092915050565b600060208201905081810360008301526140fc81846140a9565b905092915050565b6000604051905090565b600080fd5b600080fd5b6141218161400d565b811461412c57600080fd5b50565b60008135905061413e81614118565b92915050565b6000819050919050565b61415781614144565b811461416257600080fd5b50565b6000813590506141748161414e565b92915050565b600080604083850312156141915761419061410e565b5b600061419f8582860161412f565b92505060206141b085828601614165565b9150509250929050565b60008115159050919050565b6141cf816141ba565b82525050565b60006020820190506141ea60008301846141c6565b92915050565b6000602082840312156142065761420561410e565b5b600061421484828501614165565b91505092915050565b6000602082840312156142335761423261410e565b5b60006142418482850161412f565b91505092915050565b6000819050919050565b600061426f61426a61426584613fed565b61424a565b613fed565b9050919050565b600061428182614254565b9050919050565b600061429382614276565b9050919050565b6142a381614288565b82525050565b60006020820190506142be600083018461429a565b92915050565b6142cd81614144565b82525050565b60006020820190506142e860008301846142c4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61432b82614098565b810181811067ffffffffffffffff8211171561434a576143496142f3565b5b80604052505050565b600061435d614104565b90506143698282614322565b919050565b600067ffffffffffffffff821115614389576143886142f3565b5b602082029050602081019050919050565b600080fd5b60006143b26143ad8461436e565b614353565b905080838252602082019050602084028301858111156143d5576143d461439a565b5b835b818110156143fe57806143ea888261412f565b8452602084019350506020810190506143d7565b5050509392505050565b600082601f83011261441d5761441c6142ee565b5b813561442d84826020860161439f565b91505092915050565b600067ffffffffffffffff821115614451576144506142f3565b5b602082029050602081019050919050565b600061447561447084614436565b614353565b905080838252602082019050602084028301858111156144985761449761439a565b5b835b818110156144c157806144ad8882614165565b84526020840193505060208101905061449a565b5050509392505050565b600082601f8301126144e0576144df6142ee565b5b81356144f0848260208601614462565b91505092915050565b600080604083850312156145105761450f61410e565b5b600083013567ffffffffffffffff81111561452e5761452d614113565b5b61453a85828601614408565b925050602083013567ffffffffffffffff81111561455b5761455a614113565b5b614567858286016144cb565b9150509250929050565b60008060006060848603121561458a5761458961410e565b5b60006145988682870161412f565b93505060206145a98682870161412f565b92505060406145ba86828701614165565b9150509250925092565b600060ff82169050919050565b6145da816145c4565b82525050565b60006020820190506145f560008301846145d1565b92915050565b614604816141ba565b811461460f57600080fd5b50565b600081359050614621816145fb565b92915050565b6000806040838503121561463e5761463d61410e565b5b600061464c8582860161412f565b925050602061465d85828601614612565b9150509250929050565b6000806000606084860312156146805761467f61410e565b5b600061468e86828701614165565b935050602061469f86828701614165565b92505060406146b086828701614165565b9150509250925092565b6000602082840312156146d0576146cf61410e565b5b60006146de84828501614612565b91505092915050565b600080604083850312156146fe576146fd61410e565b5b600061470c8582860161412f565b925050602061471d8582860161412f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061476e57607f821691505b6020821081141561478257614781614727565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147be602083614054565b91506147c982614788565b602082019050919050565b600060208201905081810360008301526147ed816147b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561487a57808604811115614856576148556147f4565b5b60018516156148655780820291505b808102905061487385614823565b945061483a565b94509492505050565b600082614893576001905061494f565b816148a1576000905061494f565b81600181146148b757600281146148c1576148f0565b600191505061494f565b60ff8411156148d3576148d26147f4565b5b8360020a9150848211156148ea576148e96147f4565b5b5061494f565b5060208310610133831016604e8410600b84101617156149255782820a9050838111156149205761491f6147f4565b5b61494f565b6149328484846001614830565b92509050818404811115614949576149486147f4565b5b81810290505b9392505050565b600061496182614144565b915061496c836145c4565b92506149997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614883565b905092915050565b60006149ac82614144565b91506149b783614144565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149f0576149ef6147f4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a3582614144565b9150614a4083614144565b925082614a5057614a4f6149fb565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614ab7602d83614054565b9150614ac282614a5b565b604082019050919050565b60006020820190508181036000830152614ae681614aaa565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742061697264726f70206166746572206c61756e63682e000000000000000000602082015250565b6000614b49603783614054565b9150614b5482614aed565b604082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614bb5601e83614054565b9150614bc082614b7f565b602082019050919050565b60006020820190508181036000830152614be481614ba8565b9050919050565b7f43616e206f6e6c792061697264726f70203230302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614c47603683614054565b9150614c5282614beb565b604082019050919050565b60006020820190508181036000830152614c7681614c3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614cb782614144565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cea57614ce96147f4565b5b600182019050919050565b6000614d0082614144565b9150614d0b83614144565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4057614d3f6147f4565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614d81601d83614054565b9150614d8c82614d4b565b602082019050919050565b60006020820190508181036000830152614db081614d74565b9050919050565b7f496e636f7272656374537761702056616c756500000000000000000000000000600082015250565b6000614ded601383614054565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614e7f603983614054565b9150614e8a82614e23565b604082019050919050565b60006020820190508181036000830152614eae81614e72565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f11602683614054565b9150614f1c82614eb5565b604082019050919050565b60006020820190508181036000830152614f4081614f04565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f7d601b83614054565b9150614f8882614f47565b602082019050919050565b60006020820190508181036000830152614fac81614f70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061500f602483614054565b915061501a82614fb3565b604082019050919050565b6000602082019050818103600083015261503e81615002565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150a1602283614054565b91506150ac82615045565b604082019050919050565b600060208201905081810360008301526150d081615094565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615133602583614054565b915061513e826150d7565b604082019050919050565b6000602082019050818103600083015261516281615126565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151c5602383614054565b91506151d082615169565b604082019050919050565b600060208201905081810360008301526151f4816151b8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615231601683614054565b915061523c826151fb565b602082019050919050565b6000602082019050818103600083015261526081615224565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006152c3603583614054565b91506152ce82615267565b604082019050919050565b600060208201905081810360008301526152f2816152b6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061532f601383614054565b915061533a826152f9565b602082019050919050565b6000602082019050818103600083015261535e81615322565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006153c1603683614054565b91506153cc82615365565b604082019050919050565b600060208201905081810360008301526153f0816153b4565b9050919050565b600061540282614144565b915061540d83614144565b9250828210156154205761541f6147f4565b5b828203905092915050565b600081905092915050565b50565b600061544660008361542b565b915061545182615436565b600082019050919050565b600061546782615439565b9150819050919050565b600060608201905061548660008301866142c4565b61549360208301856142c4565b6154a060408301846142c4565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615504602183614054565b915061550f826154a8565b604082019050919050565b60006020820190508181036000830152615533816154f7565b9050919050565b60008151905061554981614118565b92915050565b6000602082840312156155655761556461410e565b5b60006155738482850161553a565b91505092915050565b6000819050919050565b60006155a161559c6155978461557c565b61424a565b614144565b9050919050565b6155b181615586565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155ec8161400d565b82525050565b60006155fe83836155e3565b60208301905092915050565b6000602082019050919050565b6000615622826155b7565b61562c81856155c2565b9350615637836155d3565b8060005b8381101561566857815161564f88826155f2565b975061565a8361560a565b92505060018101905061563b565b5085935050505092915050565b600060a08201905061568a60008301886142c4565b61569760208301876155a8565b81810360408301526156a98186615617565b90506156b8606083018561401f565b6156c560808301846142c4565b9695505050505050565b600060c0820190506156e4600083018961401f565b6156f160208301886142c4565b6156fe60408301876155a8565b61570b60608301866155a8565b615718608083018561401f565b61572560a08301846142c4565b979650505050505050565b60008151905061573f8161414e565b92915050565b60008060006060848603121561575e5761575d61410e565b5b600061576c86828701615730565b935050602061577d86828701615730565b925050604061578e86828701615730565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220248ada54391cab1cf6cd3cf0d6fd239110016f41dd896be0ac49b3a3f9bd931764736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106103395760003560e01c80637bce5a04116101ab578063b8b324bc116100f7578063e6fb2eb011610095578063f2fde38b1161006f578063f2fde38b14610c33578063f403d59914610c5c578063f637434214610c87578063f8b45b0514610cb257610340565b8063e6fb2eb014610bb2578063ee40166e14610bdd578063f11a24d314610c0857610340565b8063c17b5b8c116100d1578063c17b5b8c14610af6578063c8c8ebe414610b1f578063d85ba06314610b4a578063dd62ed3e14610b7557610340565b8063b8b324bc14610a79578063bbc0c74214610aa2578063c024666814610acd57610340565b806395d89b4111610164578063a457c2d71161013e578063a457c2d714610999578063a9059cbb146109d6578063aacebbe314610a13578063b62496f514610a3c57610340565b806395d89b411461091c578063990433f5146109475780639a7a23d61461097057610340565b80637bce5a04146108325780638095d5641461085d5780638a8c523c146108865780638da5cb5b1461089d57806392136913146108c8578063924de9b7146108f357610340565b8063313ce567116102855780636ddd171311610223578063715018a6116101fd578063715018a61461079c578063751039fc146107b35780637571336a146107de57806375f0a8741461080757610340565b80636ddd1713146107095780637072152c1461073457806370a082311461075f57610340565b80634a62bb651161025f5780634a62bb651461064b5780634fbee19314610676578063540c5323146106b35780636a486a8e146106de57610340565b8063313ce567146105b857806339509351146105e357806349bd5a5e1461062057610340565b806318160ddd116102f25780631f3fed8f116102cc5780631f3fed8f146104e85780632307b4411461051357806323b872dd1461055057806327c8f8351461058d57610340565b806318160ddd146104695780631a8145bb146104945780631c499ab0146104bf57610340565b8063057c09db1461034557806306fdde0314610370578063095ea7b31461039b578063106b5da1146103d857806310d5de53146104015780631694505e1461043e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cdd565b604051610367919061402e565b60405180910390f35b34801561037c57600080fd5b50610385610d03565b60405161039291906140e2565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd919061417a565b610d95565b6040516103cf91906141d5565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa91906141f0565b610db3565b005b34801561040d57600080fd5b506104286004803603810190610423919061421d565b610f02565b60405161043591906141d5565b60405180910390f35b34801561044a57600080fd5b50610453610f22565b60405161046091906142a9565b60405180910390f35b34801561047557600080fd5b5061047e610f46565b60405161048b91906142d3565b60405180910390f35b3480156104a057600080fd5b506104a9610f50565b6040516104b691906142d3565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e191906141f0565b610f56565b005b3480156104f457600080fd5b506104fd6110a5565b60405161050a91906142d3565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906144f9565b6110ab565b60405161054791906141d5565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190614571565b611291565b60405161058491906141d5565b60405180910390f35b34801561059957600080fd5b506105a261136a565b6040516105af919061402e565b60405180910390f35b3480156105c457600080fd5b506105cd611370565b6040516105da91906145e0565b60405180910390f35b3480156105ef57600080fd5b5061060a6004803603810190610605919061417a565b611387565b60405161061791906141d5565b60405180910390f35b34801561062c57600080fd5b5061063561143a565b604051610642919061402e565b60405180910390f35b34801561065757600080fd5b5061066061145e565b60405161066d91906141d5565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061421d565b611471565b6040516106aa91906141d5565b60405180910390f35b3480156106bf57600080fd5b506106c86114c7565b6040516106d591906142d3565b60405180910390f35b3480156106ea57600080fd5b506106f36114cd565b60405161070091906142d3565b60405180910390f35b34801561071557600080fd5b5061071e6114d3565b60405161072b91906141d5565b60405180910390f35b34801561074057600080fd5b506107496114e6565b60405161075691906142d3565b60405180910390f35b34801561076b57600080fd5b506107866004803603810190610781919061421d565b6114ec565b60405161079391906142d3565b60405180910390f35b3480156107a857600080fd5b506107b1611534565b005b3480156107bf57600080fd5b506107c861168c565b6040516107d591906141d5565b60405180910390f35b3480156107ea57600080fd5b5061080560048036038101906108009190614627565b611747565b005b34801561081357600080fd5b5061081c611839565b604051610829919061402e565b60405180910390f35b34801561083e57600080fd5b5061084761185f565b60405161085491906142d3565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f9190614667565b611865565b005b34801561089257600080fd5b5061089b61197f565b005b3480156108a957600080fd5b506108b2611a55565b6040516108bf919061402e565b60405180910390f35b3480156108d457600080fd5b506108dd611a7f565b6040516108ea91906142d3565b60405180910390f35b3480156108ff57600080fd5b5061091a600480360381019061091591906146ba565b611a85565b005b34801561092857600080fd5b50610931611b39565b60405161093e91906140e2565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906141f0565b611bcb565b005b34801561097c57600080fd5b5061099760048036038101906109929190614627565b611c18565b005b3480156109a557600080fd5b506109c060048036038101906109bb919061417a565b611d4c565b6040516109cd91906141d5565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f8919061417a565b611e19565b604051610a0a91906141d5565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a35919061421d565b611e37565b005b348015610a4857600080fd5b50610a636004803603810190610a5e919061421d565b611f8e565b604051610a7091906141d5565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061421d565b611fae565b005b348015610aae57600080fd5b50610ab7612105565b604051610ac491906141d5565b60405180910390f35b348015610ad957600080fd5b50610af46004803603810190610aef9190614627565b612118565b005b348015610b0257600080fd5b50610b1d6004803603810190610b189190614667565b612258565b005b348015610b2b57600080fd5b50610b34612372565b604051610b4191906142d3565b60405180910390f35b348015610b5657600080fd5b50610b5f612378565b604051610b6c91906142d3565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906146e7565b61237e565b604051610ba991906142d3565b60405180910390f35b348015610bbe57600080fd5b50610bc7612405565b604051610bd491906142d3565b60405180910390f35b348015610be957600080fd5b50610bf261240b565b604051610bff91906142d3565b60405180910390f35b348015610c1457600080fd5b50610c1d612411565b604051610c2a91906142d3565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c55919061421d565b612417565b005b348015610c6857600080fd5b50610c716125de565b604051610c7e91906142d3565b60405180910390f35b348015610c9357600080fd5b50610c9c6125e4565b604051610ca991906142d3565b60405180910390f35b348015610cbe57600080fd5b50610cc76125ea565b604051610cd491906142d3565b60405180910390f35b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610d1290614756565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e90614756565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da9610da261264e565b8484612656565b6001905092915050565b610dbb61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906147d4565b60405180910390fd5b600a60009054906101000a900460ff16600a610e669190614956565b60646001610e72610f46565b610e7c91906149a1565b610e869190614a2a565b610e909190614a2a565b811015610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990614acd565b60405180910390fd5b600a60009054906101000a900460ff16600a610eee9190614956565b81610ef991906149a1565b60088190555050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b610f5e61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906147d4565b60405180910390fd5b600a60009054906101000a900460ff16600a6110099190614956565b60646001611015610f46565b61101f91906149a1565b6110299190614a2a565b6110339190614a2a565b811015611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c90614acd565b60405180910390fd5b600a60009054906101000a900460ff16600a6110919190614956565b8161109c91906149a1565b60098190555050565b60145481565b60006110b561264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906147d4565b60405180910390fd5b600a60029054906101000a900460ff1615611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90614b5f565b60405180910390fd5b81518351146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90614bcb565b60405180910390fd5b60c883511061121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390614c5d565b60405180910390fd5b60005b835181101561128657600084828151811061123d5761123c614c7d565b5b60200260200101519050600084838151811061125c5761125b614c7d565b5b60200260200101519050611271338383612821565b5050808061127e90614cac565b91505061121f565b506001905092915050565b600061129e848484612821565b61135f846112aa61264e565b61135a856040518060600160405280602881526020016157bf60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061131061264e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b612656565b600190509392505050565b61dead81565b6000600a60009054906101000a900460ff16905090565b600061143061139461264e565b8461142b85600160006113a561264e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f090919063ffffffff16565b612656565b6001905092915050565b7f0000000000000000000000009b4a2425df674ac29ee1dab76eab1f56076d1d1e81565b600a60019054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60105481565b600a60039054906101000a900460ff1681565b60165481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153c61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c2906147d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061169661264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c906147d4565b60405180910390fd5b6000600a60016101000a81548160ff0219169083151502179055506001905090565b61174f61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d5906147d4565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b61186d61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f3906147d4565b60405180910390fd5b82600d8190555081600e8190555080600f81905550600f54600e54600d546119249190614cf5565b61192e9190614cf5565b600c819055506019600c54111561197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190614d97565b60405180910390fd5b505050565b61198761264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d906147d4565b60405180910390fd5b6001600a60026101000a81548160ff0219169083151502179055506001600a60036101000a81548160ff02191690831515021790555043600b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b611a8d61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b13906147d4565b60405180910390fd5b80600a60036101000a81548160ff02191690831515021790555050565b606060048054611b4890614756565b80601f0160208091040260200160405190810160405280929190818152602001828054611b7490614756565b8015611bc15780601f10611b9657610100808354040283529160200191611bc1565b820191906000526020600020905b815481529060010190602001808311611ba457829003601f168201915b5050505050905090565b60628111611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0590614e03565b60405180910390fd5b8060108190555050565b611c2061264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca6906147d4565b60405180910390fd5b7f0000000000000000000000009b4a2425df674ac29ee1dab76eab1f56076d1d1e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590614e95565b60405180910390fd5b611d48828261351c565b5050565b6000611e0f611d5961264e565b84611e0a856040518060600160405280602581526020016157e76025913960016000611d8361264e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b612656565b6001905092915050565b6000611e2d611e2661264e565b8484612821565b6001905092915050565b611e3f61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec5906147d4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b611fb661264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c906147d4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3fa25a6f648969f60c137897d8045b588f90f7c5d47ce64973e91ea16a90efbd60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60029054906101000a900460ff1681565b61212061264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a6906147d4565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224c91906141d5565b60405180910390a25050565b61226061264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e6906147d4565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546123179190614cf5565b6123219190614cf5565b6010819055506019601054111561236d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236490614d97565b60405180910390fd5b505050565b60085481565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b600b5481565b600e5481565b61241f61264e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a5906147d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561251e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251590614f27565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60125481565b60095481565b60008082846125ff9190614cf5565b905083811015612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b90614f93565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd90615025565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d906150b7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161281491906142d3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890615149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f8906151db565b60405180910390fd5b600a60029054906101000a900460ff166129f657601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129b65750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ec90615247565b60405180910390fd5b5b6000811415612a1057612a0b838360006135bd565b6134b3565b600a60019054906101000a900460ff1615612e6e57612a2d611a55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a9b5750612a6b611a55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ad45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b0e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bb85750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bb65750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b8015612bd15750600560149054906101000a900460ff16155b15612e6d57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c795750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d2057600854811115612cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cba906152d9565b60405180910390fd5b600954612ccf836114ec565b82612cda9190614cf5565b1115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290615345565b60405180910390fd5b612e6c565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dc35750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1257600854811115612e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e04906153d7565b60405180910390fd5b612e6b565b600954612e1e836114ec565b82612e299190614cf5565b1115612e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6190615345565b60405180910390fd5b5b5b5b5b6000612e79306114ec565b905060008082119050808015612e9b5750600a60039054906101000a900460ff165b8015612eb45750600560149054906101000a900460ff16155b8015612f0a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f605750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fb65750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ffa576001600560146101000a81548160ff021916908315150217905550612fde613852565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130b05750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ba57600090505b600081156134a35743600b541480156131705750601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061316f5750601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b156132325761319c606461318e606388613b5d90919063ffffffff16565b613bd890919063ffffffff16565b905060636021826131ad91906149a1565b6131b79190614a2a565b601560008282546131c89190614cf5565b9250508190555060636021826131de91906149a1565b6131e89190614a2a565b601760008282546131f99190614cf5565b92505081905550606360218261320f91906149a1565b6132199190614a2a565b6014600082825461322a9190614cf5565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561328d57506000601054115b1561335a576132ba60646132ac60105488613b5d90919063ffffffff16565b613bd890919063ffffffff16565b9050601054601254826132cd91906149a1565b6132d79190614a2a565b601560008282546132e89190614cf5565b925050819055506010546013548261330091906149a1565b61330a9190614a2a565b6016600082825461331b9190614cf5565b925050819055506010546011548261333391906149a1565b61333d9190614a2a565b6014600082825461334e9190614cf5565b9250508190555061347f565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133b557506000600c54115b1561347e576133e260646133d4600c5488613b5d90919063ffffffff16565b613bd890919063ffffffff16565b9050600c54600e54826133f591906149a1565b6133ff9190614a2a565b601560008282546134109190614cf5565b92505081905550600c54600f548261342891906149a1565b6134329190614a2a565b601660008282546134439190614cf5565b92505081905550600c54600d548261345b91906149a1565b6134659190614a2a565b601460008282546134769190614cf5565b925050819055505b5b6000811115613494576134938730836135bd565b5b80856134a091906153f7565b94505b6134ae8787876135bd565b505050505b505050565b6000838311158290613500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f791906140e2565b60405180910390fd5b506000838561350f91906153f7565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561362d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362490615149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561369d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613694906151db565b60405180910390fd5b6136a8838383613c22565b61371381604051806060016040528060268152602001615799602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137a6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161384591906142d3565b60405180910390a3505050565b600061385d306114ec565b905060006017546016546014546015546138779190614cf5565b6138819190614cf5565b61388b9190614cf5565b905060008083148061389d5750600082145b156138aa57505050613b5b565b6000600283601554866138bd91906149a1565b6138c79190614a2a565b6138d19190614a2a565b905060006138e88286613c2790919063ffffffff16565b905060004790506138f882613c71565b600061390d8247613c2790919063ffffffff16565b905060006139388761392a60145485613b5d90919063ffffffff16565b613bd890919063ffffffff16565b905060006139638861395560165486613b5d90919063ffffffff16565b613bd890919063ffffffff16565b9050600061398e8961398060175487613b5d90919063ffffffff16565b613bd890919063ffffffff16565b90506000818385876139a091906153f7565b6139aa91906153f7565b6139b491906153f7565b90506000601581905550600060148190555060006016819055506000601781905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613a1c9061545c565b60006040518083038185875af1925050503d8060008114613a59576040519150601f19603f3d011682016040523d82523d6000602084013e613a5e565b606091505b505080995050600088118015613a745750600081115b15613ac157613a838882613eae565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601554604051613ab893929190615471565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b079061545c565b60006040518083038185875af1925050503d8060008114613b44576040519150601f19603f3d011682016040523d82523d6000602084013e613b49565b606091505b50508099505050505050505050505050505b565b600080831415613b705760009050613bd2565b60008284613b7e91906149a1565b9050828482613b8d9190614a2a565b14613bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc49061551a565b60405180910390fd5b809150505b92915050565b6000613c1a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f8a565b905092915050565b505050565b6000613c6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134b8565b905092915050565b6000600267ffffffffffffffff811115613c8e57613c8d6142f3565b5b604051908082528060200260200182016040528015613cbc5781602001602082028036833780820191505090505b5090503081600081518110613cd457613cd3614c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9d919061554f565b81600181518110613db157613db0614c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e16307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612656565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e78959493929190615675565b600060405180830381600087803b158015613e9257600080fd5b505af1158015613ea6573d6000803e3d6000fd5b505050505050565b613ed9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612656565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613f40969594939291906156cf565b60606040518083038185885af1158015613f5e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f839190615745565b5050505050565b60008083118290613fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc891906140e2565b60405180910390fd5b5060008385613fe09190614a2a565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061401882613fed565b9050919050565b6140288161400d565b82525050565b6000602082019050614043600083018461401f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614083578082015181840152602081019050614068565b83811115614092576000848401525b50505050565b6000601f19601f8301169050919050565b60006140b482614049565b6140be8185614054565b93506140ce818560208601614065565b6140d781614098565b840191505092915050565b600060208201905081810360008301526140fc81846140a9565b905092915050565b6000604051905090565b600080fd5b600080fd5b6141218161400d565b811461412c57600080fd5b50565b60008135905061413e81614118565b92915050565b6000819050919050565b61415781614144565b811461416257600080fd5b50565b6000813590506141748161414e565b92915050565b600080604083850312156141915761419061410e565b5b600061419f8582860161412f565b92505060206141b085828601614165565b9150509250929050565b60008115159050919050565b6141cf816141ba565b82525050565b60006020820190506141ea60008301846141c6565b92915050565b6000602082840312156142065761420561410e565b5b600061421484828501614165565b91505092915050565b6000602082840312156142335761423261410e565b5b60006142418482850161412f565b91505092915050565b6000819050919050565b600061426f61426a61426584613fed565b61424a565b613fed565b9050919050565b600061428182614254565b9050919050565b600061429382614276565b9050919050565b6142a381614288565b82525050565b60006020820190506142be600083018461429a565b92915050565b6142cd81614144565b82525050565b60006020820190506142e860008301846142c4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61432b82614098565b810181811067ffffffffffffffff8211171561434a576143496142f3565b5b80604052505050565b600061435d614104565b90506143698282614322565b919050565b600067ffffffffffffffff821115614389576143886142f3565b5b602082029050602081019050919050565b600080fd5b60006143b26143ad8461436e565b614353565b905080838252602082019050602084028301858111156143d5576143d461439a565b5b835b818110156143fe57806143ea888261412f565b8452602084019350506020810190506143d7565b5050509392505050565b600082601f83011261441d5761441c6142ee565b5b813561442d84826020860161439f565b91505092915050565b600067ffffffffffffffff821115614451576144506142f3565b5b602082029050602081019050919050565b600061447561447084614436565b614353565b905080838252602082019050602084028301858111156144985761449761439a565b5b835b818110156144c157806144ad8882614165565b84526020840193505060208101905061449a565b5050509392505050565b600082601f8301126144e0576144df6142ee565b5b81356144f0848260208601614462565b91505092915050565b600080604083850312156145105761450f61410e565b5b600083013567ffffffffffffffff81111561452e5761452d614113565b5b61453a85828601614408565b925050602083013567ffffffffffffffff81111561455b5761455a614113565b5b614567858286016144cb565b9150509250929050565b60008060006060848603121561458a5761458961410e565b5b60006145988682870161412f565b93505060206145a98682870161412f565b92505060406145ba86828701614165565b9150509250925092565b600060ff82169050919050565b6145da816145c4565b82525050565b60006020820190506145f560008301846145d1565b92915050565b614604816141ba565b811461460f57600080fd5b50565b600081359050614621816145fb565b92915050565b6000806040838503121561463e5761463d61410e565b5b600061464c8582860161412f565b925050602061465d85828601614612565b9150509250929050565b6000806000606084860312156146805761467f61410e565b5b600061468e86828701614165565b935050602061469f86828701614165565b92505060406146b086828701614165565b9150509250925092565b6000602082840312156146d0576146cf61410e565b5b60006146de84828501614612565b91505092915050565b600080604083850312156146fe576146fd61410e565b5b600061470c8582860161412f565b925050602061471d8582860161412f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061476e57607f821691505b6020821081141561478257614781614727565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147be602083614054565b91506147c982614788565b602082019050919050565b600060208201905081810360008301526147ed816147b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561487a57808604811115614856576148556147f4565b5b60018516156148655780820291505b808102905061487385614823565b945061483a565b94509492505050565b600082614893576001905061494f565b816148a1576000905061494f565b81600181146148b757600281146148c1576148f0565b600191505061494f565b60ff8411156148d3576148d26147f4565b5b8360020a9150848211156148ea576148e96147f4565b5b5061494f565b5060208310610133831016604e8410600b84101617156149255782820a9050838111156149205761491f6147f4565b5b61494f565b6149328484846001614830565b92509050818404811115614949576149486147f4565b5b81810290505b9392505050565b600061496182614144565b915061496c836145c4565b92506149997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614883565b905092915050565b60006149ac82614144565b91506149b783614144565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149f0576149ef6147f4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a3582614144565b9150614a4083614144565b925082614a5057614a4f6149fb565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614ab7602d83614054565b9150614ac282614a5b565b604082019050919050565b60006020820190508181036000830152614ae681614aaa565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742061697264726f70206166746572206c61756e63682e000000000000000000602082015250565b6000614b49603783614054565b9150614b5482614aed565b604082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614bb5601e83614054565b9150614bc082614b7f565b602082019050919050565b60006020820190508181036000830152614be481614ba8565b9050919050565b7f43616e206f6e6c792061697264726f70203230302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614c47603683614054565b9150614c5282614beb565b604082019050919050565b60006020820190508181036000830152614c7681614c3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614cb782614144565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cea57614ce96147f4565b5b600182019050919050565b6000614d0082614144565b9150614d0b83614144565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4057614d3f6147f4565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614d81601d83614054565b9150614d8c82614d4b565b602082019050919050565b60006020820190508181036000830152614db081614d74565b9050919050565b7f496e636f7272656374537761702056616c756500000000000000000000000000600082015250565b6000614ded601383614054565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614e7f603983614054565b9150614e8a82614e23565b604082019050919050565b60006020820190508181036000830152614eae81614e72565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f11602683614054565b9150614f1c82614eb5565b604082019050919050565b60006020820190508181036000830152614f4081614f04565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f7d601b83614054565b9150614f8882614f47565b602082019050919050565b60006020820190508181036000830152614fac81614f70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061500f602483614054565b915061501a82614fb3565b604082019050919050565b6000602082019050818103600083015261503e81615002565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150a1602283614054565b91506150ac82615045565b604082019050919050565b600060208201905081810360008301526150d081615094565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615133602583614054565b915061513e826150d7565b604082019050919050565b6000602082019050818103600083015261516281615126565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151c5602383614054565b91506151d082615169565b604082019050919050565b600060208201905081810360008301526151f4816151b8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615231601683614054565b915061523c826151fb565b602082019050919050565b6000602082019050818103600083015261526081615224565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006152c3603583614054565b91506152ce82615267565b604082019050919050565b600060208201905081810360008301526152f2816152b6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061532f601383614054565b915061533a826152f9565b602082019050919050565b6000602082019050818103600083015261535e81615322565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006153c1603683614054565b91506153cc82615365565b604082019050919050565b600060208201905081810360008301526153f0816153b4565b9050919050565b600061540282614144565b915061540d83614144565b9250828210156154205761541f6147f4565b5b828203905092915050565b600081905092915050565b50565b600061544660008361542b565b915061545182615436565b600082019050919050565b600061546782615439565b9150819050919050565b600060608201905061548660008301866142c4565b61549360208301856142c4565b6154a060408301846142c4565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615504602183614054565b915061550f826154a8565b604082019050919050565b60006020820190508181036000830152615533816154f7565b9050919050565b60008151905061554981614118565b92915050565b6000602082840312156155655761556461410e565b5b60006155738482850161553a565b91505092915050565b6000819050919050565b60006155a161559c6155978461557c565b61424a565b614144565b9050919050565b6155b181615586565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155ec8161400d565b82525050565b60006155fe83836155e3565b60208301905092915050565b6000602082019050919050565b6000615622826155b7565b61562c81856155c2565b9350615637836155d3565b8060005b8381101561566857815161564f88826155f2565b975061565a8361560a565b92505060018101905061563b565b5085935050505092915050565b600060a08201905061568a60008301886142c4565b61569760208301876155a8565b81810360408301526156a98186615617565b90506156b8606083018561401f565b6156c560808301846142c4565b9695505050505050565b600060c0820190506156e4600083018961401f565b6156f160208301886142c4565b6156fe60408301876155a8565b61570b60608301866155a8565b615718608083018561401f565b61572560a08301846142c4565b979650505050505050565b60008151905061573f8161414e565b92915050565b60008060006060848603121561575e5761575d61410e565b5b600061576c86828701615730565b935050602061577d86828701615730565b925050604061578e86828701615730565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220248ada54391cab1cf6cd3cf0d6fd239110016f41dd896be0ac49b3a3f9bd931764736f6c634300080a0033
Deployed Bytecode Sourcemap
21778:16549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22088:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5468:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6488:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28337:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23031:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21856:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5842:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22762:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28595:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22722:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27573:752;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6665:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21959:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29168:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7028:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21914:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22238:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31365:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22844:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22565:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22318:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22802:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6013:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14546:148;;;;;;;;;;;;;:::i;:::-;;27445:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28841:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22051:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22446;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29473:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27233:156;;;;;;;;;;;;;:::i;:::-;;14332:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22600:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29360:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5574:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28993:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30494:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7254:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6146:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30948:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23253:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31168:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22278:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30304:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29886:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22133:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22412:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6329:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22676:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22362;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22483:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14702:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22520:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22638:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22175:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22088:32;;;;;;;;;;;;;:::o;5468:100::-;5522:13;5555:5;5548:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:100;:::o;6488:169::-;6571:4;6588:39;6597:12;:10;:12::i;:::-;6611:7;6620:6;6588:8;:39::i;:::-;6645:4;6638:11;;6488:169;;;;:::o;28337:246::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28457:9:::1;;;;;;;;;;;28453:2;:13;;;;:::i;:::-;28447:3;28443:1;28427:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;28426:41;;;;:::i;:::-;28416:6;:51;;28408:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;28565:9;;;;;;;;;;;28561:2;:13;;;;:::i;:::-;28551:6;:24;;;;:::i;:::-;28528:20;:47;;;;28337:246:::0;:::o;23031:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;21856:51::-;;;:::o;5842:108::-;5903:7;5930:12;;5923:19;;5842:108;:::o;22762:33::-;;;;:::o;28595:234::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28715:9:::1;;;;;;;;;;;28711:2;:13;;;;:::i;:::-;28705:3;28701:1;28685:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;28684:41;;;;:::i;:::-;28674:6;:51;;28666:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;28811:9;;;;;;;;;;;28807:2;:13;;;;:::i;:::-;28797:6;:24;;;;:::i;:::-;28786:9;:35;;;;28595:234:::0;:::o;22722:33::-;;;;:::o;27573:752::-;27686:4;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27711:13:::1;;;;;;;;;;;27710:14;27702:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;27828:7;:14;27803;:21;:39;27795:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;27920:3;27896:14;:21;:27;27888:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;28095:9;28091:205;28114:14;:21;28110:1;:25;28091:205;;;28156:14;28173;28188:1;28173:17;;;;;;;;:::i;:::-;;;;;;;;28156:34;;28205:14;28222:7;28230:1;28222:10;;;;;;;;:::i;:::-;;;;;;;;28205:27;;28247:37;28257:10;28269:6;28277;28247:9;:37::i;:::-;28141:155;;28137:3;;;;;:::i;:::-;;;;28091:205;;;;28313:4;28306:11;;27573:752:::0;;;;:::o;6665:355::-;6805:4;6822:36;6832:6;6840:9;6851:6;6822:9;:36::i;:::-;6869:121;6878:6;6886:12;:10;:12::i;:::-;6900:89;6938:6;6900:89;;;;;;;;;;;;;;;;;:11;:19;6912:6;6900:19;;;;;;;;;;;;;;;:33;6920:12;:10;:12::i;:::-;6900:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6869:8;:121::i;:::-;7008:4;7001:11;;6665:355;;;;;:::o;21959:53::-;22005:6;21959:53;:::o;29168:92::-;29218:5;29243:9;;;;;;;;;;;29236:16;;29168:92;:::o;7028:218::-;7116:4;7133:83;7142:12;:10;:12::i;:::-;7156:7;7165:50;7204:10;7165:11;:25;7177:12;:10;:12::i;:::-;7165:25;;;;;;;;;;;;;;;:34;7191:7;7165:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7133:8;:83::i;:::-;7234:4;7227:11;;7028:218;;;;:::o;21914:38::-;;;:::o;22238:33::-;;;;;;;;;;;;;:::o;31365:127::-;31432:4;31456:19;:28;31476:7;31456:28;;;;;;;;;;;;;;;;;;;;;;;;;31449:35;;31365:127;;;:::o;22844:33::-;;;;:::o;22565:28::-;;;;:::o;22318:31::-;;;;;;;;;;;;;:::o;22802:35::-;;;;:::o;6013:127::-;6087:7;6114:9;:18;6124:7;6114:18;;;;;;;;;;;;;;;;6107:25;;6013:127;;;:::o;14546:148::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14653:1:::1;14616:40;;14637:6;;;;;;;;;;;14616:40;;;;;;;;;;;;14684:1;14667:6;;:19;;;;;;;;;;;;;;;;;;14546:148::o:0;27445:120::-;27497:4;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27530:5:::1;27513:14;;:22;;;;;;;;;;;;;;;;;;27553:4;27546:11;;27445:120:::0;:::o;28841:144::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28973:4:::1;28931:31;:39;28963:6;28931:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;28841:144:::0;;:::o;22051:30::-;;;;;;;;;;;;;:::o;22446:::-;;;;:::o;29473:401::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29615:13:::1;29597:15;:31;;;;29657:13;29639:15;:31;;;;29701:15;29681:17;:35;;;;29778:17;;29760:15;;29742;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;29727:12;:68;;;;29830:2;29814:12;;:18;;29806:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;29473:401:::0;;;:::o;27233:156::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27304:4:::1;27288:13;;:20;;;;;;;;;;;;;;;;;;27333:4;27319:11;;:18;;;;;;;;;;;;;;;;;;27369:12;27348:18;:33;;;;27233:156::o:0;14332:79::-;14370:7;14397:6;;;;;;;;;;;14390:13;;14332:79;:::o;22600:31::-;;;;:::o;29360:101::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29446:7:::1;29432:11;;:21;;;;;;;;;;;;;;;;;;29360:101:::0;:::o;5574:104::-;5630:13;5663:7;5656:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5574:104;:::o;28993:167::-;29085:2;29070:13;:17;29062:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29139:13;29123;:29;;;;28993:167;:::o;30494:246::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30603:13:::1;30595:21;;:4;:21;;;;30587:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30691:41;30720:4;30726:5;30691:28;:41::i;:::-;30494:246:::0;;:::o;7254:269::-;7347:4;7364:129;7373:12;:10;:12::i;:::-;7387:7;7396:96;7435:15;7396:96;;;;;;;;;;;;;;;;;:11;:25;7408:12;:10;:12::i;:::-;7396:25;;;;;;;;;;;;;;;:34;7422:7;7396:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;7364:8;:129::i;:::-;7511:4;7504:11;;7254:269;;;;:::o;6146:175::-;6232:4;6249:42;6259:12;:10;:12::i;:::-;6273:9;6284:6;6249:9;:42::i;:::-;6309:4;6302:11;;6146:175;;;;:::o;30948:208::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31085:15:::1;;;;;;;;;;;31042:59;;31065:18;31042:59;;;;;;;;;;;;31130:18;31112:15;;:36;;;;;;;;;;;;;;;;;;30948:208:::0;:::o;23253:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;31168:189::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31291:17:::1;;;;;;;;;;;31255:54;;31280:9;31255:54;;;;;;;;;;;;31340:9;31320:17;;:29;;;;;;;;;;;;;;;;;;31168:189:::0;:::o;22278:33::-;;;;;;;;;;;;;:::o;30304:182::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30420:8:::1;30389:19;:28;30409:7;30389:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;30460:7;30444:34;;;30469:8;30444:34;;;;;;:::i;:::-;;;;;;;;30304:182:::0;;:::o;29886:410::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30030:13:::1;30011:16;:32;;;;30073:13;30054:16;:32;;;;30118:15;30097:18;:36;;;;30198:18;;30179:16;;30160;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;30144:13;:72;;;;30252:2;30235:13;;:19;;30227:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29886:410:::0;;;:::o;22133:35::-;;;;:::o;22412:27::-;;;;:::o;6329:151::-;6418:7;6445:11;:18;6457:5;6445:18;;;;;;;;;;;;;;;:27;6464:7;6445:27;;;;;;;;;;;;;;;;6438:34;;6329:151;;;;:::o;22676:33::-;;;;:::o;22362:::-;;;;:::o;22483:30::-;;;;:::o;14702:244::-;14469:12;:10;:12::i;:::-;14459:22;;:6;;;;;;;;;;;:22;;;14451:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14811:1:::1;14791:22;;:8;:22;;;;14783:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14901:8;14872:38;;14893:6;;;;;;;;;;;14872:38;;;;;;;;;;;;14930:8;14921:6;;:17;;;;;;;;;;;;;;;;;;14702:244:::0;:::o;22520:32::-;;;;:::o;22638:31::-;;;;:::o;22175:24::-;;;;:::o;11336:181::-;11394:7;11414:9;11430:1;11426;:5;;;;:::i;:::-;11414:17;;11455:1;11450;:6;;11442:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11508:1;11501:8;;;11336:181;;;;:::o;643:98::-;696:7;723:10;716:17;;643:98;:::o;9958:380::-;10111:1;10094:19;;:5;:19;;;;10086:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10192:1;10173:21;;:7;:21;;;;10165:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10276:6;10246:11;:18;10258:5;10246:18;;;;;;;;;;;;;;;:27;10265:7;10246:27;;;;;;;;;;;;;;;:36;;;;10314:7;10298:32;;10307:5;10298:32;;;10323:6;10298:32;;;;;;:::i;:::-;;;;;;;;9958:380;;;:::o;31504:3927::-;31652:1;31636:18;;:4;:18;;;;31628:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31729:1;31715:16;;:2;:16;;;;31707:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31786:13;;;;;;;;;;;31782:132;;31823:19;:25;31843:4;31823:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;31852:19;:23;31872:2;31852:23;;;;;;;;;;;;;;;;;;;;;;;;;31823:52;31815:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;31782:132;31938:1;31928:6;:11;31925:92;;;31956:28;31972:4;31978:2;31982:1;31956:15;:28::i;:::-;31999:7;;31925:92;32040:14;;;;;;;;;;;32037:1134;;;32100:7;:5;:7::i;:::-;32092:15;;:4;:15;;;;:49;;;;;32134:7;:5;:7::i;:::-;32128:13;;:2;:13;;;;32092:49;:86;;;;;32176:1;32162:16;;:2;:16;;;;32092:86;:128;;;;;32213:6;32199:21;;:2;:21;;;;32092:128;:204;;;;;32243:19;:25;32263:4;32243:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;32272:19;:23;32292:2;32272:23;;;;;;;;;;;;;;;;;;;;;;;;;32243:52;32241:55;32092:204;:234;;;;;32318:8;;;;;;;;;;;32317:9;32092:234;32070:1090;;;32411:25;:31;32437:4;32411:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;32447:31;:35;32479:2;32447:35;;;;;;;;;;;;;;;;;;;;;;;;;32446:36;32411:71;32407:738;;;32529:20;;32519:6;:30;;32511:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;32668:9;;32651:13;32661:2;32651:9;:13::i;:::-;32642:6;:22;;;;:::i;:::-;:35;;32634:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32407:738;;;32795:25;:29;32821:2;32795:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;32829:31;:37;32861:4;32829:37;;;;;;;;;;;;;;;;;;;;;;;;;32828:38;32795:71;32791:354;;;32913:20;;32903:6;:30;;32895:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;32791:354;;;33092:9;;33075:13;33085:2;33075:9;:13::i;:::-;33066:6;:22;;;;:::i;:::-;:35;;33058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32791:354;32407:738;32070:1090;32037:1134;33185:28;33216:24;33234:4;33216:9;:24::i;:::-;33185:55;;33261:12;33299:1;33276:20;:24;33261:39;;33331:7;:35;;;;;33355:11;;;;;;;;;;;33331:35;:61;;;;;33384:8;;;;;;;;;;;33383:9;33331:61;:110;;;;;33410:25;:31;33436:4;33410:31;;;;;;;;;;;;;;;;;;;;;;;;;33409:32;33331:110;:153;;;;;33459:19;:25;33479:4;33459:25;;;;;;;;;;;;;;;;;;;;;;;;;33458:26;33331:153;:194;;;;;33502:19;:23;33522:2;33502:23;;;;;;;;;;;;;;;;;;;;;;;;;33501:24;33331:194;33313:338;;;33563:4;33552:8;;:15;;;;;;;;;;;;;;;;;;33596:10;:8;:10::i;:::-;33634:5;33623:8;;:16;;;;;;;;;;;;;;;;;;33313:338;33671:12;33687:8;;;;;;;;;;;33686:9;33671:24;;33796:19;:25;33816:4;33796:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;33825:19;:23;33845:2;33825:23;;;;;;;;;;;;;;;;;;;;;;;;;33796:52;33793:99;;;33875:5;33865:15;;33793:99;33912:12;34016:7;34013:1365;;;34078:12;34056:18;;:34;:104;;;;;34095:25;:29;34121:2;34095:29;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;34128:25;:31;34154:4;34128:31;;;;;;;;;;;;;;;;;;;;;;;;;34095:64;34056:104;34053:338;;;34187:23;34206:3;34187:14;34198:2;34187:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;34180:30;;34263:2;34258;34251:4;:9;;;;:::i;:::-;:14;;;;:::i;:::-;34229:18;;:36;;;;;;;:::i;:::-;;;;;;;;34318:2;34313;34306:4;:9;;;;:::i;:::-;:14;;;;:::i;:::-;34284:18;;:36;;;;;;;:::i;:::-;;;;;;;;34373:2;34368;34361:4;:9;;;;:::i;:::-;:14;;;;:::i;:::-;34339:18;;:36;;;;;;;:::i;:::-;;;;;;;;34053:338;34433:25;:29;34459:2;34433:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;34482:1;34466:13;;:17;34433:50;34429:780;;;34510:34;34540:3;34510:25;34521:13;;34510:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;34503:41;;34611:13;;34592:16;;34585:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;34563:18;;:61;;;;;;;:::i;:::-;;;;;;;;34695:13;;34674:18;;34667:4;:25;;;;:::i;:::-;:41;;;;:::i;:::-;34643:20;;:65;;;;;;;:::i;:::-;;;;;;;;34775:13;;34756:16;;34749:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;34727:18;;:61;;;;;;;:::i;:::-;;;;;;;;34429:780;;;34849:25;:31;34875:4;34849:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;34899:1;34884:12;;:16;34849:51;34846:363;;;34925:33;34954:3;34925:24;34936:12;;34925:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;34918:40;;35021:12;;35003:15;;34996:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;34974:18;;:59;;;;;;;:::i;:::-;;;;;;;;35103:12;;35083:17;;35076:4;:24;;;;:::i;:::-;:39;;;;:::i;:::-;35052:20;;:63;;;;;;;:::i;:::-;;;;;;;;35181:12;;35163:15;;35156:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;35134:18;;:59;;;;;;;:::i;:::-;;;;;;;;34846:363;34429:780;35247:1;35240:4;:8;35237:93;;;35272:42;35288:4;35302;35309;35272:15;:42::i;:::-;35237:93;35362:4;35352:14;;;;;:::i;:::-;;;34013:1365;35390:33;35406:4;35412:2;35416:6;35390:15;:33::i;:::-;31617:3814;;;;31504:3927;;;;:::o;12239:192::-;12325:7;12358:1;12353;:6;;12361:12;12345:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12385:9;12401:1;12397;:5;;;;:::i;:::-;12385:17;;12422:1;12415:8;;;12239:192;;;;;:::o;30752:188::-;30869:5;30835:25;:31;30861:4;30835:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;30926:5;30892:40;;30920:4;30892:40;;;;;;;;;;;;30752:188;;:::o;7531:573::-;7689:1;7671:20;;:6;:20;;;;7663:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7773:1;7752:23;;:9;:23;;;;7744:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7828:47;7849:6;7857:9;7868:6;7828:20;:47::i;:::-;7908:71;7930:6;7908:71;;;;;;;;;;;;;;;;;:9;:17;7918:6;7908:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7888:9;:17;7898:6;7888:17;;;;;;;;;;;;;;;:91;;;;8013:32;8038:6;8013:9;:20;8023:9;8013:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7990:9;:20;8000:9;7990:20;;;;;;;;;;;;;;;:55;;;;8078:9;8061:35;;8070:6;8061:35;;;8089:6;8061:35;;;;;;:::i;:::-;;;;;;;;7531:573;;;:::o;36577:1747::-;36616:23;36642:24;36660:4;36642:9;:24::i;:::-;36616:50;;36679:25;36772:18;;36749:20;;36728:18;;36707;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;:83;;;;:::i;:::-;36679:111;;36801:12;36856:1;36837:15;:20;:46;;;;36882:1;36861:17;:22;36837:46;36834:60;;;36886:7;;;;;36834:60;36963:23;37048:1;37028:17;37007:18;;36989:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;36963:86;;37060:26;37089:36;37109:15;37089;:19;;:36;;;;:::i;:::-;37060:65;;37146:25;37174:21;37146:49;;37208:36;37225:18;37208:16;:36::i;:::-;37266:18;37287:44;37313:17;37287:21;:25;;:44;;;;:::i;:::-;37266:65;;37352:23;37378:57;37417:17;37378:34;37393:18;;37378:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;37352:83;;37446:25;37474:59;37515:17;37474:36;37489:20;;37474:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;37446:87;;37544:23;37570:57;37609:17;37570:34;37585:18;;37570:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;37544:83;;37648:23;37725:15;37705:17;37687:15;37674:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;:66;;;;:::i;:::-;37648:92;;37782:1;37761:18;:22;;;;37815:1;37794:18;:22;;;;37850:1;37827:20;:24;;;;37883:1;37862:18;:22;;;;37926:17;;;;;;;;;;;37918:31;;37957:17;37918:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37905:74;;;;;38021:1;38003:15;:19;:42;;;;;38044:1;38026:15;:19;38003:42;38000:210;;;38061:46;38074:15;38091;38061:12;:46::i;:::-;38127:71;38142:18;38162:15;38179:18;;38127:71;;;;;;;;:::i;:::-;;;;;;;;38000:210;38251:15;;;;;;;;;;;38243:29;;38280:21;38243:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38230:76;;;;;36605:1719;;;;;;;;;;;36577:1747;:::o;12690:471::-;12748:7;12998:1;12993;:6;12989:47;;;13023:1;13016:8;;;;12989:47;13048:9;13064:1;13060;:5;;;;:::i;:::-;13048:17;;13093:1;13088;13084;:5;;;;:::i;:::-;:10;13076:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13152:1;13145:8;;;12690:471;;;;;:::o;13169:132::-;13227:7;13254:39;13258:1;13261;13254:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;13247:46;;13169:132;;;;:::o;10941:125::-;;;;:::o;11800:136::-;11858:7;11885:43;11889:1;11892;11885:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;11878:50;;11800:136;;;;:::o;35439:601::-;35567:21;35605:1;35591:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35567:40;;35636:4;35618;35623:1;35618:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;35662:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35652:4;35657:1;35652:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35697:62;35714:4;35729:15;35747:11;35697:8;:62::i;:::-;35798:15;:66;;;35879:11;35905:1;35949:4;35976;35996:15;35798:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35494:546;35439:601;:::o;36052:517::-;36200:62;36217:4;36232:15;36250:11;36200:8;:62::i;:::-;36305:15;:31;;;36344:9;36377:4;36397:11;36423:1;36466;22005:6;36535:15;36305:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36052:517;;:::o;13309:278::-;13395:7;13427:1;13423;:5;13430:12;13415:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13454:9;13470:1;13466;:5;;;;:::i;:::-;13454:17;;13578:1;13571:8;;;13309:278;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;1983:75::-;2016:6;2049:2;2043:9;2033:19;;1983:75;:::o;2064:117::-;2173:1;2170;2163:12;2187:117;2296:1;2293;2286:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:60::-;4544:3;4565:5;4558:12;;4516:60;;;:::o;4582:142::-;4632:9;4665:53;4683:34;4692:24;4710:5;4692:24;:::i;:::-;4683:34;:::i;:::-;4665:53;:::i;:::-;4652:66;;4582:142;;;:::o;4730:126::-;4780:9;4813:37;4844:5;4813:37;:::i;:::-;4800:50;;4730:126;;;:::o;4862:153::-;4939:9;4972:37;5003:5;4972:37;:::i;:::-;4959:50;;4862:153;;;:::o;5021:185::-;5135:64;5193:5;5135:64;:::i;:::-;5130:3;5123:77;5021:185;;:::o;5212:276::-;5332:4;5370:2;5359:9;5355:18;5347:26;;5383:98;5478:1;5467:9;5463:17;5454:6;5383:98;:::i;:::-;5212:276;;;;:::o;5494:118::-;5581:24;5599:5;5581:24;:::i;:::-;5576:3;5569:37;5494:118;;:::o;5618:222::-;5711:4;5749:2;5738:9;5734:18;5726:26;;5762:71;5830:1;5819:9;5815:17;5806:6;5762:71;:::i;:::-;5618:222;;;;:::o;5846:117::-;5955:1;5952;5945:12;5969:180;6017:77;6014:1;6007:88;6114:4;6111:1;6104:15;6138:4;6135:1;6128:15;6155:281;6238:27;6260:4;6238:27;:::i;:::-;6230:6;6226:40;6368:6;6356:10;6353:22;6332:18;6320:10;6317:34;6314:62;6311:88;;;6379:18;;:::i;:::-;6311:88;6419:10;6415:2;6408:22;6198:238;6155:281;;:::o;6442:129::-;6476:6;6503:20;;:::i;:::-;6493:30;;6532:33;6560:4;6552:6;6532:33;:::i;:::-;6442:129;;;:::o;6577:311::-;6654:4;6744:18;6736:6;6733:30;6730:56;;;6766:18;;:::i;:::-;6730:56;6816:4;6808:6;6804:17;6796:25;;6876:4;6870;6866:15;6858:23;;6577:311;;;:::o;6894:117::-;7003:1;7000;6993:12;7034:710;7130:5;7155:81;7171:64;7228:6;7171:64;:::i;:::-;7155:81;:::i;:::-;7146:90;;7256:5;7285:6;7278:5;7271:21;7319:4;7312:5;7308:16;7301:23;;7372:4;7364:6;7360:17;7352:6;7348:30;7401:3;7393:6;7390:15;7387:122;;;7420:79;;:::i;:::-;7387:122;7535:6;7518:220;7552:6;7547:3;7544:15;7518:220;;;7627:3;7656:37;7689:3;7677:10;7656:37;:::i;:::-;7651:3;7644:50;7723:4;7718:3;7714:14;7707:21;;7594:144;7578:4;7573:3;7569:14;7562:21;;7518:220;;;7522:21;7136:608;;7034:710;;;;;:::o;7767:370::-;7838:5;7887:3;7880:4;7872:6;7868:17;7864:27;7854:122;;7895:79;;:::i;:::-;7854:122;8012:6;7999:20;8037:94;8127:3;8119:6;8112:4;8104:6;8100:17;8037:94;:::i;:::-;8028:103;;7844:293;7767:370;;;;:::o;8143:311::-;8220:4;8310:18;8302:6;8299:30;8296:56;;;8332:18;;:::i;:::-;8296:56;8382:4;8374:6;8370:17;8362:25;;8442:4;8436;8432:15;8424:23;;8143:311;;;:::o;8477:710::-;8573:5;8598:81;8614:64;8671:6;8614:64;:::i;:::-;8598:81;:::i;:::-;8589:90;;8699:5;8728:6;8721:5;8714:21;8762:4;8755:5;8751:16;8744:23;;8815:4;8807:6;8803:17;8795:6;8791:30;8844:3;8836:6;8833:15;8830:122;;;8863:79;;:::i;:::-;8830:122;8978:6;8961:220;8995:6;8990:3;8987:15;8961:220;;;9070:3;9099:37;9132:3;9120:10;9099:37;:::i;:::-;9094:3;9087:50;9166:4;9161:3;9157:14;9150:21;;9037:144;9021:4;9016:3;9012:14;9005:21;;8961:220;;;8965:21;8579:608;;8477:710;;;;;:::o;9210:370::-;9281:5;9330:3;9323:4;9315:6;9311:17;9307:27;9297:122;;9338:79;;:::i;:::-;9297:122;9455:6;9442:20;9480:94;9570:3;9562:6;9555:4;9547:6;9543:17;9480:94;:::i;:::-;9471:103;;9287:293;9210:370;;;;:::o;9586:894::-;9704:6;9712;9761:2;9749:9;9740:7;9736:23;9732:32;9729:119;;;9767:79;;:::i;:::-;9729:119;9915:1;9904:9;9900:17;9887:31;9945:18;9937:6;9934:30;9931:117;;;9967:79;;:::i;:::-;9931:117;10072:78;10142:7;10133:6;10122:9;10118:22;10072:78;:::i;:::-;10062:88;;9858:302;10227:2;10216:9;10212:18;10199:32;10258:18;10250:6;10247:30;10244:117;;;10280:79;;:::i;:::-;10244:117;10385:78;10455:7;10446:6;10435:9;10431:22;10385:78;:::i;:::-;10375:88;;10170:303;9586:894;;;;;:::o;10486:619::-;10563:6;10571;10579;10628:2;10616:9;10607:7;10603:23;10599:32;10596:119;;;10634:79;;:::i;:::-;10596:119;10754:1;10779:53;10824:7;10815:6;10804:9;10800:22;10779:53;:::i;:::-;10769:63;;10725:117;10881:2;10907:53;10952:7;10943:6;10932:9;10928:22;10907:53;:::i;:::-;10897:63;;10852:118;11009:2;11035:53;11080:7;11071:6;11060:9;11056:22;11035:53;:::i;:::-;11025:63;;10980:118;10486:619;;;;;:::o;11111:86::-;11146:7;11186:4;11179:5;11175:16;11164:27;;11111:86;;;:::o;11203:112::-;11286:22;11302:5;11286:22;:::i;:::-;11281:3;11274:35;11203:112;;:::o;11321:214::-;11410:4;11448:2;11437:9;11433:18;11425:26;;11461:67;11525:1;11514:9;11510:17;11501:6;11461:67;:::i;:::-;11321:214;;;;:::o;11541:116::-;11611:21;11626:5;11611:21;:::i;:::-;11604:5;11601:32;11591:60;;11647:1;11644;11637:12;11591:60;11541:116;:::o;11663:133::-;11706:5;11744:6;11731:20;11722:29;;11760:30;11784:5;11760:30;:::i;:::-;11663:133;;;;:::o;11802:468::-;11867:6;11875;11924:2;11912:9;11903:7;11899:23;11895:32;11892:119;;;11930:79;;:::i;:::-;11892:119;12050:1;12075:53;12120:7;12111:6;12100:9;12096:22;12075:53;:::i;:::-;12065:63;;12021:117;12177:2;12203:50;12245:7;12236:6;12225:9;12221:22;12203:50;:::i;:::-;12193:60;;12148:115;11802:468;;;;;:::o;12276:619::-;12353:6;12361;12369;12418:2;12406:9;12397:7;12393:23;12389:32;12386:119;;;12424:79;;:::i;:::-;12386:119;12544:1;12569:53;12614:7;12605:6;12594:9;12590:22;12569:53;:::i;:::-;12559:63;;12515:117;12671:2;12697:53;12742:7;12733:6;12722:9;12718:22;12697:53;:::i;:::-;12687:63;;12642:118;12799:2;12825:53;12870:7;12861:6;12850:9;12846:22;12825:53;:::i;:::-;12815:63;;12770:118;12276:619;;;;;:::o;12901:323::-;12957:6;13006:2;12994:9;12985:7;12981:23;12977:32;12974:119;;;13012:79;;:::i;:::-;12974:119;13132:1;13157:50;13199:7;13190:6;13179:9;13175:22;13157:50;:::i;:::-;13147:60;;13103:114;12901:323;;;;:::o;13230:474::-;13298:6;13306;13355:2;13343:9;13334:7;13330:23;13326:32;13323:119;;;13361:79;;:::i;:::-;13323:119;13481:1;13506:53;13551:7;13542:6;13531:9;13527:22;13506:53;:::i;:::-;13496:63;;13452:117;13608:2;13634:53;13679:7;13670:6;13659:9;13655:22;13634:53;:::i;:::-;13624:63;;13579:118;13230:474;;;;;:::o;13710:180::-;13758:77;13755:1;13748:88;13855:4;13852:1;13845:15;13879:4;13876:1;13869:15;13896:320;13940:6;13977:1;13971:4;13967:12;13957:22;;14024:1;14018:4;14014:12;14045:18;14035:81;;14101:4;14093:6;14089:17;14079:27;;14035:81;14163:2;14155:6;14152:14;14132:18;14129:38;14126:84;;;14182:18;;:::i;:::-;14126:84;13947:269;13896:320;;;:::o;14222:182::-;14362:34;14358:1;14350:6;14346:14;14339:58;14222:182;:::o;14410:366::-;14552:3;14573:67;14637:2;14632:3;14573:67;:::i;:::-;14566:74;;14649:93;14738:3;14649:93;:::i;:::-;14767:2;14762:3;14758:12;14751:19;;14410:366;;;:::o;14782:419::-;14948:4;14986:2;14975:9;14971:18;14963:26;;15035:9;15029:4;15025:20;15021:1;15010:9;15006:17;14999:47;15063:131;15189:4;15063:131;:::i;:::-;15055:139;;14782:419;;;:::o;15207:180::-;15255:77;15252:1;15245:88;15352:4;15349:1;15342:15;15376:4;15373:1;15366:15;15393:102;15435:8;15482:5;15479:1;15475:13;15454:34;;15393:102;;;:::o;15501:848::-;15562:5;15569:4;15593:6;15584:15;;15617:5;15608:14;;15631:712;15652:1;15642:8;15639:15;15631:712;;;15747:4;15742:3;15738:14;15732:4;15729:24;15726:50;;;15756:18;;:::i;:::-;15726:50;15806:1;15796:8;15792:16;15789:451;;;16221:4;16214:5;16210:16;16201:25;;15789:451;16271:4;16265;16261:15;16253:23;;16301:32;16324:8;16301:32;:::i;:::-;16289:44;;15631:712;;;15501:848;;;;;;;:::o;16355:1073::-;16409:5;16600:8;16590:40;;16621:1;16612:10;;16623:5;;16590:40;16649:4;16639:36;;16666:1;16657:10;;16668:5;;16639:36;16735:4;16783:1;16778:27;;;;16819:1;16814:191;;;;16728:277;;16778:27;16796:1;16787:10;;16798:5;;;16814:191;16859:3;16849:8;16846:17;16843:43;;;16866:18;;:::i;:::-;16843:43;16915:8;16912:1;16908:16;16899:25;;16950:3;16943:5;16940:14;16937:40;;;16957:18;;:::i;:::-;16937:40;16990:5;;;16728:277;;17114:2;17104:8;17101:16;17095:3;17089:4;17086:13;17082:36;17064:2;17054:8;17051:16;17046:2;17040:4;17037:12;17033:35;17017:111;17014:246;;;17170:8;17164:4;17160:19;17151:28;;17205:3;17198:5;17195:14;17192:40;;;17212:18;;:::i;:::-;17192:40;17245:5;;17014:246;17285:42;17323:3;17313:8;17307:4;17304:1;17285:42;:::i;:::-;17270:57;;;;17359:4;17354:3;17350:14;17343:5;17340:25;17337:51;;;17368:18;;:::i;:::-;17337:51;17417:4;17410:5;17406:16;17397:25;;16355:1073;;;;;;:::o;17434:281::-;17492:5;17516:23;17534:4;17516:23;:::i;:::-;17508:31;;17560:25;17576:8;17560:25;:::i;:::-;17548:37;;17604:104;17641:66;17631:8;17625:4;17604:104;:::i;:::-;17595:113;;17434:281;;;;:::o;17721:348::-;17761:7;17784:20;17802:1;17784:20;:::i;:::-;17779:25;;17818:20;17836:1;17818:20;:::i;:::-;17813:25;;18006:1;17938:66;17934:74;17931:1;17928:81;17923:1;17916:9;17909:17;17905:105;17902:131;;;18013:18;;:::i;:::-;17902:131;18061:1;18058;18054:9;18043:20;;17721:348;;;;:::o;18075:180::-;18123:77;18120:1;18113:88;18220:4;18217:1;18210:15;18244:4;18241:1;18234:15;18261:185;18301:1;18318:20;18336:1;18318:20;:::i;:::-;18313:25;;18352:20;18370:1;18352:20;:::i;:::-;18347:25;;18391:1;18381:35;;18396:18;;:::i;:::-;18381:35;18438:1;18435;18431:9;18426:14;;18261:185;;;;:::o;18452:232::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:15;18656:2;18648:6;18644:15;18637:40;18452:232;:::o;18690:366::-;18832:3;18853:67;18917:2;18912:3;18853:67;:::i;:::-;18846:74;;18929:93;19018:3;18929:93;:::i;:::-;19047:2;19042:3;19038:12;19031:19;;18690:366;;;:::o;19062:419::-;19228:4;19266:2;19255:9;19251:18;19243:26;;19315:9;19309:4;19305:20;19301:1;19290:9;19286:17;19279:47;19343:131;19469:4;19343:131;:::i;:::-;19335:139;;19062:419;;;:::o;19487:242::-;19627:34;19623:1;19615:6;19611:14;19604:58;19696:25;19691:2;19683:6;19679:15;19672:50;19487:242;:::o;19735:366::-;19877:3;19898:67;19962:2;19957:3;19898:67;:::i;:::-;19891:74;;19974:93;20063:3;19974:93;:::i;:::-;20092:2;20087:3;20083:12;20076:19;;19735:366;;;:::o;20107:419::-;20273:4;20311:2;20300:9;20296:18;20288:26;;20360:9;20354:4;20350:20;20346:1;20335:9;20331:17;20324:47;20388:131;20514:4;20388:131;:::i;:::-;20380:139;;20107:419;;;:::o;20532:180::-;20672:32;20668:1;20660:6;20656:14;20649:56;20532:180;:::o;20718:366::-;20860:3;20881:67;20945:2;20940:3;20881:67;:::i;:::-;20874:74;;20957:93;21046:3;20957:93;:::i;:::-;21075:2;21070:3;21066:12;21059:19;;20718:366;;;:::o;21090:419::-;21256:4;21294:2;21283:9;21279:18;21271:26;;21343:9;21337:4;21333:20;21329:1;21318:9;21314:17;21307:47;21371:131;21497:4;21371:131;:::i;:::-;21363:139;;21090:419;;;:::o;21515:241::-;21655:34;21651:1;21643:6;21639:14;21632:58;21724:24;21719:2;21711:6;21707:15;21700:49;21515:241;:::o;21762:366::-;21904:3;21925:67;21989:2;21984:3;21925:67;:::i;:::-;21918:74;;22001:93;22090:3;22001:93;:::i;:::-;22119:2;22114:3;22110:12;22103:19;;21762:366;;;:::o;22134:419::-;22300:4;22338:2;22327:9;22323:18;22315:26;;22387:9;22381:4;22377:20;22373:1;22362:9;22358:17;22351:47;22415:131;22541:4;22415:131;:::i;:::-;22407:139;;22134:419;;;:::o;22559:180::-;22607:77;22604:1;22597:88;22704:4;22701:1;22694:15;22728:4;22725:1;22718:15;22745:233;22784:3;22807:24;22825:5;22807:24;:::i;:::-;22798:33;;22853:66;22846:5;22843:77;22840:103;;;22923:18;;:::i;:::-;22840:103;22970:1;22963:5;22959:13;22952:20;;22745:233;;;:::o;22984:305::-;23024:3;23043:20;23061:1;23043:20;:::i;:::-;23038:25;;23077:20;23095:1;23077:20;:::i;:::-;23072:25;;23231:1;23163:66;23159:74;23156:1;23153:81;23150:107;;;23237:18;;:::i;:::-;23150:107;23281:1;23278;23274:9;23267:16;;22984:305;;;;:::o;23295:179::-;23435:31;23431:1;23423:6;23419:14;23412:55;23295:179;:::o;23480:366::-;23622:3;23643:67;23707:2;23702:3;23643:67;:::i;:::-;23636:74;;23719:93;23808:3;23719:93;:::i;:::-;23837:2;23832:3;23828:12;23821:19;;23480:366;;;:::o;23852:419::-;24018:4;24056:2;24045:9;24041:18;24033:26;;24105:9;24099:4;24095:20;24091:1;24080:9;24076:17;24069:47;24133:131;24259:4;24133:131;:::i;:::-;24125:139;;23852:419;;;:::o;24277:169::-;24417:21;24413:1;24405:6;24401:14;24394:45;24277:169;:::o;24452:366::-;24594:3;24615:67;24679:2;24674:3;24615:67;:::i;:::-;24608:74;;24691:93;24780:3;24691:93;:::i;:::-;24809:2;24804:3;24800:12;24793:19;;24452:366;;;:::o;24824:419::-;24990:4;25028:2;25017:9;25013:18;25005:26;;25077:9;25071:4;25067:20;25063:1;25052:9;25048:17;25041:47;25105:131;25231:4;25105:131;:::i;:::-;25097:139;;24824:419;;;:::o;25249:244::-;25389:34;25385:1;25377:6;25373:14;25366:58;25458:27;25453:2;25445:6;25441:15;25434:52;25249:244;:::o;25499:366::-;25641:3;25662:67;25726:2;25721:3;25662:67;:::i;:::-;25655:74;;25738:93;25827:3;25738:93;:::i;:::-;25856:2;25851:3;25847:12;25840:19;;25499:366;;;:::o;25871:419::-;26037:4;26075:2;26064:9;26060:18;26052:26;;26124:9;26118:4;26114:20;26110:1;26099:9;26095:17;26088:47;26152:131;26278:4;26152:131;:::i;:::-;26144:139;;25871:419;;;:::o;26296:225::-;26436:34;26432:1;26424:6;26420:14;26413:58;26505:8;26500:2;26492:6;26488:15;26481:33;26296:225;:::o;26527:366::-;26669:3;26690:67;26754:2;26749:3;26690:67;:::i;:::-;26683:74;;26766:93;26855:3;26766:93;:::i;:::-;26884:2;26879:3;26875:12;26868:19;;26527:366;;;:::o;26899:419::-;27065:4;27103:2;27092:9;27088:18;27080:26;;27152:9;27146:4;27142:20;27138:1;27127:9;27123:17;27116:47;27180:131;27306:4;27180:131;:::i;:::-;27172:139;;26899:419;;;:::o;27324:177::-;27464:29;27460:1;27452:6;27448:14;27441:53;27324:177;:::o;27507:366::-;27649:3;27670:67;27734:2;27729:3;27670:67;:::i;:::-;27663:74;;27746:93;27835:3;27746:93;:::i;:::-;27864:2;27859:3;27855:12;27848:19;;27507:366;;;:::o;27879:419::-;28045:4;28083:2;28072:9;28068:18;28060:26;;28132:9;28126:4;28122:20;28118:1;28107:9;28103:17;28096:47;28160:131;28286:4;28160:131;:::i;:::-;28152:139;;27879:419;;;:::o;28304:223::-;28444:34;28440:1;28432:6;28428:14;28421:58;28513:6;28508:2;28500:6;28496:15;28489:31;28304:223;:::o;28533:366::-;28675:3;28696:67;28760:2;28755:3;28696:67;:::i;:::-;28689:74;;28772:93;28861:3;28772:93;:::i;:::-;28890:2;28885:3;28881:12;28874:19;;28533:366;;;:::o;28905:419::-;29071:4;29109:2;29098:9;29094:18;29086:26;;29158:9;29152:4;29148:20;29144:1;29133:9;29129:17;29122:47;29186:131;29312:4;29186:131;:::i;:::-;29178:139;;28905:419;;;:::o;29330:221::-;29470:34;29466:1;29458:6;29454:14;29447:58;29539:4;29534:2;29526:6;29522:15;29515:29;29330:221;:::o;29557:366::-;29699:3;29720:67;29784:2;29779:3;29720:67;:::i;:::-;29713:74;;29796:93;29885:3;29796:93;:::i;:::-;29914:2;29909:3;29905:12;29898:19;;29557:366;;;:::o;29929:419::-;30095:4;30133:2;30122:9;30118:18;30110:26;;30182:9;30176:4;30172:20;30168:1;30157:9;30153:17;30146:47;30210:131;30336:4;30210:131;:::i;:::-;30202:139;;29929:419;;;:::o;30354:224::-;30494:34;30490:1;30482:6;30478:14;30471:58;30563:7;30558:2;30550:6;30546:15;30539:32;30354:224;:::o;30584:366::-;30726:3;30747:67;30811:2;30806:3;30747:67;:::i;:::-;30740:74;;30823:93;30912:3;30823:93;:::i;:::-;30941:2;30936:3;30932:12;30925:19;;30584:366;;;:::o;30956:419::-;31122:4;31160:2;31149:9;31145:18;31137:26;;31209:9;31203:4;31199:20;31195:1;31184:9;31180:17;31173:47;31237:131;31363:4;31237:131;:::i;:::-;31229:139;;30956:419;;;:::o;31381:222::-;31521:34;31517:1;31509:6;31505:14;31498:58;31590:5;31585:2;31577:6;31573:15;31566:30;31381:222;:::o;31609:366::-;31751:3;31772:67;31836:2;31831:3;31772:67;:::i;:::-;31765:74;;31848:93;31937:3;31848:93;:::i;:::-;31966:2;31961:3;31957:12;31950:19;;31609:366;;;:::o;31981:419::-;32147:4;32185:2;32174:9;32170:18;32162:26;;32234:9;32228:4;32224:20;32220:1;32209:9;32205:17;32198:47;32262:131;32388:4;32262:131;:::i;:::-;32254:139;;31981:419;;;:::o;32406:172::-;32546:24;32542:1;32534:6;32530:14;32523:48;32406:172;:::o;32584:366::-;32726:3;32747:67;32811:2;32806:3;32747:67;:::i;:::-;32740:74;;32823:93;32912:3;32823:93;:::i;:::-;32941:2;32936:3;32932:12;32925:19;;32584:366;;;:::o;32956:419::-;33122:4;33160:2;33149:9;33145:18;33137:26;;33209:9;33203:4;33199:20;33195:1;33184:9;33180:17;33173:47;33237:131;33363:4;33237:131;:::i;:::-;33229:139;;32956:419;;;:::o;33381:240::-;33521:34;33517:1;33509:6;33505:14;33498:58;33590:23;33585:2;33577:6;33573:15;33566:48;33381:240;:::o;33627:366::-;33769:3;33790:67;33854:2;33849:3;33790:67;:::i;:::-;33783:74;;33866:93;33955:3;33866:93;:::i;:::-;33984:2;33979:3;33975:12;33968:19;;33627:366;;;:::o;33999:419::-;34165:4;34203:2;34192:9;34188:18;34180:26;;34252:9;34246:4;34242:20;34238:1;34227:9;34223:17;34216:47;34280:131;34406:4;34280:131;:::i;:::-;34272:139;;33999:419;;;:::o;34424:169::-;34564:21;34560:1;34552:6;34548:14;34541:45;34424:169;:::o;34599:366::-;34741:3;34762:67;34826:2;34821:3;34762:67;:::i;:::-;34755:74;;34838:93;34927:3;34838:93;:::i;:::-;34956:2;34951:3;34947:12;34940:19;;34599:366;;;:::o;34971:419::-;35137:4;35175:2;35164:9;35160:18;35152:26;;35224:9;35218:4;35214:20;35210:1;35199:9;35195:17;35188:47;35252:131;35378:4;35252:131;:::i;:::-;35244:139;;34971:419;;;:::o;35396:241::-;35536:34;35532:1;35524:6;35520:14;35513:58;35605:24;35600:2;35592:6;35588:15;35581:49;35396:241;:::o;35643:366::-;35785:3;35806:67;35870:2;35865:3;35806:67;:::i;:::-;35799:74;;35882:93;35971:3;35882:93;:::i;:::-;36000:2;35995:3;35991:12;35984:19;;35643:366;;;:::o;36015:419::-;36181:4;36219:2;36208:9;36204:18;36196:26;;36268:9;36262:4;36258:20;36254:1;36243:9;36239:17;36232:47;36296:131;36422:4;36296:131;:::i;:::-;36288:139;;36015:419;;;:::o;36440:191::-;36480:4;36500:20;36518:1;36500:20;:::i;:::-;36495:25;;36534:20;36552:1;36534:20;:::i;:::-;36529:25;;36573:1;36570;36567:8;36564:34;;;36578:18;;:::i;:::-;36564:34;36623:1;36620;36616:9;36608:17;;36440:191;;;;:::o;36637:147::-;36738:11;36775:3;36760:18;;36637:147;;;;:::o;36790:114::-;;:::o;36910:398::-;37069:3;37090:83;37171:1;37166:3;37090:83;:::i;:::-;37083:90;;37182:93;37271:3;37182:93;:::i;:::-;37300:1;37295:3;37291:11;37284:18;;36910:398;;;:::o;37314:379::-;37498:3;37520:147;37663:3;37520:147;:::i;:::-;37513:154;;37684:3;37677:10;;37314:379;;;:::o;37699:442::-;37848:4;37886:2;37875:9;37871:18;37863:26;;37899:71;37967:1;37956:9;37952:17;37943:6;37899:71;:::i;:::-;37980:72;38048:2;38037:9;38033:18;38024:6;37980:72;:::i;:::-;38062;38130:2;38119:9;38115:18;38106:6;38062:72;:::i;:::-;37699:442;;;;;;:::o;38147:220::-;38287:34;38283:1;38275:6;38271:14;38264:58;38356:3;38351:2;38343:6;38339:15;38332:28;38147:220;:::o;38373:366::-;38515:3;38536:67;38600:2;38595:3;38536:67;:::i;:::-;38529:74;;38612:93;38701:3;38612:93;:::i;:::-;38730:2;38725:3;38721:12;38714:19;;38373:366;;;:::o;38745:419::-;38911:4;38949:2;38938:9;38934:18;38926:26;;38998:9;38992:4;38988:20;38984:1;38973:9;38969:17;38962:47;39026:131;39152:4;39026:131;:::i;:::-;39018:139;;38745:419;;;:::o;39170:143::-;39227:5;39258:6;39252:13;39243:22;;39274:33;39301:5;39274:33;:::i;:::-;39170:143;;;;:::o;39319:351::-;39389:6;39438:2;39426:9;39417:7;39413:23;39409:32;39406:119;;;39444:79;;:::i;:::-;39406:119;39564:1;39589:64;39645:7;39636:6;39625:9;39621:22;39589:64;:::i;:::-;39579:74;;39535:128;39319:351;;;;:::o;39676:85::-;39721:7;39750:5;39739:16;;39676:85;;;:::o;39767:158::-;39825:9;39858:61;39876:42;39885:32;39911:5;39885:32;:::i;:::-;39876:42;:::i;:::-;39858:61;:::i;:::-;39845:74;;39767:158;;;:::o;39931:147::-;40026:45;40065:5;40026:45;:::i;:::-;40021:3;40014:58;39931:147;;:::o;40084:114::-;40151:6;40185:5;40179:12;40169:22;;40084:114;;;:::o;40204:184::-;40303:11;40337:6;40332:3;40325:19;40377:4;40372:3;40368:14;40353:29;;40204:184;;;;:::o;40394:132::-;40461:4;40484:3;40476:11;;40514:4;40509:3;40505:14;40497:22;;40394:132;;;:::o;40532:108::-;40609:24;40627:5;40609:24;:::i;:::-;40604:3;40597:37;40532:108;;:::o;40646:179::-;40715:10;40736:46;40778:3;40770:6;40736:46;:::i;:::-;40814:4;40809:3;40805:14;40791:28;;40646:179;;;;:::o;40831:113::-;40901:4;40933;40928:3;40924:14;40916:22;;40831:113;;;:::o;40980:732::-;41099:3;41128:54;41176:5;41128:54;:::i;:::-;41198:86;41277:6;41272:3;41198:86;:::i;:::-;41191:93;;41308:56;41358:5;41308:56;:::i;:::-;41387:7;41418:1;41403:284;41428:6;41425:1;41422:13;41403:284;;;41504:6;41498:13;41531:63;41590:3;41575:13;41531:63;:::i;:::-;41524:70;;41617:60;41670:6;41617:60;:::i;:::-;41607:70;;41463:224;41450:1;41447;41443:9;41438:14;;41403:284;;;41407:14;41703:3;41696:10;;41104:608;;;40980:732;;;;:::o;41718:831::-;41981:4;42019:3;42008:9;42004:19;41996:27;;42033:71;42101:1;42090:9;42086:17;42077:6;42033:71;:::i;:::-;42114:80;42190:2;42179:9;42175:18;42166:6;42114:80;:::i;:::-;42241:9;42235:4;42231:20;42226:2;42215:9;42211:18;42204:48;42269:108;42372:4;42363:6;42269:108;:::i;:::-;42261:116;;42387:72;42455:2;42444:9;42440:18;42431:6;42387:72;:::i;:::-;42469:73;42537:3;42526:9;42522:19;42513:6;42469:73;:::i;:::-;41718:831;;;;;;;;:::o;42555:807::-;42804:4;42842:3;42831:9;42827:19;42819:27;;42856:71;42924:1;42913:9;42909:17;42900:6;42856:71;:::i;:::-;42937:72;43005:2;42994:9;42990:18;42981:6;42937:72;:::i;:::-;43019:80;43095:2;43084:9;43080:18;43071:6;43019:80;:::i;:::-;43109;43185:2;43174:9;43170:18;43161:6;43109:80;:::i;:::-;43199:73;43267:3;43256:9;43252:19;43243:6;43199:73;:::i;:::-;43282;43350:3;43339:9;43335:19;43326:6;43282:73;:::i;:::-;42555:807;;;;;;;;;:::o;43368:143::-;43425:5;43456:6;43450:13;43441:22;;43472:33;43499:5;43472:33;:::i;:::-;43368:143;;;;:::o;43517:663::-;43605:6;43613;43621;43670:2;43658:9;43649:7;43645:23;43641:32;43638:119;;;43676:79;;:::i;:::-;43638:119;43796:1;43821:64;43877:7;43868:6;43857:9;43853:22;43821:64;:::i;:::-;43811:74;;43767:128;43934:2;43960:64;44016:7;44007:6;43996:9;43992:22;43960:64;:::i;:::-;43950:74;;43905:129;44073:2;44099:64;44155:7;44146:6;44135:9;44131:22;44099:64;:::i;:::-;44089:74;;44044:129;43517:663;;;;;:::o
Swarm Source
ipfs://248ada54391cab1cf6cd3cf0d6fd239110016f41dd896be0ac49b3a3f9bd9317
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.