Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 LORD
Holders
31
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
10,714.45482342318554784 LORDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
LORD
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-18 */ // SPDX-License-Identifier: Unlicensed // https://t.me/lordvitaliketh pragma solidity 0.8.15; 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 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 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ 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; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ 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]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ 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; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ 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; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ 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; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be 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); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ 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 LORD is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address private MarketingWallet; address private DevWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; // Blacklist Map mapping (address => bool) private _blacklist; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketing; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketing; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event MarketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event DevWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Lord Vitalik", "LORD") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketing = 1; uint256 _buyLiquidityFee = 1; uint256 _buyDevFee = 0; uint256 _sellMarketing = 1; uint256 _sellLiquidityFee = 1; uint256 _sellDevFee = 1; uint256 totalSupply = 1 * 10 ** 6 * 10 ** decimals(); maxTransactionAmount = 2 * 10 ** 4 * 10 ** decimals(); maxWallet = 2 * 10 ** 4 * 10 ** decimals(); swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketing = _buyMarketing; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketing + buyLiquidityFee + buyDevFee; sellMarketing = _sellMarketing; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketing + sellLiquidityFee + sellDevFee; MarketingWallet = address(0x70d857562b6949b070d18D81Fb1a6b032b962a12); // set as Marketing wallet DevWallet = address(0x70d857562b6949b070d18D81Fb1a6b032b962a12); // set as dev wallet // 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(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; launchedAt = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _Marketing, uint256 _liquidityFee, uint256 _DevFee) external onlyOwner { buyMarketing = _Marketing; buyLiquidityFee = _liquidityFee; buyDevFee = _DevFee; buyTotalFees = buyMarketing + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 49, "Must keep fees at 10% or less"); } function updateSellFees(uint256 _Marketing, uint256 _liquidityFee, uint256 _DevFee) external onlyOwner { sellMarketing = _Marketing; sellLiquidityFee = _liquidityFee; sellDevFee = _DevFee; sellTotalFees = sellMarketing + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 99, "Must keep fees at 10% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit MarketingWalletUpdated(newMarketingWallet, MarketingWallet); MarketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit DevWalletUpdated(newWallet, DevWallet); DevWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] <= block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= 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 if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; 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){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketing / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketing / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // 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 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(DevWallet).call{value: ethForDev}(""); 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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketing","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketing","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":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","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":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600c81526020017f4c6f726420566974616c696b00000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c4f5244000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000e4a565b5080600490816200010d919062000e4a565b5050506000620001226200069460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200069c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000f9b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000f9b565b6040518363ffffffff1660e01b81526004016200034092919062000fde565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000f9b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200069c60201b60201c565b620003e360a05160016200079960201b60201c565b600060019050600060019050600080600190506000600190506000600190506000620004146200083a60201b60201c565b600a6200042291906200119b565b620f4240620004329190620011ec565b9050620004446200083a60201b60201c565b600a6200045291906200119b565b614e20620004619190620011ec565b600881905550620004776200083a60201b60201c565b600a6200048591906200119b565b614e20620004949190620011ec565b600a81905550612710600a82620004ac9190620011ec565b620004b891906200127c565b600981905550866011819055508560128190555084601381905550601354601254601154620004e89190620012b4565b620004f49190620012b4565b601081905550836015819055508260168190555081601781905550601754601654601554620005249190620012b4565b620005309190620012b4565b6014819055507370d857562b6949b070d18d81fb1a6b032b962a12600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507370d857562b6949b070d18d81fb1a6b032b962a12600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000602620005f46200084360201b60201c565b60016200086d60201b60201c565b620006153060016200086d60201b60201c565b6200062a61dead60016200086d60201b60201c565b6200064c6200063e6200084360201b60201c565b60016200069c60201b60201c565b6200065f3060016200069c60201b60201c565b6200067461dead60016200069c60201b60201c565b620006863382620009ba60201b60201c565b5050505050505050620014e0565b600033905090565b620006ac6200069460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200073e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007359062001372565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200087d6200069460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200090f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009069062001372565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009ae9190620013b1565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a23906200141e565b60405180910390fd5b62000a406000838362000b6860201b60201c565b62000a5c8160025462000b6d60201b620024791790919060201c565b60028190555062000aba816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b6d60201b620024791790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b5c919062001451565b60405180910390a35050565b505050565b600080828462000b7e9190620012b4565b90508381101562000bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bbd90620014be565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c5257607f821691505b60208210810362000c685762000c6762000c0a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c93565b62000cde868362000c93565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d2b62000d2562000d1f8462000cf6565b62000d00565b62000cf6565b9050919050565b6000819050919050565b62000d478362000d0a565b62000d5f62000d568262000d32565b84845462000ca0565b825550505050565b600090565b62000d7662000d67565b62000d8381848462000d3c565b505050565b5b8181101562000dab5762000d9f60008262000d6c565b60018101905062000d89565b5050565b601f82111562000dfa5762000dc48162000c6e565b62000dcf8462000c83565b8101602085101562000ddf578190505b62000df762000dee8562000c83565b83018262000d88565b50505b505050565b600082821c905092915050565b600062000e1f6000198460080262000dff565b1980831691505092915050565b600062000e3a838362000e0c565b9150826002028217905092915050565b62000e558262000bd0565b67ffffffffffffffff81111562000e715762000e7062000bdb565b5b62000e7d825462000c39565b62000e8a82828562000daf565b600060209050601f83116001811462000ec2576000841562000ead578287015190505b62000eb9858262000e2c565b86555062000f29565b601f19841662000ed28662000c6e565b60005b8281101562000efc5784890151825560018201915060208501945060208101905062000ed5565b8683101562000f1c578489015162000f18601f89168262000e0c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f638262000f36565b9050919050565b62000f758162000f56565b811462000f8157600080fd5b50565b60008151905062000f958162000f6a565b92915050565b60006020828403121562000fb45762000fb362000f31565b5b600062000fc48482850162000f84565b91505092915050565b62000fd88162000f56565b82525050565b600060408201905062000ff5600083018562000fcd565b62001004602083018462000fcd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001099578086048111156200107157620010706200100b565b5b6001851615620010815780820291505b808102905062001091856200103a565b945062001051565b94509492505050565b600082620010b4576001905062001187565b81620010c4576000905062001187565b8160018114620010dd5760028114620010e8576200111e565b600191505062001187565b60ff841115620010fd57620010fc6200100b565b5b8360020a9150848211156200111757620011166200100b565b5b5062001187565b5060208310610133831016604e8410600b8410161715620011585782820a9050838111156200115257620011516200100b565b5b62001187565b62001167848484600162001047565b925090508184048111156200118157620011806200100b565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011a88262000cf6565b9150620011b5836200118e565b9250620011e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010a2565b905092915050565b6000620011f98262000cf6565b9150620012068362000cf6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200124257620012416200100b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012898262000cf6565b9150620012968362000cf6565b925082620012a957620012a86200124d565b5b828204905092915050565b6000620012c18262000cf6565b9150620012ce8362000cf6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200130657620013056200100b565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200135a60208362001311565b9150620013678262001322565b602082019050919050565b600060208201905081810360008301526200138d816200134b565b9050919050565b60008115159050919050565b620013ab8162001394565b82525050565b6000602082019050620013c86000830184620013a0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001406601f8362001311565b91506200141382620013ce565b602082019050919050565b600060208201905081810360008301526200143981620013f7565b9050919050565b6200144b8162000cf6565b82525050565b600060208201905062001468600083018462001440565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620014a6601b8362001311565b9150620014b3826200146e565b602082019050919050565b60006020820190508181036000830152620014d98162001497565b9050919050565b60805160a05161545c6200153e6000396000818161112f0152818161191f0152612b40015260008181610cdf01528181612ae801528181613c5401528181613d3501528181613d5c01528181613df80152613e1f015261545c6000f3fe6080604052600436106102e85760003560e01c8063924de9b711610190578063c17b5b8c116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610b63578063f2fde38b14610b8e578063f637434214610bb7578063f8b45b0514610be2576102ef565b8063dd62ed3e14610ad0578063e2f4560514610b0d578063e884f26014610b38576102ef565b8063c17b5b8c146109c0578063c18bc195146109e9578063c876d0b914610a12578063c8c8ebe414610a3d578063d257b34f14610a68578063d85ba06314610aa5576102ef565b8063a457c2d711610149578063aacebbe311610123578063aacebbe314610906578063b62496f51461092f578063bbc0c7421461096c578063c024666814610997576102ef565b8063a457c2d714610861578063a8b9f94d1461089e578063a9059cbb146108c9576102ef565b8063924de9b71461076357806395d89b411461078c5780639a7a23d6146107b75780639c3b4fdc146107e05780639fccce321461080b578063a0d82dc514610836576102ef565b806349bd5a5e1161024f57806370a08231116102085780637571336a116101e25780637571336a146106cf5780638095d564146106f85780638a8c523c146107215780638da5cb5b14610738576102ef565b806370a0823114610650578063715018a61461068d578063751039fc146106a4576102ef565b806349bd5a5e1461053c5780634a62bb65146105675780634fbee193146105925780636a486a8e146105cf5780636b41ae0c146105fa5780636ddd171314610625576102ef565b80631a8145bb116102a15780631a8145bb146104185780631f3fed8f14610443578063203e727e1461046e57806323b872dd14610497578063313ce567146104d457806339509351146104ff576102ef565b806306fdde03146102f4578063095ea7b31461031f57806310d5de531461035c5780631694505e1461039957806318160ddd146103c45780631816467f146103ef576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c0d565b6040516103169190613fc8565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190614083565b610c9f565b60405161035391906140de565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906140f9565b610cbd565b60405161039091906140de565b60405180910390f35b3480156103a557600080fd5b506103ae610cdd565b6040516103bb9190614185565b60405180910390f35b3480156103d057600080fd5b506103d9610d01565b6040516103e691906141af565b60405180910390f35b3480156103fb57600080fd5b50610416600480360381019061041191906140f9565b610d0b565b005b34801561042457600080fd5b5061042d610e62565b60405161043a91906141af565b60405180910390f35b34801561044f57600080fd5b50610458610e68565b60405161046591906141af565b60405180910390f35b34801561047a57600080fd5b50610495600480360381019061049091906141ca565b610e6e565b005b3480156104a357600080fd5b506104be60048036038101906104b991906141f7565b610f98565b6040516104cb91906140de565b60405180910390f35b3480156104e057600080fd5b506104e9611071565b6040516104f69190614266565b60405180910390f35b34801561050b57600080fd5b5061052660048036038101906105219190614083565b61107a565b60405161053391906140de565b60405180910390f35b34801561054857600080fd5b5061055161112d565b60405161055e9190614290565b60405180910390f35b34801561057357600080fd5b5061057c611151565b60405161058991906140de565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b491906140f9565b611164565b6040516105c691906140de565b60405180910390f35b3480156105db57600080fd5b506105e46111ba565b6040516105f191906141af565b60405180910390f35b34801561060657600080fd5b5061060f6111c0565b60405161061c91906141af565b60405180910390f35b34801561063157600080fd5b5061063a6111c6565b60405161064791906140de565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906140f9565b6111d9565b60405161068491906141af565b60405180910390f35b34801561069957600080fd5b506106a2611221565b005b3480156106b057600080fd5b506106b9611379565b6040516106c691906140de565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906142d7565b611434565b005b34801561070457600080fd5b5061071f600480360381019061071a9190614317565b611526565b005b34801561072d57600080fd5b50610736611640565b005b34801561074457600080fd5b5061074d611716565b60405161075a9190614290565b60405180910390f35b34801561076f57600080fd5b5061078a6004803603810190610785919061436a565b611740565b005b34801561079857600080fd5b506107a16117f4565b6040516107ae9190613fc8565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d991906142d7565b611886565b005b3480156107ec57600080fd5b506107f56119b9565b60405161080291906141af565b60405180910390f35b34801561081757600080fd5b506108206119bf565b60405161082d91906141af565b60405180910390f35b34801561084257600080fd5b5061084b6119c5565b60405161085891906141af565b60405180910390f35b34801561086d57600080fd5b5061088860048036038101906108839190614083565b6119cb565b60405161089591906140de565b60405180910390f35b3480156108aa57600080fd5b506108b3611a98565b6040516108c091906141af565b60405180910390f35b3480156108d557600080fd5b506108f060048036038101906108eb9190614083565b611a9e565b6040516108fd91906140de565b60405180910390f35b34801561091257600080fd5b5061092d600480360381019061092891906140f9565b611abc565b005b34801561093b57600080fd5b50610956600480360381019061095191906140f9565b611c13565b60405161096391906140de565b60405180910390f35b34801561097857600080fd5b50610981611c33565b60405161098e91906140de565b60405180910390f35b3480156109a357600080fd5b506109be60048036038101906109b991906142d7565b611c46565b005b3480156109cc57600080fd5b506109e760048036038101906109e29190614317565b611d86565b005b3480156109f557600080fd5b50610a106004803603810190610a0b91906141ca565b611ea0565b005b348015610a1e57600080fd5b50610a27611fca565b604051610a3491906140de565b60405180910390f35b348015610a4957600080fd5b50610a52611fdd565b604051610a5f91906141af565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a91906141ca565b611fe3565b604051610a9c91906140de565b60405180910390f35b348015610ab157600080fd5b50610aba612153565b604051610ac791906141af565b60405180910390f35b348015610adc57600080fd5b50610af76004803603810190610af29190614397565b612159565b604051610b0491906141af565b60405180910390f35b348015610b1957600080fd5b50610b226121e0565b604051610b2f91906141af565b60405180910390f35b348015610b4457600080fd5b50610b4d6121e6565b604051610b5a91906140de565b60405180910390f35b348015610b6f57600080fd5b50610b786122a1565b604051610b8591906141af565b60405180910390f35b348015610b9a57600080fd5b50610bb56004803603810190610bb091906140f9565b6122a7565b005b348015610bc357600080fd5b50610bcc61246d565b604051610bd991906141af565b60405180910390f35b348015610bee57600080fd5b50610bf7612473565b604051610c0491906141af565b60405180910390f35b606060038054610c1c90614406565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890614406565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b5050505050905090565b6000610cb3610cac6124d7565b84846124df565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d136124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9990614483565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87160405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b610e766124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90614483565b60405180910390fd5b670de0b6b3a76400006103e86001610f1b610d01565b610f2591906144d2565b610f2f919061455b565b610f39919061455b565b811015610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f72906145fe565b60405180910390fd5b670de0b6b3a764000081610f8f91906144d2565b60088190555050565b6000610fa58484846126a8565b61106684610fb16124d7565b611061856040518060600160405280602881526020016153da60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110176124d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134239092919063ffffffff16565b6124df565b600190509392505050565b60006012905090565b60006111236110876124d7565b8461111e85600160006110986124d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247990919063ffffffff16565b6124df565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b60155481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112296124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90614483565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006113836124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990614483565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61143c6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c290614483565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61152e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490614483565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546115e5919061461e565b6115ef919061461e565b6010819055506031601054111561163b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611632906146c0565b60405180910390fd5b505050565b6116486124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614483565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117486124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ce90614483565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461180390614406565b80601f016020809104026020016040519081016040528092919081815260200182805461182f90614406565b801561187c5780601f106118515761010080835404028352916020019161187c565b820191906000526020600020905b81548152906001019060200180831161185f57829003601f168201915b5050505050905090565b61188e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191490614483565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290614752565b60405180910390fd5b6119b58282613487565b5050565b60135481565b601a5481565b60175481565b6000611a8e6119d86124d7565b84611a89856040518060600160405280602581526020016154026025913960016000611a026124d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134239092919063ffffffff16565b6124df565b6001905092915050565b60115481565b6000611ab2611aab6124d7565b84846126a8565b6001905092915050565b611ac46124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a90614483565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611c4e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490614483565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d7a91906140de565b60405180910390a25050565b611d8e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490614483565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611e45919061461e565b611e4f919061461e565b60148190555060636014541115611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e92906146c0565b60405180910390fd5b505050565b611ea86124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614483565b60405180910390fd5b670de0b6b3a76400006103e86001611f4d610d01565b611f5791906144d2565b611f61919061455b565b611f6b919061455b565b811015611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906147e4565b60405180910390fd5b670de0b6b3a764000081611fc191906144d2565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b6000611fed6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390614483565b60405180910390fd5b620186a0600161208a610d01565b61209491906144d2565b61209e919061455b565b8210156120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614876565b60405180910390fd5b6103e860056120ed610d01565b6120f791906144d2565b612101919061455b565b821115612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90614908565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006121f06124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227690614483565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b6122af6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461233e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233590614483565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a49061499a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b6000808284612488919061461e565b9050838110156124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c490614a06565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254590614a98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b490614b2a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161269b91906141af565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90614bbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614c4e565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561282a5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090614ce0565b60405180910390fd5b600081036128825761287d83836000613528565b61341e565b600b60009054906101000a900460ff1615612f465761289f611716565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561290d57506128dd611716565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129465750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612980575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129995750600560149054906101000a900460ff16155b15612f4557600b60019054906101000a900460ff16612a9357601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a535750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8990614d4c565b60405180910390fd5b5b600f60009054906101000a900460ff1615612c5c57612ab0611716565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b3757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b8f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c5b5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90614e04565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cff5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612da657600854811115612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4090614e96565b60405180910390fd5b600a54612d55836111d9565b82612d60919061461e565b1115612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9890614f02565b60405180910390fd5b612f44565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e495750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9857600854811115612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90614f94565b60405180910390fd5b612f43565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f4257600a54612ef5836111d9565b82612f00919061461e565b1115612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890614f02565b60405180910390fd5b5b5b5b5b5b6000612f51306111d9565b905060006009548210159050808015612f765750600b60029054906101000a900460ff165b8015612f8f5750600560149054906101000a900460ff16155b8015612fe55750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561303b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130915750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130d5576001600560146101000a81548160ff0219169083151502179055506130b96137bb565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061318b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561319557600090505b6000811561340e57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f857506000601454115b156132c557613225606461321760145488613aa290919063ffffffff16565b613b1c90919063ffffffff16565b90506014546016548261323891906144d2565b613242919061455b565b60196000828254613253919061461e565b925050819055506014546017548261326b91906144d2565b613275919061455b565b601a6000828254613286919061461e565b925050819055506014546015548261329e91906144d2565b6132a8919061455b565b601860008282546132b9919061461e565b925050819055506133ea565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561332057506000601054115b156133e95761334d606461333f60105488613aa290919063ffffffff16565b613b1c90919063ffffffff16565b90506010546012548261336091906144d2565b61336a919061455b565b6019600082825461337b919061461e565b925050819055506010546013548261339391906144d2565b61339d919061455b565b601a60008282546133ae919061461e565b92505081905550601054601154826133c691906144d2565b6133d0919061455b565b601860008282546133e1919061461e565b925050819055505b5b60008111156133ff576133fe873083613528565b5b808561340b9190614fb4565b94505b613419878787613528565b505050505b505050565b600083831115829061346b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134629190613fc8565b60405180910390fd5b506000838561347a9190614fb4565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358e90614bbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fd90614c4e565b60405180910390fd5b613611838383613b66565b61367c816040518060600160405280602681526020016153b4602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134239092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137ae91906141af565b60405180910390a3505050565b60006137c6306111d9565b90506000601a546018546019546137dd919061461e565b6137e7919061461e565b90506000808314806137f95750600082145b1561380657505050613aa0565b601460095461381591906144d2565b83111561382e57601460095461382b91906144d2565b92505b60006002836019548661384191906144d2565b61384b919061455b565b613855919061455b565b9050600061386c8286613b6b90919063ffffffff16565b9050600047905061387c82613bb5565b60006138918247613b6b90919063ffffffff16565b905060006138bc876138ae60185485613aa290919063ffffffff16565b613b1c90919063ffffffff16565b905060006138e7886138d9601a5486613aa290919063ffffffff16565b613b1c90919063ffffffff16565b905060008183856138f89190614fb4565b6139029190614fb4565b9050600060198190555060006018819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161396290615019565b60006040518083038185875af1925050503d806000811461399f576040519150601f19603f3d011682016040523d82523d6000602084013e6139a4565b606091505b5050809850506000871180156139ba5750600081115b15613a07576139c98782613df2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826019546040516139fe9392919061502e565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a4d90615019565b60006040518083038185875af1925050503d8060008114613a8a576040519150601f19603f3d011682016040523d82523d6000602084013e613a8f565b606091505b505080985050505050505050505050505b565b6000808303613ab45760009050613b16565b60008284613ac291906144d2565b9050828482613ad1919061455b565b14613b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b08906150d7565b60405180910390fd5b809150505b92915050565b6000613b5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ecc565b905092915050565b505050565b6000613bad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613423565b905092915050565b6000600267ffffffffffffffff811115613bd257613bd16150f7565b5b604051908082528060200260200182016040528015613c005781602001602082028036833780820191505090505b5090503081600081518110613c1857613c17615126565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce1919061516a565b81600181518110613cf557613cf4615126565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5a307f0000000000000000000000000000000000000000000000000000000000000000846124df565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dbc959493929190615290565b600060405180830381600087803b158015613dd657600080fd5b505af1158015613dea573d6000803e3d6000fd5b505050505050565b613e1d307f0000000000000000000000000000000000000000000000000000000000000000846124df565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613e82969594939291906152ea565b60606040518083038185885af1158015613ea0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ec59190615360565b5050505050565b60008083118290613f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0a9190613fc8565b60405180910390fd5b5060008385613f22919061455b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f69578082015181840152602081019050613f4e565b83811115613f78576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f9a82613f2f565b613fa48185613f3a565b9350613fb4818560208601613f4b565b613fbd81613f7e565b840191505092915050565b60006020820190508181036000830152613fe28184613f8f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061401a82613fef565b9050919050565b61402a8161400f565b811461403557600080fd5b50565b60008135905061404781614021565b92915050565b6000819050919050565b6140608161404d565b811461406b57600080fd5b50565b60008135905061407d81614057565b92915050565b6000806040838503121561409a57614099613fea565b5b60006140a885828601614038565b92505060206140b98582860161406e565b9150509250929050565b60008115159050919050565b6140d8816140c3565b82525050565b60006020820190506140f360008301846140cf565b92915050565b60006020828403121561410f5761410e613fea565b5b600061411d84828501614038565b91505092915050565b6000819050919050565b600061414b61414661414184613fef565b614126565b613fef565b9050919050565b600061415d82614130565b9050919050565b600061416f82614152565b9050919050565b61417f81614164565b82525050565b600060208201905061419a6000830184614176565b92915050565b6141a98161404d565b82525050565b60006020820190506141c460008301846141a0565b92915050565b6000602082840312156141e0576141df613fea565b5b60006141ee8482850161406e565b91505092915050565b6000806000606084860312156142105761420f613fea565b5b600061421e86828701614038565b935050602061422f86828701614038565b92505060406142408682870161406e565b9150509250925092565b600060ff82169050919050565b6142608161424a565b82525050565b600060208201905061427b6000830184614257565b92915050565b61428a8161400f565b82525050565b60006020820190506142a56000830184614281565b92915050565b6142b4816140c3565b81146142bf57600080fd5b50565b6000813590506142d1816142ab565b92915050565b600080604083850312156142ee576142ed613fea565b5b60006142fc85828601614038565b925050602061430d858286016142c2565b9150509250929050565b6000806000606084860312156143305761432f613fea565b5b600061433e8682870161406e565b935050602061434f8682870161406e565b92505060406143608682870161406e565b9150509250925092565b6000602082840312156143805761437f613fea565b5b600061438e848285016142c2565b91505092915050565b600080604083850312156143ae576143ad613fea565b5b60006143bc85828601614038565b92505060206143cd85828601614038565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061441e57607f821691505b602082108103614431576144306143d7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061446d602083613f3a565b915061447882614437565b602082019050919050565b6000602082019050818103600083015261449c81614460565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144dd8261404d565b91506144e88361404d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614521576145206144a3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145668261404d565b91506145718361404d565b9250826145815761458061452c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006145e8602f83613f3a565b91506145f38261458c565b604082019050919050565b60006020820190508181036000830152614617816145db565b9050919050565b60006146298261404d565b91506146348361404d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614669576146686144a3565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006146aa601d83613f3a565b91506146b582614674565b602082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061473c603983613f3a565b9150614747826146e0565b604082019050919050565b6000602082019050818103600083015261476b8161472f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006147ce602483613f3a565b91506147d982614772565b604082019050919050565b600060208201905081810360008301526147fd816147c1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614860603583613f3a565b915061486b82614804565b604082019050919050565b6000602082019050818103600083015261488f81614853565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006148f2603483613f3a565b91506148fd82614896565b604082019050919050565b60006020820190508181036000830152614921816148e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614984602683613f3a565b915061498f82614928565b604082019050919050565b600060208201905081810360008301526149b381614977565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149f0601b83613f3a565b91506149fb826149ba565b602082019050919050565b60006020820190508181036000830152614a1f816149e3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a82602483613f3a565b9150614a8d82614a26565b604082019050919050565b60006020820190508181036000830152614ab181614a75565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b14602283613f3a565b9150614b1f82614ab8565b604082019050919050565b60006020820190508181036000830152614b4381614b07565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ba6602583613f3a565b9150614bb182614b4a565b604082019050919050565b60006020820190508181036000830152614bd581614b99565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c38602383613f3a565b9150614c4382614bdc565b604082019050919050565b60006020820190508181036000830152614c6781614c2b565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614cca603183613f3a565b9150614cd582614c6e565b604082019050919050565b60006020820190508181036000830152614cf981614cbd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d36601683613f3a565b9150614d4182614d00565b602082019050919050565b60006020820190508181036000830152614d6581614d29565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614dee604983613f3a565b9150614df982614d6c565b606082019050919050565b60006020820190508181036000830152614e1d81614de1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614e80603583613f3a565b9150614e8b82614e24565b604082019050919050565b60006020820190508181036000830152614eaf81614e73565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614eec601383613f3a565b9150614ef782614eb6565b602082019050919050565b60006020820190508181036000830152614f1b81614edf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614f7e603683613f3a565b9150614f8982614f22565b604082019050919050565b60006020820190508181036000830152614fad81614f71565b9050919050565b6000614fbf8261404d565b9150614fca8361404d565b925082821015614fdd57614fdc6144a3565b5b828203905092915050565b600081905092915050565b50565b6000615003600083614fe8565b915061500e82614ff3565b600082019050919050565b600061502482614ff6565b9150819050919050565b600060608201905061504360008301866141a0565b61505060208301856141a0565b61505d60408301846141a0565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150c1602183613f3a565b91506150cc82615065565b604082019050919050565b600060208201905081810360008301526150f0816150b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061516481614021565b92915050565b6000602082840312156151805761517f613fea565b5b600061518e84828501615155565b91505092915050565b6000819050919050565b60006151bc6151b76151b284615197565b614126565b61404d565b9050919050565b6151cc816151a1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152078161400f565b82525050565b600061521983836151fe565b60208301905092915050565b6000602082019050919050565b600061523d826151d2565b61524781856151dd565b9350615252836151ee565b8060005b8381101561528357815161526a888261520d565b975061527583615225565b925050600181019050615256565b5085935050505092915050565b600060a0820190506152a560008301886141a0565b6152b260208301876151c3565b81810360408301526152c48186615232565b90506152d36060830185614281565b6152e060808301846141a0565b9695505050505050565b600060c0820190506152ff6000830189614281565b61530c60208301886141a0565b61531960408301876151c3565b61532660608301866151c3565b6153336080830185614281565b61534060a08301846141a0565b979650505050505050565b60008151905061535a81614057565b92915050565b60008060006060848603121561537957615378613fea565b5b60006153878682870161534b565b93505060206153988682870161534b565b92505060406153a98682870161534b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204f756f42b71e49e153396033674443ea5f8e9dbce85f4e90711a05d81d9ae18264736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c8063924de9b711610190578063c17b5b8c116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610b63578063f2fde38b14610b8e578063f637434214610bb7578063f8b45b0514610be2576102ef565b8063dd62ed3e14610ad0578063e2f4560514610b0d578063e884f26014610b38576102ef565b8063c17b5b8c146109c0578063c18bc195146109e9578063c876d0b914610a12578063c8c8ebe414610a3d578063d257b34f14610a68578063d85ba06314610aa5576102ef565b8063a457c2d711610149578063aacebbe311610123578063aacebbe314610906578063b62496f51461092f578063bbc0c7421461096c578063c024666814610997576102ef565b8063a457c2d714610861578063a8b9f94d1461089e578063a9059cbb146108c9576102ef565b8063924de9b71461076357806395d89b411461078c5780639a7a23d6146107b75780639c3b4fdc146107e05780639fccce321461080b578063a0d82dc514610836576102ef565b806349bd5a5e1161024f57806370a08231116102085780637571336a116101e25780637571336a146106cf5780638095d564146106f85780638a8c523c146107215780638da5cb5b14610738576102ef565b806370a0823114610650578063715018a61461068d578063751039fc146106a4576102ef565b806349bd5a5e1461053c5780634a62bb65146105675780634fbee193146105925780636a486a8e146105cf5780636b41ae0c146105fa5780636ddd171314610625576102ef565b80631a8145bb116102a15780631a8145bb146104185780631f3fed8f14610443578063203e727e1461046e57806323b872dd14610497578063313ce567146104d457806339509351146104ff576102ef565b806306fdde03146102f4578063095ea7b31461031f57806310d5de531461035c5780631694505e1461039957806318160ddd146103c45780631816467f146103ef576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c0d565b6040516103169190613fc8565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190614083565b610c9f565b60405161035391906140de565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906140f9565b610cbd565b60405161039091906140de565b60405180910390f35b3480156103a557600080fd5b506103ae610cdd565b6040516103bb9190614185565b60405180910390f35b3480156103d057600080fd5b506103d9610d01565b6040516103e691906141af565b60405180910390f35b3480156103fb57600080fd5b50610416600480360381019061041191906140f9565b610d0b565b005b34801561042457600080fd5b5061042d610e62565b60405161043a91906141af565b60405180910390f35b34801561044f57600080fd5b50610458610e68565b60405161046591906141af565b60405180910390f35b34801561047a57600080fd5b50610495600480360381019061049091906141ca565b610e6e565b005b3480156104a357600080fd5b506104be60048036038101906104b991906141f7565b610f98565b6040516104cb91906140de565b60405180910390f35b3480156104e057600080fd5b506104e9611071565b6040516104f69190614266565b60405180910390f35b34801561050b57600080fd5b5061052660048036038101906105219190614083565b61107a565b60405161053391906140de565b60405180910390f35b34801561054857600080fd5b5061055161112d565b60405161055e9190614290565b60405180910390f35b34801561057357600080fd5b5061057c611151565b60405161058991906140de565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b491906140f9565b611164565b6040516105c691906140de565b60405180910390f35b3480156105db57600080fd5b506105e46111ba565b6040516105f191906141af565b60405180910390f35b34801561060657600080fd5b5061060f6111c0565b60405161061c91906141af565b60405180910390f35b34801561063157600080fd5b5061063a6111c6565b60405161064791906140de565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906140f9565b6111d9565b60405161068491906141af565b60405180910390f35b34801561069957600080fd5b506106a2611221565b005b3480156106b057600080fd5b506106b9611379565b6040516106c691906140de565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906142d7565b611434565b005b34801561070457600080fd5b5061071f600480360381019061071a9190614317565b611526565b005b34801561072d57600080fd5b50610736611640565b005b34801561074457600080fd5b5061074d611716565b60405161075a9190614290565b60405180910390f35b34801561076f57600080fd5b5061078a6004803603810190610785919061436a565b611740565b005b34801561079857600080fd5b506107a16117f4565b6040516107ae9190613fc8565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d991906142d7565b611886565b005b3480156107ec57600080fd5b506107f56119b9565b60405161080291906141af565b60405180910390f35b34801561081757600080fd5b506108206119bf565b60405161082d91906141af565b60405180910390f35b34801561084257600080fd5b5061084b6119c5565b60405161085891906141af565b60405180910390f35b34801561086d57600080fd5b5061088860048036038101906108839190614083565b6119cb565b60405161089591906140de565b60405180910390f35b3480156108aa57600080fd5b506108b3611a98565b6040516108c091906141af565b60405180910390f35b3480156108d557600080fd5b506108f060048036038101906108eb9190614083565b611a9e565b6040516108fd91906140de565b60405180910390f35b34801561091257600080fd5b5061092d600480360381019061092891906140f9565b611abc565b005b34801561093b57600080fd5b50610956600480360381019061095191906140f9565b611c13565b60405161096391906140de565b60405180910390f35b34801561097857600080fd5b50610981611c33565b60405161098e91906140de565b60405180910390f35b3480156109a357600080fd5b506109be60048036038101906109b991906142d7565b611c46565b005b3480156109cc57600080fd5b506109e760048036038101906109e29190614317565b611d86565b005b3480156109f557600080fd5b50610a106004803603810190610a0b91906141ca565b611ea0565b005b348015610a1e57600080fd5b50610a27611fca565b604051610a3491906140de565b60405180910390f35b348015610a4957600080fd5b50610a52611fdd565b604051610a5f91906141af565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a91906141ca565b611fe3565b604051610a9c91906140de565b60405180910390f35b348015610ab157600080fd5b50610aba612153565b604051610ac791906141af565b60405180910390f35b348015610adc57600080fd5b50610af76004803603810190610af29190614397565b612159565b604051610b0491906141af565b60405180910390f35b348015610b1957600080fd5b50610b226121e0565b604051610b2f91906141af565b60405180910390f35b348015610b4457600080fd5b50610b4d6121e6565b604051610b5a91906140de565b60405180910390f35b348015610b6f57600080fd5b50610b786122a1565b604051610b8591906141af565b60405180910390f35b348015610b9a57600080fd5b50610bb56004803603810190610bb091906140f9565b6122a7565b005b348015610bc357600080fd5b50610bcc61246d565b604051610bd991906141af565b60405180910390f35b348015610bee57600080fd5b50610bf7612473565b604051610c0491906141af565b60405180910390f35b606060038054610c1c90614406565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890614406565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b5050505050905090565b6000610cb3610cac6124d7565b84846124df565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d136124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9990614483565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87160405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b610e766124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90614483565b60405180910390fd5b670de0b6b3a76400006103e86001610f1b610d01565b610f2591906144d2565b610f2f919061455b565b610f39919061455b565b811015610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f72906145fe565b60405180910390fd5b670de0b6b3a764000081610f8f91906144d2565b60088190555050565b6000610fa58484846126a8565b61106684610fb16124d7565b611061856040518060600160405280602881526020016153da60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110176124d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134239092919063ffffffff16565b6124df565b600190509392505050565b60006012905090565b60006111236110876124d7565b8461111e85600160006110986124d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247990919063ffffffff16565b6124df565b6001905092915050565b7f000000000000000000000000f621122452700d087c51dfcd938c146a2446c62481565b600b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b60155481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112296124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90614483565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006113836124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990614483565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61143c6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c290614483565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61152e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490614483565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546115e5919061461e565b6115ef919061461e565b6010819055506031601054111561163b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611632906146c0565b60405180910390fd5b505050565b6116486124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614483565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117486124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ce90614483565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461180390614406565b80601f016020809104026020016040519081016040528092919081815260200182805461182f90614406565b801561187c5780601f106118515761010080835404028352916020019161187c565b820191906000526020600020905b81548152906001019060200180831161185f57829003601f168201915b5050505050905090565b61188e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191490614483565b60405180910390fd5b7f000000000000000000000000f621122452700d087c51dfcd938c146a2446c62473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290614752565b60405180910390fd5b6119b58282613487565b5050565b60135481565b601a5481565b60175481565b6000611a8e6119d86124d7565b84611a89856040518060600160405280602581526020016154026025913960016000611a026124d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134239092919063ffffffff16565b6124df565b6001905092915050565b60115481565b6000611ab2611aab6124d7565b84846126a8565b6001905092915050565b611ac46124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a90614483565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611c4e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490614483565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d7a91906140de565b60405180910390a25050565b611d8e6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490614483565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611e45919061461e565b611e4f919061461e565b60148190555060636014541115611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e92906146c0565b60405180910390fd5b505050565b611ea86124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90614483565b60405180910390fd5b670de0b6b3a76400006103e86001611f4d610d01565b611f5791906144d2565b611f61919061455b565b611f6b919061455b565b811015611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906147e4565b60405180910390fd5b670de0b6b3a764000081611fc191906144d2565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b6000611fed6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390614483565b60405180910390fd5b620186a0600161208a610d01565b61209491906144d2565b61209e919061455b565b8210156120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614876565b60405180910390fd5b6103e860056120ed610d01565b6120f791906144d2565b612101919061455b565b821115612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90614908565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006121f06124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227690614483565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b6122af6124d7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461233e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233590614483565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a49061499a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b6000808284612488919061461e565b9050838110156124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c490614a06565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254590614a98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b490614b2a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161269b91906141af565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90614bbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614c4e565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561282a5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090614ce0565b60405180910390fd5b600081036128825761287d83836000613528565b61341e565b600b60009054906101000a900460ff1615612f465761289f611716565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561290d57506128dd611716565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129465750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612980575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129995750600560149054906101000a900460ff16155b15612f4557600b60019054906101000a900460ff16612a9357601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a535750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8990614d4c565b60405180910390fd5b5b600f60009054906101000a900460ff1615612c5c57612ab0611716565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b3757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b8f57507f000000000000000000000000f621122452700d087c51dfcd938c146a2446c62473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c5b5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90614e04565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cff5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612da657600854811115612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4090614e96565b60405180910390fd5b600a54612d55836111d9565b82612d60919061461e565b1115612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9890614f02565b60405180910390fd5b612f44565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e495750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9857600854811115612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90614f94565b60405180910390fd5b612f43565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f4257600a54612ef5836111d9565b82612f00919061461e565b1115612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890614f02565b60405180910390fd5b5b5b5b5b5b6000612f51306111d9565b905060006009548210159050808015612f765750600b60029054906101000a900460ff165b8015612f8f5750600560149054906101000a900460ff16155b8015612fe55750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561303b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130915750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130d5576001600560146101000a81548160ff0219169083151502179055506130b96137bb565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061318b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561319557600090505b6000811561340e57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f857506000601454115b156132c557613225606461321760145488613aa290919063ffffffff16565b613b1c90919063ffffffff16565b90506014546016548261323891906144d2565b613242919061455b565b60196000828254613253919061461e565b925050819055506014546017548261326b91906144d2565b613275919061455b565b601a6000828254613286919061461e565b925050819055506014546015548261329e91906144d2565b6132a8919061455b565b601860008282546132b9919061461e565b925050819055506133ea565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561332057506000601054115b156133e95761334d606461333f60105488613aa290919063ffffffff16565b613b1c90919063ffffffff16565b90506010546012548261336091906144d2565b61336a919061455b565b6019600082825461337b919061461e565b925050819055506010546013548261339391906144d2565b61339d919061455b565b601a60008282546133ae919061461e565b92505081905550601054601154826133c691906144d2565b6133d0919061455b565b601860008282546133e1919061461e565b925050819055505b5b60008111156133ff576133fe873083613528565b5b808561340b9190614fb4565b94505b613419878787613528565b505050505b505050565b600083831115829061346b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134629190613fc8565b60405180910390fd5b506000838561347a9190614fb4565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358e90614bbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fd90614c4e565b60405180910390fd5b613611838383613b66565b61367c816040518060600160405280602681526020016153b4602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134239092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137ae91906141af565b60405180910390a3505050565b60006137c6306111d9565b90506000601a546018546019546137dd919061461e565b6137e7919061461e565b90506000808314806137f95750600082145b1561380657505050613aa0565b601460095461381591906144d2565b83111561382e57601460095461382b91906144d2565b92505b60006002836019548661384191906144d2565b61384b919061455b565b613855919061455b565b9050600061386c8286613b6b90919063ffffffff16565b9050600047905061387c82613bb5565b60006138918247613b6b90919063ffffffff16565b905060006138bc876138ae60185485613aa290919063ffffffff16565b613b1c90919063ffffffff16565b905060006138e7886138d9601a5486613aa290919063ffffffff16565b613b1c90919063ffffffff16565b905060008183856138f89190614fb4565b6139029190614fb4565b9050600060198190555060006018819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161396290615019565b60006040518083038185875af1925050503d806000811461399f576040519150601f19603f3d011682016040523d82523d6000602084013e6139a4565b606091505b5050809850506000871180156139ba5750600081115b15613a07576139c98782613df2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826019546040516139fe9392919061502e565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a4d90615019565b60006040518083038185875af1925050503d8060008114613a8a576040519150601f19603f3d011682016040523d82523d6000602084013e613a8f565b606091505b505080985050505050505050505050505b565b6000808303613ab45760009050613b16565b60008284613ac291906144d2565b9050828482613ad1919061455b565b14613b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b08906150d7565b60405180910390fd5b809150505b92915050565b6000613b5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ecc565b905092915050565b505050565b6000613bad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613423565b905092915050565b6000600267ffffffffffffffff811115613bd257613bd16150f7565b5b604051908082528060200260200182016040528015613c005781602001602082028036833780820191505090505b5090503081600081518110613c1857613c17615126565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce1919061516a565b81600181518110613cf557613cf4615126565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846124df565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dbc959493929190615290565b600060405180830381600087803b158015613dd657600080fd5b505af1158015613dea573d6000803e3d6000fd5b505050505050565b613e1d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846124df565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613e82969594939291906152ea565b60606040518083038185885af1158015613ea0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ec59190615360565b5050505050565b60008083118290613f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0a9190613fc8565b60405180910390fd5b5060008385613f22919061455b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f69578082015181840152602081019050613f4e565b83811115613f78576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f9a82613f2f565b613fa48185613f3a565b9350613fb4818560208601613f4b565b613fbd81613f7e565b840191505092915050565b60006020820190508181036000830152613fe28184613f8f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061401a82613fef565b9050919050565b61402a8161400f565b811461403557600080fd5b50565b60008135905061404781614021565b92915050565b6000819050919050565b6140608161404d565b811461406b57600080fd5b50565b60008135905061407d81614057565b92915050565b6000806040838503121561409a57614099613fea565b5b60006140a885828601614038565b92505060206140b98582860161406e565b9150509250929050565b60008115159050919050565b6140d8816140c3565b82525050565b60006020820190506140f360008301846140cf565b92915050565b60006020828403121561410f5761410e613fea565b5b600061411d84828501614038565b91505092915050565b6000819050919050565b600061414b61414661414184613fef565b614126565b613fef565b9050919050565b600061415d82614130565b9050919050565b600061416f82614152565b9050919050565b61417f81614164565b82525050565b600060208201905061419a6000830184614176565b92915050565b6141a98161404d565b82525050565b60006020820190506141c460008301846141a0565b92915050565b6000602082840312156141e0576141df613fea565b5b60006141ee8482850161406e565b91505092915050565b6000806000606084860312156142105761420f613fea565b5b600061421e86828701614038565b935050602061422f86828701614038565b92505060406142408682870161406e565b9150509250925092565b600060ff82169050919050565b6142608161424a565b82525050565b600060208201905061427b6000830184614257565b92915050565b61428a8161400f565b82525050565b60006020820190506142a56000830184614281565b92915050565b6142b4816140c3565b81146142bf57600080fd5b50565b6000813590506142d1816142ab565b92915050565b600080604083850312156142ee576142ed613fea565b5b60006142fc85828601614038565b925050602061430d858286016142c2565b9150509250929050565b6000806000606084860312156143305761432f613fea565b5b600061433e8682870161406e565b935050602061434f8682870161406e565b92505060406143608682870161406e565b9150509250925092565b6000602082840312156143805761437f613fea565b5b600061438e848285016142c2565b91505092915050565b600080604083850312156143ae576143ad613fea565b5b60006143bc85828601614038565b92505060206143cd85828601614038565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061441e57607f821691505b602082108103614431576144306143d7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061446d602083613f3a565b915061447882614437565b602082019050919050565b6000602082019050818103600083015261449c81614460565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144dd8261404d565b91506144e88361404d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614521576145206144a3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145668261404d565b91506145718361404d565b9250826145815761458061452c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006145e8602f83613f3a565b91506145f38261458c565b604082019050919050565b60006020820190508181036000830152614617816145db565b9050919050565b60006146298261404d565b91506146348361404d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614669576146686144a3565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006146aa601d83613f3a565b91506146b582614674565b602082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061473c603983613f3a565b9150614747826146e0565b604082019050919050565b6000602082019050818103600083015261476b8161472f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006147ce602483613f3a565b91506147d982614772565b604082019050919050565b600060208201905081810360008301526147fd816147c1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614860603583613f3a565b915061486b82614804565b604082019050919050565b6000602082019050818103600083015261488f81614853565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006148f2603483613f3a565b91506148fd82614896565b604082019050919050565b60006020820190508181036000830152614921816148e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614984602683613f3a565b915061498f82614928565b604082019050919050565b600060208201905081810360008301526149b381614977565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149f0601b83613f3a565b91506149fb826149ba565b602082019050919050565b60006020820190508181036000830152614a1f816149e3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a82602483613f3a565b9150614a8d82614a26565b604082019050919050565b60006020820190508181036000830152614ab181614a75565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b14602283613f3a565b9150614b1f82614ab8565b604082019050919050565b60006020820190508181036000830152614b4381614b07565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ba6602583613f3a565b9150614bb182614b4a565b604082019050919050565b60006020820190508181036000830152614bd581614b99565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c38602383613f3a565b9150614c4382614bdc565b604082019050919050565b60006020820190508181036000830152614c6781614c2b565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614cca603183613f3a565b9150614cd582614c6e565b604082019050919050565b60006020820190508181036000830152614cf981614cbd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d36601683613f3a565b9150614d4182614d00565b602082019050919050565b60006020820190508181036000830152614d6581614d29565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614dee604983613f3a565b9150614df982614d6c565b606082019050919050565b60006020820190508181036000830152614e1d81614de1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614e80603583613f3a565b9150614e8b82614e24565b604082019050919050565b60006020820190508181036000830152614eaf81614e73565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614eec601383613f3a565b9150614ef782614eb6565b602082019050919050565b60006020820190508181036000830152614f1b81614edf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614f7e603683613f3a565b9150614f8982614f22565b604082019050919050565b60006020820190508181036000830152614fad81614f71565b9050919050565b6000614fbf8261404d565b9150614fca8361404d565b925082821015614fdd57614fdc6144a3565b5b828203905092915050565b600081905092915050565b50565b6000615003600083614fe8565b915061500e82614ff3565b600082019050919050565b600061502482614ff6565b9150819050919050565b600060608201905061504360008301866141a0565b61505060208301856141a0565b61505d60408301846141a0565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150c1602183613f3a565b91506150cc82615065565b604082019050919050565b600060208201905081810360008301526150f0816150b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061516481614021565b92915050565b6000602082840312156151805761517f613fea565b5b600061518e84828501615155565b91505092915050565b6000819050919050565b60006151bc6151b76151b284615197565b614126565b61404d565b9050919050565b6151cc816151a1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152078161400f565b82525050565b600061521983836151fe565b60208301905092915050565b6000602082019050919050565b600061523d826151d2565b61524781856151dd565b9350615252836151ee565b8060005b8381101561528357815161526a888261520d565b975061527583615225565b925050600181019050615256565b5085935050505092915050565b600060a0820190506152a560008301886141a0565b6152b260208301876151c3565b81810360408301526152c48186615232565b90506152d36060830185614281565b6152e060808301846141a0565b9695505050505050565b600060c0820190506152ff6000830189614281565b61530c60208301886141a0565b61531960408301876151c3565b61532660608301866151c3565b6153336080830185614281565b61534060a08301846141a0565b979650505050505050565b60008151905061535a81614057565b92915050565b60008060006060848603121561537957615378613fea565b5b60006153878682870161534b565b93505060206153988682870161534b565b92505060406153a98682870161534b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204f756f42b71e49e153396033674443ea5f8e9dbce85f4e90711a05d81d9ae18264736f6c634300080f0033
Deployed Bytecode Sourcemap
29345:15372:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7446:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9620:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30869:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29420:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8569:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37502:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30583:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30543;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35081:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10272:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8410:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11037:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29478:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29746:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37667:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30400:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30435;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29826:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8741:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21948:148;;;;;;;;;;;;;:::i;:::-;;34295:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35548:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35898:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34094:148;;;;;;;;;;;;;:::i;:::-;;21304:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35789:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7666:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36833:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30366:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30623:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30508:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11759:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30295:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9082:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37285:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31092:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29786:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36642:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36264:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35324:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30212:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29630:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34686:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30261:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9321:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29672:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34477:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30329:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22252:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30470:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29712:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7446:100;7500:13;7533:5;7526:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7446:100;:::o;9620:169::-;9703:4;9720:39;9729:12;:10;:12::i;:::-;9743:7;9752:6;9720:8;:39::i;:::-;9777:4;9770:11;;9620:169;;;;:::o;30869:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29420:51::-;;;:::o;8569:108::-;8630:7;8657:12;;8650:19;;8569:108;:::o;37502:157::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37609:9:::1;;;;;;;;;;;37581:38;;37598:9;37581:38;;;;;;;;;;;;37642:9;37630;;:21;;;;;;;;;;;;;;;;;;37502:157:::0;:::o;30583:33::-;;;;:::o;30543:::-;;;;:::o;35081:234::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35200:4:::1;35194;35190:1;35174:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35173:31;;;;:::i;:::-;35163:6;:41;;35155:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35300:6;35290;:17;;;;:::i;:::-;35267:20;:40;;;;35081:234:::0;:::o;10272:355::-;10412:4;10429:36;10439:6;10447:9;10458:6;10429:9;:36::i;:::-;10476:121;10485:6;10493:12;:10;:12::i;:::-;10507:89;10545:6;10507:89;;;;;;;;;;;;;;;;;:11;:19;10519:6;10507:19;;;;;;;;;;;;;;;:33;10527:12;:10;:12::i;:::-;10507:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10476:8;:121::i;:::-;10615:4;10608:11;;10272:355;;;;;:::o;8410:93::-;8468:5;8493:2;8486:9;;8410:93;:::o;11037:218::-;11125:4;11142:83;11151:12;:10;:12::i;:::-;11165:7;11174:50;11213:10;11174:11;:25;11186:12;:10;:12::i;:::-;11174:25;;;;;;;;;;;;;;;:34;11200:7;11174:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11142:8;:83::i;:::-;11243:4;11236:11;;11037:218;;;;:::o;29478:38::-;;;:::o;29746:33::-;;;;;;;;;;;;;:::o;37667:125::-;37732:4;37756:19;:28;37776:7;37756:28;;;;;;;;;;;;;;;;;;;;;;;;;37749:35;;37667:125;;;:::o;30400:28::-;;;;:::o;30435:::-;;;;:::o;29826:31::-;;;;;;;;;;;;;:::o;8741:127::-;8815:7;8842:9;:18;8852:7;8842:18;;;;;;;;;;;;;;;;8835:25;;8741:127;;;:::o;21948:148::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22055:1:::1;22018:40;;22039:6;;;;;;;;;;;22018:40;;;;;;;;;;;;22086:1;22069:6;;:19;;;;;;;;;;;;;;;;;;21948:148::o:0;34295:120::-;34347:4;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34380:5:::1;34363:14;;:22;;;;;;;;;;;;;;;;;;34403:4;34396:11;;34295:120:::0;:::o;35548:144::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35680:4:::1;35638:31;:39;35670:6;35638:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35548:144:::0;;:::o;35898:357::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36026:10:::1;36011:12;:25;;;;36065:13;36047:15;:31;;;;36101:7;36089:9;:19;;;;36167:9;;36149:15;;36134:12;;:30;;;;:::i;:::-;:42;;;;:::i;:::-;36119:12;:57;;;;36211:2;36195:12;;:18;;36187:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35898:357:::0;;;:::o;34094:148::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34165:4:::1;34149:13;;:20;;;;;;;;;;;;;;;;;;34194:4;34180:11;;:18;;;;;;;;;;;;;;;;;;34222:12;34209:10;:25;;;;34094:148::o:0;21304:79::-;21342:7;21369:6;;;;;;;;;;;21362:13;;21304:79;:::o;35789:101::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35875:7:::1;35861:11;;:21;;;;;;;;;;;;;;;;;;35789:101:::0;:::o;7666:104::-;7722:13;7755:7;7748:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7666:104;:::o;36833:245::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36940:13:::1;36932:21;;:4;:21;;::::0;36924:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;37029:41;37058:4;37064:5;37029:28;:41::i;:::-;36833:245:::0;;:::o;30366:24::-;;;;:::o;30623:27::-;;;;:::o;30508:25::-;;;;:::o;11759:269::-;11852:4;11869:129;11878:12;:10;:12::i;:::-;11892:7;11901:96;11940:15;11901:96;;;;;;;;;;;;;;;;;:11;:25;11913:12;:10;:12::i;:::-;11901:25;;;;;;;;;;;;;;;:34;11927:7;11901:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11869:8;:129::i;:::-;12016:4;12009:11;;11759:269;;;;:::o;30295:27::-;;;;:::o;9082:175::-;9168:4;9185:42;9195:12;:10;:12::i;:::-;9209:9;9220:6;9185:9;:42::i;:::-;9245:4;9238:11;;9082:175;;;;:::o;37285:208::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37422:15:::1;;;;;;;;;;;37379:59;;37402:18;37379:59;;;;;;;;;;;;37467:18;37449:15;;:36;;;;;;;;;;;;;;;;;;37285:208:::0;:::o;31092:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29786:33::-;;;;;;;;;;;;;:::o;36642:182::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36758:8:::1;36727:19;:28;36747:7;36727:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36798:7;36782:34;;;36807:8;36782:34;;;;;;:::i;:::-;;;;;;;;36642:182:::0;;:::o;36264:366::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36394:10:::1;36378:13;:26;;;;36434:13;36415:16;:32;;;;36471:7;36458:10;:20;;;;36540:10;;36521:16;;36505:13;;:32;;;;:::i;:::-;:45;;;;:::i;:::-;36489:13;:61;;;;36586:2;36569:13;;:19;;36561:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36264:366:::0;;;:::o;35324:215::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35446:4:::1;35440;35436:1;35420:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35419:31;;;;:::i;:::-;35409:6;:41;;35401:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;35524:6;35514;:17;;;;:::i;:::-;35502:9;:29;;;;35324:215:::0;:::o;30212:39::-;;;;;;;;;;;;;:::o;29630:35::-;;;;:::o;34686:386::-;34767:4;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34824:6:::1;34820:1;34804:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34791:9;:39;;34783:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34940:4;34936:1;34920:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34907:9;:37;;34899:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35033:9;35012:18;:30;;;;35060:4;35053:11;;34686:386:::0;;;:::o;30261:27::-;;;;:::o;9321:151::-;9410:7;9437:11;:18;9449:5;9437:18;;;;;;;;;;;;;;;:27;9456:7;9437:27;;;;;;;;;;;;;;;;9430:34;;9321:151;;;;:::o;29672:33::-;;;;:::o;34477:134::-;34537:4;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34576:5:::1;34553:20;;:28;;;;;;;;;;;;;;;;;;34599:4;34592:11;;34477:134:::0;:::o;30329:30::-;;;;:::o;22252:244::-;21527:12;:10;:12::i;:::-;21517:22;;:6;;;;;;;;;;;:22;;;21509:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22361:1:::1;22341:22;;:8;:22;;::::0;22333:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22451:8;22422:38;;22443:6;;;;;;;;;;;22422:38;;;;;;;;;;;;22480:8;22471:6;;:17;;;;;;;;;;;;;;;;;;22252:244:::0;:::o;30470:31::-;;;;:::o;29712:24::-;;;;:::o;16336:182::-;16394:7;16414:9;16430:1;16426;:5;;;;:::i;:::-;16414:17;;16455:1;16450;:6;;16442:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16509:1;16502:8;;;16336:182;;;;:::o;137:98::-;190:7;217:10;210:17;;137:98;:::o;14955:381::-;15108:1;15091:19;;:5;:19;;;15083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15189:1;15170:21;;:7;:21;;;15162:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15274:6;15244:11;:18;15256:5;15244:18;;;;;;;;;;;;;;;:27;15263:7;15244:27;;;;;;;;;;;;;;;:36;;;;15312:7;15296:32;;15305:5;15296:32;;;15321:6;15296:32;;;;;;:::i;:::-;;;;;;;;14955:381;;;:::o;37852:4150::-;38000:1;37984:18;;:4;:18;;;37976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38077:1;38063:16;;:2;:16;;;38055:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38139:10;:14;38150:2;38139:14;;;;;;;;;;;;;;;;;;;;;;;;;38138:15;:36;;;;;38158:10;:16;38169:4;38158:16;;;;;;;;;;;;;;;;;;;;;;;;;38157:17;38138:36;38130:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38253:1;38243:6;:11;38240:92;;38271:28;38287:4;38293:2;38297:1;38271:15;:28::i;:::-;38314:7;;38240:92;38348:14;;;;;;;;;;;38345:1812;;;38408:7;:5;:7::i;:::-;38400:15;;:4;:15;;;;:49;;;;;38442:7;:5;:7::i;:::-;38436:13;;:2;:13;;;;38400:49;:86;;;;;38484:1;38470:16;;:2;:16;;;;38400:86;:128;;;;;38521:6;38507:21;;:2;:21;;;;38400:128;:158;;;;;38550:8;;;;;;;;;;;38549:9;38400:158;38378:1768;;;38596:13;;;;;;;;;;;38592:148;;38641:19;:25;38661:4;38641:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38670:19;:23;38690:2;38670:23;;;;;;;;;;;;;;;;;;;;;;;;;38641:52;38633:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38592:148;38899:20;;;;;;;;;;;38895:424;;;38953:7;:5;:7::i;:::-;38947:13;;:2;:13;;;;:47;;;;;38978:15;38964:30;;:2;:30;;;;38947:47;:79;;;;;39012:13;38998:28;;:2;:28;;;;38947:79;38943:357;;;39105:12;39062:28;:39;39091:9;39062:39;;;;;;;;;;;;;;;;:55;;39054:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;39264:12;39222:28;:39;39251:9;39222:39;;;;;;;;;;;;;;;:54;;;;38943:357;38895:424;39372:25;:31;39398:4;39372:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39408:31;:35;39440:2;39408:35;;;;;;;;;;;;;;;;;;;;;;;;;39407:36;39372:71;39368:763;;;39490:20;;39480:6;:30;;39472:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39629:9;;39612:13;39622:2;39612:9;:13::i;:::-;39603:6;:22;;;;:::i;:::-;:35;;39595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39368:763;;;39741:25;:29;39767:2;39741:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39775:31;:37;39807:4;39775:37;;;;;;;;;;;;;;;;;;;;;;;;;39774:38;39741:71;39737:394;;;39859:20;;39849:6;:30;;39841:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;39737:394;;;39985:31;:35;40017:2;39985:35;;;;;;;;;;;;;;;;;;;;;;;;;39981:150;;40078:9;;40061:13;40071:2;40061:9;:13::i;:::-;40052:6;:22;;;;:::i;:::-;:35;;40044:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39981:150;39737:394;39368:763;38378:1768;38345:1812;40179:28;40210:24;40228:4;40210:9;:24::i;:::-;40179:55;;40248:12;40287:18;;40263:20;:42;;40248:57;;40337:7;:35;;;;;40361:11;;;;;;;;;;;40337:35;:61;;;;;40390:8;;;;;;;;;;;40389:9;40337:61;:110;;;;;40416:25;:31;40442:4;40416:31;;;;;;;;;;;;;;;;;;;;;;;;;40415:32;40337:110;:153;;;;;40465:19;:25;40485:4;40465:25;;;;;;;;;;;;;;;;;;;;;;;;;40464:26;40337:153;:194;;;;;40508:19;:23;40528:2;40508:23;;;;;;;;;;;;;;;;;;;;;;;;;40507:24;40337:194;40319:328;;;40569:4;40558:8;;:15;;;;;;;;;;;;;;;;;;40591:10;:8;:10::i;:::-;40630:5;40619:8;;:16;;;;;;;;;;;;;;;;;;40319:328;40661:12;40677:8;;;;;;;;;;;40676:9;40661:24;;40787:19;:25;40807:4;40787:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40816:19;:23;40836:2;40816:23;;;;;;;;;;;;;;;;;;;;;;;;;40787:52;40784:99;;;40866:5;40856:15;;40784:99;40896:12;41000:7;40997:951;;;41051:25;:29;41077:2;41051:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41100:1;41084:13;;:17;41051:50;41047:748;;;41128:34;41158:3;41128:25;41139:13;;41128:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41121:41;;41229:13;;41210:16;;41203:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41181:18;;:61;;;;;;;:::i;:::-;;;;;;;;41297:13;;41284:10;;41277:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;41261:12;;:49;;;;;;;:::i;:::-;;;;;;;;41374:13;;41358;;41351:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;41329:18;;:58;;;;;;;:::i;:::-;;;;;;;;41047:748;;;41448:25;:31;41474:4;41448:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41498:1;41483:12;;:16;41448:51;41445:350;;;41527:33;41556:3;41527:24;41538:12;;41527:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;41520:40;;41626:12;;41608:15;;41601:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41579:18;;:59;;;;;;;:::i;:::-;;;;;;;;41692:12;;41680:9;;41673:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;41657:12;;:47;;;;;;;:::i;:::-;;;;;;;;41767:12;;41752;;41745:4;:19;;;;:::i;:::-;:34;;;;:::i;:::-;41723:18;;:56;;;;;;;:::i;:::-;;;;;;;;41445:350;41047:748;41822:1;41815:4;:8;41812:93;;;41847:42;41863:4;41877;41884;41847:15;:42::i;:::-;41812:93;41932:4;41922:14;;;;;:::i;:::-;;;40997:951;41961:33;41977:4;41983:2;41987:6;41961:15;:33::i;:::-;37965:4037;;;;37852:4150;;;;:::o;17242:193::-;17328:7;17361:1;17356;:6;;17364:12;17348:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17388:9;17404:1;17400;:5;;;;:::i;:::-;17388:17;;17426:1;17419:8;;;17242:193;;;;;:::o;37087:189::-;37204:5;37170:25;:31;37196:4;37170:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37262:5;37228:40;;37256:4;37228:40;;;;;;;;;;;;37087:189;;:::o;12519:575::-;12677:1;12659:20;;:6;:20;;;12651:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12761:1;12740:23;;:9;:23;;;12732:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12817:47;12838:6;12846:9;12857:6;12817:20;:47::i;:::-;12898:71;12920:6;12898:71;;;;;;;;;;;;;;;;;:9;:17;12908:6;12898:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12878:9;:17;12888:6;12878:17;;;;;;;;;;;;;;;:91;;;;13003:32;13028:6;13003:9;:20;13013:9;13003:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12980:9;:20;12990:9;12980:20;;;;;;;;;;;;;;;:55;;;;13068:9;13051:35;;13060:6;13051:35;;;13079:6;13051:35;;;;;;:::i;:::-;;;;;;;;12519:575;;;:::o;43146:1568::-;43185:23;43211:24;43229:4;43211:9;:24::i;:::-;43185:50;;43246:25;43316:12;;43295:18;;43274;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;43246:82;;43339:12;43387:1;43368:15;:20;:46;;;;43413:1;43392:17;:22;43368:46;43365:60;;;43417:7;;;;;43365:60;43480:2;43459:18;;:23;;;;:::i;:::-;43441:15;:41;43438:111;;;43535:2;43514:18;;:23;;;;:::i;:::-;43496:41;;43438:111;43611:23;43696:1;43676:17;43655:18;;43637:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;43611:86;;43708:26;43737:36;43757:15;43737;:19;;:36;;;;:::i;:::-;43708:65;;43787:25;43815:21;43787:49;;43850:36;43867:18;43850:16;:36::i;:::-;43901:18;43922:44;43948:17;43922:21;:25;;:44;;;;:::i;:::-;43901:65;;43980:23;44006:57;44045:17;44006:34;44021:18;;44006:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;43980:83;;44074:17;44094:51;44127:17;44094:28;44109:12;;44094:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44074:71;;44156:23;44213:9;44195:15;44182:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;44156:66;;44260:1;44239:18;:22;;;;44293:1;44272:18;:22;;;;44320:1;44305:12;:16;;;;44356:9;;;;;;;;;;;44348:23;;44379:9;44348:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44335:58;;;;;44428:1;44410:15;:19;:42;;;;;44451:1;44433:15;:19;44410:42;44407:210;;;44468:46;44481:15;44498;44468:12;:46::i;:::-;44534:71;44549:18;44569:15;44586:18;;44534:71;;;;;;;;:::i;:::-;;;;;;;;44407:210;44651:15;;;;;;;;;;;44643:29;;44680:21;44643:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44630:76;;;;;43174:1540;;;;;;;;;;43146:1568;:::o;17695:473::-;17753:7;18003:1;17998;:6;17994:47;;18028:1;18021:8;;;;17994:47;18054:9;18070:1;18066;:5;;;;:::i;:::-;18054:17;;18099:1;18094;18090;:5;;;;:::i;:::-;:10;18082:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18159:1;18152:8;;;17695:473;;;;;:::o;18645:132::-;18703:7;18730:39;18734:1;18737;18730:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18723:46;;18645:132;;;;:::o;15940:125::-;;;;:::o;16802:136::-;16860:7;16887:43;16891:1;16894;16887:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16880:50;;16802:136;;;;:::o;42011:597::-;42140:21;42178:1;42164:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42140:40;;42209:4;42191;42196:1;42191:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42235:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42225:4;42230:1;42225:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42271:62;42288:4;42303:15;42321:11;42271:8;:62::i;:::-;42373:15;:66;;;42454:11;42480:1;42524:4;42551;42571:15;42373:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42066:542;42011:597;:::o;42617:520::-;42765:62;42782:4;42797:15;42815:11;42765:8;:62::i;:::-;42871:15;:31;;;42910:9;42943:4;42963:11;42989:1;43032;43083:4;43103:15;42871:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42617:520;;:::o;19274:279::-;19360:7;19392:1;19388;:5;19395:12;19380:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19419:9;19435:1;19431;:5;;;;:::i;:::-;19419:17;;19544:1;19537:8;;;19274:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:86::-;6154:7;6194:4;6187:5;6183:16;6172:27;;6119:86;;;:::o;6211:112::-;6294:22;6310:5;6294:22;:::i;:::-;6289:3;6282:35;6211:112;;:::o;6329:214::-;6418:4;6456:2;6445:9;6441:18;6433:26;;6469:67;6533:1;6522:9;6518:17;6509:6;6469:67;:::i;:::-;6329:214;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:619::-;7713:6;7721;7729;7778:2;7766:9;7757:7;7753:23;7749:32;7746:119;;;7784:79;;:::i;:::-;7746:119;7904:1;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;:::i;:::-;7919:63;;7875:117;8031:2;8057:53;8102:7;8093:6;8082:9;8078:22;8057:53;:::i;:::-;8047:63;;8002:118;8159:2;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8130:118;7636:619;;;;;:::o;8261:323::-;8317:6;8366:2;8354:9;8345:7;8341:23;8337:32;8334:119;;;8372:79;;:::i;:::-;8334:119;8492:1;8517:50;8559:7;8550:6;8539:9;8535:22;8517:50;:::i;:::-;8507:60;;8463:114;8261:323;;;;:::o;8590:474::-;8658:6;8666;8715:2;8703:9;8694:7;8690:23;8686:32;8683:119;;;8721:79;;:::i;:::-;8683:119;8841:1;8866:53;8911:7;8902:6;8891:9;8887:22;8866:53;:::i;:::-;8856:63;;8812:117;8968:2;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8939:118;8590:474;;;;;:::o;9070:180::-;9118:77;9115:1;9108:88;9215:4;9212:1;9205:15;9239:4;9236:1;9229:15;9256:320;9300:6;9337:1;9331:4;9327:12;9317:22;;9384:1;9378:4;9374:12;9405:18;9395:81;;9461:4;9453:6;9449:17;9439:27;;9395:81;9523:2;9515:6;9512:14;9492:18;9489:38;9486:84;;9542:18;;:::i;:::-;9486:84;9307:269;9256:320;;;:::o;9582:182::-;9722:34;9718:1;9710:6;9706:14;9699:58;9582:182;:::o;9770:366::-;9912:3;9933:67;9997:2;9992:3;9933:67;:::i;:::-;9926:74;;10009:93;10098:3;10009:93;:::i;:::-;10127:2;10122:3;10118:12;10111:19;;9770:366;;;:::o;10142:419::-;10308:4;10346:2;10335:9;10331:18;10323:26;;10395:9;10389:4;10385:20;10381:1;10370:9;10366:17;10359:47;10423:131;10549:4;10423:131;:::i;:::-;10415:139;;10142:419;;;:::o;10567:180::-;10615:77;10612:1;10605:88;10712:4;10709:1;10702:15;10736:4;10733:1;10726:15;10753:348;10793:7;10816:20;10834:1;10816:20;:::i;:::-;10811:25;;10850:20;10868:1;10850:20;:::i;:::-;10845:25;;11038:1;10970:66;10966:74;10963:1;10960:81;10955:1;10948:9;10941:17;10937:105;10934:131;;;11045:18;;:::i;:::-;10934:131;11093:1;11090;11086:9;11075:20;;10753:348;;;;:::o;11107:180::-;11155:77;11152:1;11145:88;11252:4;11249:1;11242:15;11276:4;11273:1;11266:15;11293:185;11333:1;11350:20;11368:1;11350:20;:::i;:::-;11345:25;;11384:20;11402:1;11384:20;:::i;:::-;11379:25;;11423:1;11413:35;;11428:18;;:::i;:::-;11413:35;11470:1;11467;11463:9;11458:14;;11293:185;;;;:::o;11484:234::-;11624:34;11620:1;11612:6;11608:14;11601:58;11693:17;11688:2;11680:6;11676:15;11669:42;11484:234;:::o;11724:366::-;11866:3;11887:67;11951:2;11946:3;11887:67;:::i;:::-;11880:74;;11963:93;12052:3;11963:93;:::i;:::-;12081:2;12076:3;12072:12;12065:19;;11724:366;;;:::o;12096:419::-;12262:4;12300:2;12289:9;12285:18;12277:26;;12349:9;12343:4;12339:20;12335:1;12324:9;12320:17;12313:47;12377:131;12503:4;12377:131;:::i;:::-;12369:139;;12096:419;;;:::o;12521:305::-;12561:3;12580:20;12598:1;12580:20;:::i;:::-;12575:25;;12614:20;12632:1;12614:20;:::i;:::-;12609:25;;12768:1;12700:66;12696:74;12693:1;12690:81;12687:107;;;12774:18;;:::i;:::-;12687:107;12818:1;12815;12811:9;12804:16;;12521:305;;;;:::o;12832:179::-;12972:31;12968:1;12960:6;12956:14;12949:55;12832:179;:::o;13017:366::-;13159:3;13180:67;13244:2;13239:3;13180:67;:::i;:::-;13173:74;;13256:93;13345:3;13256:93;:::i;:::-;13374:2;13369:3;13365:12;13358:19;;13017:366;;;:::o;13389:419::-;13555:4;13593:2;13582:9;13578:18;13570:26;;13642:9;13636:4;13632:20;13628:1;13617:9;13613:17;13606:47;13670:131;13796:4;13670:131;:::i;:::-;13662:139;;13389:419;;;:::o;13814:244::-;13954:34;13950:1;13942:6;13938:14;13931:58;14023:27;14018:2;14010:6;14006:15;13999:52;13814:244;:::o;14064:366::-;14206:3;14227:67;14291:2;14286:3;14227:67;:::i;:::-;14220:74;;14303:93;14392:3;14303:93;:::i;:::-;14421:2;14416:3;14412:12;14405:19;;14064:366;;;:::o;14436:419::-;14602:4;14640:2;14629:9;14625:18;14617:26;;14689:9;14683:4;14679:20;14675:1;14664:9;14660:17;14653:47;14717:131;14843:4;14717:131;:::i;:::-;14709:139;;14436:419;;;:::o;14861:223::-;15001:34;14997:1;14989:6;14985:14;14978:58;15070:6;15065:2;15057:6;15053:15;15046:31;14861:223;:::o;15090:366::-;15232:3;15253:67;15317:2;15312:3;15253:67;:::i;:::-;15246:74;;15329:93;15418:3;15329:93;:::i;:::-;15447:2;15442:3;15438:12;15431:19;;15090:366;;;:::o;15462:419::-;15628:4;15666:2;15655:9;15651:18;15643:26;;15715:9;15709:4;15705:20;15701:1;15690:9;15686:17;15679:47;15743:131;15869:4;15743:131;:::i;:::-;15735:139;;15462:419;;;:::o;15887:240::-;16027:34;16023:1;16015:6;16011:14;16004:58;16096:23;16091:2;16083:6;16079:15;16072:48;15887:240;:::o;16133:366::-;16275:3;16296:67;16360:2;16355:3;16296:67;:::i;:::-;16289:74;;16372:93;16461:3;16372:93;:::i;:::-;16490:2;16485:3;16481:12;16474:19;;16133:366;;;:::o;16505:419::-;16671:4;16709:2;16698:9;16694:18;16686:26;;16758:9;16752:4;16748:20;16744:1;16733:9;16729:17;16722:47;16786:131;16912:4;16786:131;:::i;:::-;16778:139;;16505:419;;;:::o;16930:239::-;17070:34;17066:1;17058:6;17054:14;17047:58;17139:22;17134:2;17126:6;17122:15;17115:47;16930:239;:::o;17175:366::-;17317:3;17338:67;17402:2;17397:3;17338:67;:::i;:::-;17331:74;;17414:93;17503:3;17414:93;:::i;:::-;17532:2;17527:3;17523:12;17516:19;;17175:366;;;:::o;17547:419::-;17713:4;17751:2;17740:9;17736:18;17728:26;;17800:9;17794:4;17790:20;17786:1;17775:9;17771:17;17764:47;17828:131;17954:4;17828:131;:::i;:::-;17820:139;;17547:419;;;:::o;17972:225::-;18112:34;18108:1;18100:6;18096:14;18089:58;18181:8;18176:2;18168:6;18164:15;18157:33;17972:225;:::o;18203:366::-;18345:3;18366:67;18430:2;18425:3;18366:67;:::i;:::-;18359:74;;18442:93;18531:3;18442:93;:::i;:::-;18560:2;18555:3;18551:12;18544:19;;18203:366;;;:::o;18575:419::-;18741:4;18779:2;18768:9;18764:18;18756:26;;18828:9;18822:4;18818:20;18814:1;18803:9;18799:17;18792:47;18856:131;18982:4;18856:131;:::i;:::-;18848:139;;18575:419;;;:::o;19000:177::-;19140:29;19136:1;19128:6;19124:14;19117:53;19000:177;:::o;19183:366::-;19325:3;19346:67;19410:2;19405:3;19346:67;:::i;:::-;19339:74;;19422:93;19511:3;19422:93;:::i;:::-;19540:2;19535:3;19531:12;19524:19;;19183:366;;;:::o;19555:419::-;19721:4;19759:2;19748:9;19744:18;19736:26;;19808:9;19802:4;19798:20;19794:1;19783:9;19779:17;19772:47;19836:131;19962:4;19836:131;:::i;:::-;19828:139;;19555:419;;;:::o;19980:223::-;20120:34;20116:1;20108:6;20104:14;20097:58;20189:6;20184:2;20176:6;20172:15;20165:31;19980:223;:::o;20209:366::-;20351:3;20372:67;20436:2;20431:3;20372:67;:::i;:::-;20365:74;;20448:93;20537:3;20448:93;:::i;:::-;20566:2;20561:3;20557:12;20550:19;;20209:366;;;:::o;20581:419::-;20747:4;20785:2;20774:9;20770:18;20762:26;;20834:9;20828:4;20824:20;20820:1;20809:9;20805:17;20798:47;20862:131;20988:4;20862:131;:::i;:::-;20854:139;;20581:419;;;:::o;21006:221::-;21146:34;21142:1;21134:6;21130:14;21123:58;21215:4;21210:2;21202:6;21198:15;21191:29;21006:221;:::o;21233:366::-;21375:3;21396:67;21460:2;21455:3;21396:67;:::i;:::-;21389:74;;21472:93;21561:3;21472:93;:::i;:::-;21590:2;21585:3;21581:12;21574:19;;21233:366;;;:::o;21605:419::-;21771:4;21809:2;21798:9;21794:18;21786:26;;21858:9;21852:4;21848:20;21844:1;21833:9;21829:17;21822:47;21886:131;22012:4;21886:131;:::i;:::-;21878:139;;21605:419;;;:::o;22030:224::-;22170:34;22166:1;22158:6;22154:14;22147:58;22239:7;22234:2;22226:6;22222:15;22215:32;22030:224;:::o;22260:366::-;22402:3;22423:67;22487:2;22482:3;22423:67;:::i;:::-;22416:74;;22499:93;22588:3;22499:93;:::i;:::-;22617:2;22612:3;22608:12;22601:19;;22260:366;;;:::o;22632:419::-;22798:4;22836:2;22825:9;22821:18;22813:26;;22885:9;22879:4;22875:20;22871:1;22860:9;22856:17;22849:47;22913:131;23039:4;22913:131;:::i;:::-;22905:139;;22632:419;;;:::o;23057:222::-;23197:34;23193:1;23185:6;23181:14;23174:58;23266:5;23261:2;23253:6;23249:15;23242:30;23057:222;:::o;23285:366::-;23427:3;23448:67;23512:2;23507:3;23448:67;:::i;:::-;23441:74;;23524:93;23613:3;23524:93;:::i;:::-;23642:2;23637:3;23633:12;23626:19;;23285:366;;;:::o;23657:419::-;23823:4;23861:2;23850:9;23846:18;23838:26;;23910:9;23904:4;23900:20;23896:1;23885:9;23881:17;23874:47;23938:131;24064:4;23938:131;:::i;:::-;23930:139;;23657:419;;;:::o;24082:236::-;24222:34;24218:1;24210:6;24206:14;24199:58;24291:19;24286:2;24278:6;24274:15;24267:44;24082:236;:::o;24324:366::-;24466:3;24487:67;24551:2;24546:3;24487:67;:::i;:::-;24480:74;;24563:93;24652:3;24563:93;:::i;:::-;24681:2;24676:3;24672:12;24665:19;;24324:366;;;:::o;24696:419::-;24862:4;24900:2;24889:9;24885:18;24877:26;;24949:9;24943:4;24939:20;24935:1;24924:9;24920:17;24913:47;24977:131;25103:4;24977:131;:::i;:::-;24969:139;;24696:419;;;:::o;25121:172::-;25261:24;25257:1;25249:6;25245:14;25238:48;25121:172;:::o;25299:366::-;25441:3;25462:67;25526:2;25521:3;25462:67;:::i;:::-;25455:74;;25538:93;25627:3;25538:93;:::i;:::-;25656:2;25651:3;25647:12;25640:19;;25299:366;;;:::o;25671:419::-;25837:4;25875:2;25864:9;25860:18;25852:26;;25924:9;25918:4;25914:20;25910:1;25899:9;25895:17;25888:47;25952:131;26078:4;25952:131;:::i;:::-;25944:139;;25671:419;;;:::o;26096:297::-;26236:34;26232:1;26224:6;26220:14;26213:58;26305:34;26300:2;26292:6;26288:15;26281:59;26374:11;26369:2;26361:6;26357:15;26350:36;26096:297;:::o;26399:366::-;26541:3;26562:67;26626:2;26621:3;26562:67;:::i;:::-;26555:74;;26638:93;26727:3;26638:93;:::i;:::-;26756:2;26751:3;26747:12;26740:19;;26399:366;;;:::o;26771:419::-;26937:4;26975:2;26964:9;26960:18;26952:26;;27024:9;27018:4;27014:20;27010:1;26999:9;26995:17;26988:47;27052:131;27178:4;27052:131;:::i;:::-;27044:139;;26771:419;;;:::o;27196:240::-;27336:34;27332:1;27324:6;27320:14;27313:58;27405:23;27400:2;27392:6;27388:15;27381:48;27196:240;:::o;27442:366::-;27584:3;27605:67;27669:2;27664:3;27605:67;:::i;:::-;27598:74;;27681:93;27770:3;27681:93;:::i;:::-;27799:2;27794:3;27790:12;27783:19;;27442:366;;;:::o;27814:419::-;27980:4;28018:2;28007:9;28003:18;27995:26;;28067:9;28061:4;28057:20;28053:1;28042:9;28038:17;28031:47;28095:131;28221:4;28095:131;:::i;:::-;28087:139;;27814:419;;;:::o;28239:169::-;28379:21;28375:1;28367:6;28363:14;28356:45;28239:169;:::o;28414:366::-;28556:3;28577:67;28641:2;28636:3;28577:67;:::i;:::-;28570:74;;28653:93;28742:3;28653:93;:::i;:::-;28771:2;28766:3;28762:12;28755:19;;28414:366;;;:::o;28786:419::-;28952:4;28990:2;28979:9;28975:18;28967:26;;29039:9;29033:4;29029:20;29025:1;29014:9;29010:17;29003:47;29067:131;29193:4;29067:131;:::i;:::-;29059:139;;28786:419;;;:::o;29211:241::-;29351:34;29347:1;29339:6;29335:14;29328:58;29420:24;29415:2;29407:6;29403:15;29396:49;29211:241;:::o;29458:366::-;29600:3;29621:67;29685:2;29680:3;29621:67;:::i;:::-;29614:74;;29697:93;29786:3;29697:93;:::i;:::-;29815:2;29810:3;29806:12;29799:19;;29458:366;;;:::o;29830:419::-;29996:4;30034:2;30023:9;30019:18;30011:26;;30083:9;30077:4;30073:20;30069:1;30058:9;30054:17;30047:47;30111:131;30237:4;30111:131;:::i;:::-;30103:139;;29830:419;;;:::o;30255:191::-;30295:4;30315:20;30333:1;30315:20;:::i;:::-;30310:25;;30349:20;30367:1;30349:20;:::i;:::-;30344:25;;30388:1;30385;30382:8;30379:34;;;30393:18;;:::i;:::-;30379:34;30438:1;30435;30431:9;30423:17;;30255:191;;;;:::o;30452:147::-;30553:11;30590:3;30575:18;;30452:147;;;;:::o;30605:114::-;;:::o;30725:398::-;30884:3;30905:83;30986:1;30981:3;30905:83;:::i;:::-;30898:90;;30997:93;31086:3;30997:93;:::i;:::-;31115:1;31110:3;31106:11;31099:18;;30725:398;;;:::o;31129:379::-;31313:3;31335:147;31478:3;31335:147;:::i;:::-;31328:154;;31499:3;31492:10;;31129:379;;;:::o;31514:442::-;31663:4;31701:2;31690:9;31686:18;31678:26;;31714:71;31782:1;31771:9;31767:17;31758:6;31714:71;:::i;:::-;31795:72;31863:2;31852:9;31848:18;31839:6;31795:72;:::i;:::-;31877;31945:2;31934:9;31930:18;31921:6;31877:72;:::i;:::-;31514:442;;;;;;:::o;31962:220::-;32102:34;32098:1;32090:6;32086:14;32079:58;32171:3;32166:2;32158:6;32154:15;32147:28;31962:220;:::o;32188:366::-;32330:3;32351:67;32415:2;32410:3;32351:67;:::i;:::-;32344:74;;32427:93;32516:3;32427:93;:::i;:::-;32545:2;32540:3;32536:12;32529:19;;32188:366;;;:::o;32560:419::-;32726:4;32764:2;32753:9;32749:18;32741:26;;32813:9;32807:4;32803:20;32799:1;32788:9;32784:17;32777:47;32841:131;32967:4;32841:131;:::i;:::-;32833:139;;32560:419;;;:::o;32985:180::-;33033:77;33030:1;33023:88;33130:4;33127:1;33120:15;33154:4;33151:1;33144:15;33171:180;33219:77;33216:1;33209:88;33316:4;33313:1;33306:15;33340:4;33337:1;33330:15;33357:143;33414:5;33445:6;33439:13;33430:22;;33461:33;33488:5;33461:33;:::i;:::-;33357:143;;;;:::o;33506:351::-;33576:6;33625:2;33613:9;33604:7;33600:23;33596:32;33593:119;;;33631:79;;:::i;:::-;33593:119;33751:1;33776:64;33832:7;33823:6;33812:9;33808:22;33776:64;:::i;:::-;33766:74;;33722:128;33506:351;;;;:::o;33863:85::-;33908:7;33937:5;33926:16;;33863:85;;;:::o;33954:158::-;34012:9;34045:61;34063:42;34072:32;34098:5;34072:32;:::i;:::-;34063:42;:::i;:::-;34045:61;:::i;:::-;34032:74;;33954:158;;;:::o;34118:147::-;34213:45;34252:5;34213:45;:::i;:::-;34208:3;34201:58;34118:147;;:::o;34271:114::-;34338:6;34372:5;34366:12;34356:22;;34271:114;;;:::o;34391:184::-;34490:11;34524:6;34519:3;34512:19;34564:4;34559:3;34555:14;34540:29;;34391:184;;;;:::o;34581:132::-;34648:4;34671:3;34663:11;;34701:4;34696:3;34692:14;34684:22;;34581:132;;;:::o;34719:108::-;34796:24;34814:5;34796:24;:::i;:::-;34791:3;34784:37;34719:108;;:::o;34833:179::-;34902:10;34923:46;34965:3;34957:6;34923:46;:::i;:::-;35001:4;34996:3;34992:14;34978:28;;34833:179;;;;:::o;35018:113::-;35088:4;35120;35115:3;35111:14;35103:22;;35018:113;;;:::o;35167:732::-;35286:3;35315:54;35363:5;35315:54;:::i;:::-;35385:86;35464:6;35459:3;35385:86;:::i;:::-;35378:93;;35495:56;35545:5;35495:56;:::i;:::-;35574:7;35605:1;35590:284;35615:6;35612:1;35609:13;35590:284;;;35691:6;35685:13;35718:63;35777:3;35762:13;35718:63;:::i;:::-;35711:70;;35804:60;35857:6;35804:60;:::i;:::-;35794:70;;35650:224;35637:1;35634;35630:9;35625:14;;35590:284;;;35594:14;35890:3;35883:10;;35291:608;;;35167:732;;;;:::o;35905:831::-;36168:4;36206:3;36195:9;36191:19;36183:27;;36220:71;36288:1;36277:9;36273:17;36264:6;36220:71;:::i;:::-;36301:80;36377:2;36366:9;36362:18;36353:6;36301:80;:::i;:::-;36428:9;36422:4;36418:20;36413:2;36402:9;36398:18;36391:48;36456:108;36559:4;36550:6;36456:108;:::i;:::-;36448:116;;36574:72;36642:2;36631:9;36627:18;36618:6;36574:72;:::i;:::-;36656:73;36724:3;36713:9;36709:19;36700:6;36656:73;:::i;:::-;35905:831;;;;;;;;:::o;36742:807::-;36991:4;37029:3;37018:9;37014:19;37006:27;;37043:71;37111:1;37100:9;37096:17;37087:6;37043:71;:::i;:::-;37124:72;37192:2;37181:9;37177:18;37168:6;37124:72;:::i;:::-;37206:80;37282:2;37271:9;37267:18;37258:6;37206:80;:::i;:::-;37296;37372:2;37361:9;37357:18;37348:6;37296:80;:::i;:::-;37386:73;37454:3;37443:9;37439:19;37430:6;37386:73;:::i;:::-;37469;37537:3;37526:9;37522:19;37513:6;37469:73;:::i;:::-;36742:807;;;;;;;;;:::o;37555:143::-;37612:5;37643:6;37637:13;37628:22;;37659:33;37686:5;37659:33;:::i;:::-;37555:143;;;;:::o;37704:663::-;37792:6;37800;37808;37857:2;37845:9;37836:7;37832:23;37828:32;37825:119;;;37863:79;;:::i;:::-;37825:119;37983:1;38008:64;38064:7;38055:6;38044:9;38040:22;38008:64;:::i;:::-;37998:74;;37954:128;38121:2;38147:64;38203:7;38194:6;38183:9;38179:22;38147:64;:::i;:::-;38137:74;;38092:129;38260:2;38286:64;38342:7;38333:6;38322:9;38318:22;38286:64;:::i;:::-;38276:74;;38231:129;37704:663;;;;;:::o
Swarm Source
ipfs://4f756f42b71e49e153396033674443ea5f8e9dbce85f4e90711a05d81d9ae182
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.