ERC-20
Overview
Max Total Supply
1,000,000,000,000 GalaReborn
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.988917835380921595 GalaRebornValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GalaReborn
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-03 */ // SPDX-License-Identifier: Unlicensed /* https://t.me/GalaRebornEntryPortal Taxes: 2% buy/sell */ pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event 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 GalaReborn is ERC20, Ownable { //NAME 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 buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; 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("Gala Reborn", "GalaReborn") { //NAME 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 _buyMarketingFee = 6; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 5; uint256 _sellLiquidityFee = 2; uint256 _sellDevFee = 0; uint256 totalSupply = 1 * 1e12 * 1e18; maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 20 / 1000; // 2% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // 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 + 1; } // 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 updateTaxes( uint256 marketingFee, uint256 liquidityFee, uint256 devFee, uint256 marketingFeeSell, uint256 liquidityFeeSell, uint256 devFeeSell ) external onlyOwner { buyMarketingFee = marketingFee; buyLiquidityFee = liquidityFee; buyDevFee = devFee; sellMarketingFee = marketingFeeSell; sellLiquidityFee = liquidityFeeSell; sellDevFee = devFeeSell; } function setAllBuyFeesToZero() external onlyOwner { buyMarketingFee = 0; buyLiquidityFee = 0; buyDevFee = 0; } function setAllFeesToZero() external onlyOwner { buyMarketingFee = 0; buyLiquidityFee = 0; buyDevFee = 0; sellMarketingFee = 0; sellLiquidityFee = 0; sellDevFee = 0; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 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 excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function blacklistAccount (address account, bool isBlacklisted) public onlyOwner { _blacklist[account] = isBlacklisted; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function 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]; } 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 * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { //fees = launchedAt >= block.number ? amount.mul(99).div(100) : amount.mul(buyTotalFees).div(100); fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable 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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setAllBuyFeesToZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAllFeesToZero","outputs":[],"stateMutability":"nonpayable","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":"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":"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"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"devFeeSell","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600b81526020017f47616c61205265626f726e0000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f47616c615265626f726e0000000000000000000000000000000000000000000081525081600390805190602001906200010292919062000bb5565b5080600490805190602001906200011b92919062000bb5565b5050506000620001306200068160201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fb8160016200068960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027657600080fd5b505afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000ccf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000ccf565b6040518363ffffffff1660e01b81526004016200036e92919062000d12565b602060405180830381600087803b1580156200038957600080fd5b505af11580156200039e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c4919062000ccf565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200040c60a05160016200068960201b60201c565b6200042160a05160016200078660201b60201c565b6000600690506000806000600590506000600290506000806c0c9f2c9cd04674edea4000000090506103e86014826200045b919062000d78565b62000467919062000e08565b6008819055506103e86014826200047f919062000d78565b6200048b919062000e08565b600a81905550612710600582620004a3919062000d78565b620004af919062000e08565b600981905550866011819055508560128190555084601381905550601354601254601154620004df919062000e40565b620004eb919062000e40565b6010819055508360158190555082601681905550816017819055506017546016546015546200051b919062000e40565b62000527919062000e40565b6014819055506200053d6200082760201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200058d6200082760201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ef620005e16200082760201b60201c565b60016200085160201b60201c565b620006023060016200085160201b60201c565b6200061761dead60016200085160201b60201c565b620006396200062b6200082760201b60201c565b60016200068960201b60201c565b6200064c3060016200068960201b60201c565b6200066161dead60016200068960201b60201c565b6200067333826200099e60201b60201c565b5050505050505050620010d1565b600033905090565b620006996200068160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200072b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007229062000efe565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008616200068160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ea9062000efe565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000992919062000f3d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a089062000faa565b60405180910390fd5b62000a256000838362000b4d60201b60201c565b62000a418160025462000b5260201b620025ec1790919060201c565b60028190555062000a9f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b5260201b620025ec1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b41919062000fdd565b60405180910390a35050565b505050565b600080828462000b63919062000e40565b90508381101562000bab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba2906200104a565b60405180910390fd5b8091505092915050565b82805462000bc3906200109b565b90600052602060002090601f01602090048101928262000be7576000855562000c33565b82601f1062000c0257805160ff191683800117855562000c33565b8280016001018555821562000c33579182015b8281111562000c3257825182559160200191906001019062000c15565b5b50905062000c42919062000c46565b5090565b5b8082111562000c6157600081600090555060010162000c47565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c978262000c6a565b9050919050565b62000ca98162000c8a565b811462000cb557600080fd5b50565b60008151905062000cc98162000c9e565b92915050565b60006020828403121562000ce85762000ce762000c65565b5b600062000cf88482850162000cb8565b91505092915050565b62000d0c8162000c8a565b82525050565b600060408201905062000d29600083018562000d01565b62000d38602083018462000d01565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d858262000d3f565b915062000d928362000d3f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dce5762000dcd62000d49565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e158262000d3f565b915062000e228362000d3f565b92508262000e355762000e3462000dd9565b5b828204905092915050565b600062000e4d8262000d3f565b915062000e5a8362000d3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e925762000e9162000d49565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ee660208362000e9d565b915062000ef38262000eae565b602082019050919050565b6000602082019050818103600083015262000f198162000ed7565b9050919050565b60008115159050919050565b62000f378162000f20565b82525050565b600060208201905062000f54600083018462000f2c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f92601f8362000e9d565b915062000f9f8262000f5a565b602082019050919050565b6000602082019050818103600083015262000fc58162000f83565b9050919050565b62000fd78162000d3f565b82525050565b600060208201905062000ff4600083018462000fcc565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001032601b8362000e9d565b91506200103f8262000ffa565b602082019050919050565b60006020820190508181036000830152620010658162001023565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010b457607f821691505b60208210811415620010cb57620010ca6200106c565b5b50919050565b60805160a0516155c36200112f6000396000818161134e01528181611aff0152612cb8015260008181610d4301528181612c6001528181613dce01528181613ebe01528181613ee501528181613f810152613fa801526155c36000f3fe60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c0246668116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610bc7578063f2fde38b14610bf2578063f637434214610c1b578063f8b45b0514610c4657610325565b8063e2f4560514610b5a578063e884f26014610b85578063ec1d547d14610bb057610325565b8063c8c8ebe4116100d1578063c8c8ebe414610a8a578063d257b34f14610ab5578063d85ba06314610af2578063dd62ed3e14610b1d57610325565b8063c024666814610a0d578063c18bc19514610a36578063c876d0b914610a5f57610325565b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb1461093f578063aacebbe31461097c578063b62496f5146109a5578063bbc0c742146109e257610325565b80639fccce32146108ac578063a0d82dc5146108d7578063a457c2d71461090257610325565b80638da5cb5b146107ae57806392136913146107d9578063924de9b71461080457806395d89b411461082d5780639a7a23d6146108585780639c3b4fdc1461088157610325565b8063395093511161026a5780636ddd171311610223578063751039fc116101fd578063751039fc146107185780637571336a146107435780637bce5a041461076c5780638a8c523c1461079757610325565b80636ddd17131461069957806370a08231146106c4578063715018a61461070157610325565b8063395093511461058757806349bd5a5e146105c45780634a62bb65146105ef5780634fbee1931461061a57806361a3996c146106575780636a486a8e1461066e57610325565b80631a8145bb116102d757806323b872dd116102b157806323b872dd146104cd5780632d5a5d341461050a578063313ce56714610533578063390270601461055e57610325565b80631a8145bb1461044e5780631f3fed8f14610479578063203e727e146104a457610325565b806306fdde031461032a578063095ea7b31461035557806310d5de53146103925780631694505e146103cf57806318160ddd146103fa5780631816467f1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c71565b60405161034c9190614160565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061421b565b610d03565b6040516103899190614276565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614291565b610d21565b6040516103c69190614276565b60405180910390f35b3480156103db57600080fd5b506103e4610d41565b6040516103f1919061431d565b60405180910390f35b34801561040657600080fd5b5061040f610d65565b60405161041c9190614347565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614291565b610d6f565b005b34801561045a57600080fd5b50610463610ec6565b6040516104709190614347565b60405180910390f35b34801561048557600080fd5b5061048e610ecc565b60405161049b9190614347565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190614362565b610ed2565b005b3480156104d957600080fd5b506104f460048036038101906104ef919061438f565b610ffc565b6040516105019190614276565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c919061440e565b6110d5565b005b34801561053f57600080fd5b506105486111c7565b604051610555919061446a565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190614485565b6111d0565b005b34801561059357600080fd5b506105ae60048036038101906105a9919061421b565b611299565b6040516105bb9190614276565b60405180910390f35b3480156105d057600080fd5b506105d961134c565b6040516105e69190614521565b60405180910390f35b3480156105fb57600080fd5b50610604611370565b6040516106119190614276565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190614291565b611383565b60405161064e9190614276565b60405180910390f35b34801561066357600080fd5b5061066c6113d9565b005b34801561067a57600080fd5b506106836114a2565b6040516106909190614347565b60405180910390f35b3480156106a557600080fd5b506106ae6114a8565b6040516106bb9190614276565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190614291565b6114bb565b6040516106f89190614347565b60405180910390f35b34801561070d57600080fd5b50610716611503565b005b34801561072457600080fd5b5061072d61165b565b60405161073a9190614276565b60405180910390f35b34801561074f57600080fd5b5061076a6004803603810190610765919061440e565b611716565b005b34801561077857600080fd5b50610781611808565b60405161078e9190614347565b60405180910390f35b3480156107a357600080fd5b506107ac61180e565b005b3480156107ba57600080fd5b506107c36118f0565b6040516107d09190614521565b60405180910390f35b3480156107e557600080fd5b506107ee61191a565b6040516107fb9190614347565b60405180910390f35b34801561081057600080fd5b5061082b6004803603810190610826919061453c565b611920565b005b34801561083957600080fd5b506108426119d4565b60405161084f9190614160565b60405180910390f35b34801561086457600080fd5b5061087f600480360381019061087a919061440e565b611a66565b005b34801561088d57600080fd5b50610896611b9a565b6040516108a39190614347565b60405180910390f35b3480156108b857600080fd5b506108c1611ba0565b6040516108ce9190614347565b60405180910390f35b3480156108e357600080fd5b506108ec611ba6565b6040516108f99190614347565b60405180910390f35b34801561090e57600080fd5b506109296004803603810190610924919061421b565b611bac565b6040516109369190614276565b60405180910390f35b34801561094b57600080fd5b506109666004803603810190610961919061421b565b611c79565b6040516109739190614276565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190614291565b611c97565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190614291565b611dee565b6040516109d99190614276565b60405180910390f35b3480156109ee57600080fd5b506109f7611e0e565b604051610a049190614276565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f919061440e565b611e21565b005b348015610a4257600080fd5b50610a5d6004803603810190610a589190614362565b611f61565b005b348015610a6b57600080fd5b50610a7461208b565b604051610a819190614276565b60405180910390f35b348015610a9657600080fd5b50610a9f61209e565b604051610aac9190614347565b60405180910390f35b348015610ac157600080fd5b50610adc6004803603810190610ad79190614362565b6120a4565b604051610ae99190614276565b60405180910390f35b348015610afe57600080fd5b50610b07612214565b604051610b149190614347565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190614569565b61221a565b604051610b519190614347565b60405180910390f35b348015610b6657600080fd5b50610b6f6122a1565b604051610b7c9190614347565b60405180910390f35b348015610b9157600080fd5b50610b9a6122a7565b604051610ba79190614276565b60405180910390f35b348015610bbc57600080fd5b50610bc5612362565b005b348015610bd357600080fd5b50610bdc612413565b604051610be99190614347565b60405180910390f35b348015610bfe57600080fd5b50610c196004803603810190610c149190614291565b612419565b005b348015610c2757600080fd5b50610c306125e0565b604051610c3d9190614347565b60405180910390f35b348015610c5257600080fd5b50610c5b6125e6565b604051610c689190614347565b60405180910390f35b606060038054610c80906145d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cac906145d8565b8015610cf95780601f10610cce57610100808354040283529160200191610cf9565b820191906000526020600020905b815481529060010190602001808311610cdc57829003601f168201915b5050505050905090565b6000610d17610d1061264a565b8484612652565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d7761264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90614656565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b610eda61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090614656565b60405180910390fd5b670de0b6b3a76400006103e86001610f7f610d65565b610f8991906146a5565b610f93919061472e565b610f9d919061472e565b811015610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd6906147d1565b60405180910390fd5b670de0b6b3a764000081610ff391906146a5565b60088190555050565b600061100984848461281d565b6110ca8461101561264a565b6110c58560405180606001604052806028815260200161554160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061107b61264a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461359a9092919063ffffffff16565b612652565b600190509392505050565b6110dd61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614656565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b6111d861264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90614656565b60405180910390fd5b856011819055508460128190555083601381905550826015819055508160168190555080601781905550505050505050565b60006113426112a661264a565b8461133d85600160006112b761264a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ec90919063ffffffff16565b612652565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113e161264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790614656565b60405180910390fd5b600060118190555060006012819055506000601381905550600060158190555060006016819055506000601781905550565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150b61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190614656565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061166561264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90614656565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61171e61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490614656565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b61181661264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90614656565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055506001436118e891906147f1565b601b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b61192861264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90614656565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546119e3906145d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0f906145d8565b8015611a5c5780601f10611a3157610100808354040283529160200191611a5c565b820191906000526020600020905b815481529060010190602001808311611a3f57829003601f168201915b5050505050905090565b611a6e61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af490614656565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b83906148b9565b60405180910390fd5b611b9682826135fe565b5050565b60135481565b601a5481565b60175481565b6000611c6f611bb961264a565b84611c6a856040518060600160405280602581526020016155696025913960016000611be361264a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461359a9092919063ffffffff16565b612652565b6001905092915050565b6000611c8d611c8661264a565b848461281d565b6001905092915050565b611c9f61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614656565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611e2961264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90614656565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f559190614276565b60405180910390a25050565b611f6961264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614656565b60405180910390fd5b670de0b6b3a76400006103e8600561200e610d65565b61201891906146a5565b612022919061472e565b61202c919061472e565b81101561206e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120659061494b565b60405180910390fd5b670de0b6b3a76400008161208291906146a5565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b60006120ae61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490614656565b60405180910390fd5b620186a0600161214b610d65565b61215591906146a5565b61215f919061472e565b8210156121a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612198906149dd565b60405180910390fd5b6103e860056121ae610d65565b6121b891906146a5565b6121c2919061472e565b821115612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614a6f565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006122b161264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614656565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b61236a61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f090614656565b60405180910390fd5b600060118190555060006012819055506000601381905550565b60125481565b61242161264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a790614656565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251790614b01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846125fb91906147f1565b905083811015612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614b6d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990614bff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272990614c91565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128109190614347565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490614d23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f490614db5565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129a15750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d790614e47565b60405180910390fd5b60008114156129fa576129f58383600061369f565b613595565b600b60009054906101000a900460ff16156130bd57612a176118f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a855750612a556118f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612abe5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b115750600560149054906101000a900460ff16155b156130bc57600b60019054906101000a900460ff16612c0b57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bcb5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0190614eb3565b60405180910390fd5b5b600f60009054906101000a900460ff1615612dd357612c286118f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612caf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dd25743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8490614f6b565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e765750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f1d57600854811115612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb790614ffd565b60405180910390fd5b600a54612ecc836114bb565b82612ed791906147f1565b1115612f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0f90615069565b60405180910390fd5b6130bb565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fc05750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561300f5760085481111561300a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613001906150fb565b60405180910390fd5b6130ba565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130b957600a5461306c836114bb565b8261307791906147f1565b11156130b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130af90615069565b60405180910390fd5b5b5b5b5b5b60006130c8306114bb565b9050600060095482101590508080156130ed5750600b60029054906101000a900460ff165b80156131065750600560149054906101000a900460ff16155b801561315c5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b25750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132085750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324c576001600560146101000a81548160ff021916908315150217905550613230613934565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133025750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561330c57600090505b6000811561358557601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561336f57506000601454115b1561343c5761339c606461338e60145488613c1b90919063ffffffff16565b613c9690919063ffffffff16565b9050601454601654826133af91906146a5565b6133b9919061472e565b601960008282546133ca91906147f1565b92505081905550601454601754826133e291906146a5565b6133ec919061472e565b601a60008282546133fd91906147f1565b925050819055506014546015548261341591906146a5565b61341f919061472e565b6018600082825461343091906147f1565b92505081905550613561565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561349757506000601054115b15613560576134c460646134b660105488613c1b90919063ffffffff16565b613c9690919063ffffffff16565b9050601054601254826134d791906146a5565b6134e1919061472e565b601960008282546134f291906147f1565b925050819055506010546013548261350a91906146a5565b613514919061472e565b601a600082825461352591906147f1565b925050819055506010546011548261353d91906146a5565b613547919061472e565b6018600082825461355891906147f1565b925050819055505b5b60008111156135765761357587308361369f565b5b8085613582919061511b565b94505b61359087878761369f565b505050505b505050565b60008383111582906135e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d99190614160565b60405180910390fd5b50600083856135f1919061511b565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561370f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370690614d23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561377f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377690614db5565b60405180910390fd5b61378a838383613ce0565b6137f58160405180606001604052806026815260200161551b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461359a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613888816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ec90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139279190614347565b60405180910390a3505050565b600061393f306114bb565b90506000601a5460185460195461395691906147f1565b61396091906147f1565b90506000808314806139725750600082145b1561397f57505050613c19565b601460095461398e91906146a5565b8311156139a75760146009546139a491906146a5565b92505b6000600283601954866139ba91906146a5565b6139c4919061472e565b6139ce919061472e565b905060006139e58286613ce590919063ffffffff16565b905060004790506139f582613d2f565b6000613a0a8247613ce590919063ffffffff16565b90506000613a3587613a2760185485613c1b90919063ffffffff16565b613c9690919063ffffffff16565b90506000613a6088613a52601a5486613c1b90919063ffffffff16565b613c9690919063ffffffff16565b90506000818385613a71919061511b565b613a7b919061511b565b9050600060198190555060006018819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613adb90615180565b60006040518083038185875af1925050503d8060008114613b18576040519150601f19603f3d011682016040523d82523d6000602084013e613b1d565b606091505b505080985050600087118015613b335750600081115b15613b8057613b428782613f7b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601954604051613b7793929190615195565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613bc690615180565b60006040518083038185875af1925050503d8060008114613c03576040519150601f19603f3d011682016040523d82523d6000602084013e613c08565b606091505b505080985050505050505050505050505b565b600080831415613c2e5760009050613c90565b60008284613c3c91906146a5565b9050828482613c4b919061472e565b14613c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c829061523e565b60405180910390fd5b809150505b92915050565b6000613cd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614064565b905092915050565b505050565b6000613d2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061359a565b905092915050565b6000600267ffffffffffffffff811115613d4c57613d4b61525e565b5b604051908082528060200260200182016040528015613d7a5781602001602082028036833780820191505090505b5090503081600081518110613d9257613d9161528d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e3257600080fd5b505afa158015613e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6a91906152d1565b81600181518110613e7e57613e7d61528d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ee3307f000000000000000000000000000000000000000000000000000000000000000084612652565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f459594939291906153f7565b600060405180830381600087803b158015613f5f57600080fd5b505af1158015613f73573d6000803e3d6000fd5b505050505050565b613fa6307f000000000000000000000000000000000000000000000000000000000000000084612652565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161400b96959493929190615451565b6060604051808303818588803b15801561402457600080fd5b505af1158015614038573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061405d91906154c7565b5050505050565b600080831182906140ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140a29190614160565b60405180910390fd5b50600083856140ba919061472e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141015780820151818401526020810190506140e6565b83811115614110576000848401525b50505050565b6000601f19601f8301169050919050565b6000614132826140c7565b61413c81856140d2565b935061414c8185602086016140e3565b61415581614116565b840191505092915050565b6000602082019050818103600083015261417a8184614127565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141b282614187565b9050919050565b6141c2816141a7565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000819050919050565b6141f8816141e5565b811461420357600080fd5b50565b600081359050614215816141ef565b92915050565b6000806040838503121561423257614231614182565b5b6000614240858286016141d0565b925050602061425185828601614206565b9150509250929050565b60008115159050919050565b6142708161425b565b82525050565b600060208201905061428b6000830184614267565b92915050565b6000602082840312156142a7576142a6614182565b5b60006142b5848285016141d0565b91505092915050565b6000819050919050565b60006142e36142de6142d984614187565b6142be565b614187565b9050919050565b60006142f5826142c8565b9050919050565b6000614307826142ea565b9050919050565b614317816142fc565b82525050565b6000602082019050614332600083018461430e565b92915050565b614341816141e5565b82525050565b600060208201905061435c6000830184614338565b92915050565b60006020828403121561437857614377614182565b5b600061438684828501614206565b91505092915050565b6000806000606084860312156143a8576143a7614182565b5b60006143b6868287016141d0565b93505060206143c7868287016141d0565b92505060406143d886828701614206565b9150509250925092565b6143eb8161425b565b81146143f657600080fd5b50565b600081359050614408816143e2565b92915050565b6000806040838503121561442557614424614182565b5b6000614433858286016141d0565b9250506020614444858286016143f9565b9150509250929050565b600060ff82169050919050565b6144648161444e565b82525050565b600060208201905061447f600083018461445b565b92915050565b60008060008060008060c087890312156144a2576144a1614182565b5b60006144b089828a01614206565b96505060206144c189828a01614206565b95505060406144d289828a01614206565b94505060606144e389828a01614206565b93505060806144f489828a01614206565b92505060a061450589828a01614206565b9150509295509295509295565b61451b816141a7565b82525050565b60006020820190506145366000830184614512565b92915050565b60006020828403121561455257614551614182565b5b6000614560848285016143f9565b91505092915050565b600080604083850312156145805761457f614182565b5b600061458e858286016141d0565b925050602061459f858286016141d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145f057607f821691505b60208210811415614604576146036145a9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146406020836140d2565b915061464b8261460a565b602082019050919050565b6000602082019050818103600083015261466f81614633565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146b0826141e5565b91506146bb836141e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146f4576146f3614676565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614739826141e5565b9150614744836141e5565b925082614754576147536146ff565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147bb602f836140d2565b91506147c68261475f565b604082019050919050565b600060208201905081810360008301526147ea816147ae565b9050919050565b60006147fc826141e5565b9150614807836141e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561483c5761483b614676565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148a36039836140d2565b91506148ae82614847565b604082019050919050565b600060208201905081810360008301526148d281614896565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006149356024836140d2565b9150614940826148d9565b604082019050919050565b6000602082019050818103600083015261496481614928565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149c76035836140d2565b91506149d28261496b565b604082019050919050565b600060208201905081810360008301526149f6816149ba565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614a596034836140d2565b9150614a64826149fd565b604082019050919050565b60006020820190508181036000830152614a8881614a4c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614aeb6026836140d2565b9150614af682614a8f565b604082019050919050565b60006020820190508181036000830152614b1a81614ade565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614b57601b836140d2565b9150614b6282614b21565b602082019050919050565b60006020820190508181036000830152614b8681614b4a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614be96024836140d2565b9150614bf482614b8d565b604082019050919050565b60006020820190508181036000830152614c1881614bdc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c7b6022836140d2565b9150614c8682614c1f565b604082019050919050565b60006020820190508181036000830152614caa81614c6e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d6025836140d2565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d9f6023836140d2565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614e316031836140d2565b9150614e3c82614dd5565b604082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614e9d6016836140d2565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f556049836140d2565b9150614f6082614ed3565b606082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614fe76035836140d2565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150536013836140d2565b915061505e8261501d565b602082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006150e56036836140d2565b91506150f082615089565b604082019050919050565b60006020820190508181036000830152615114816150d8565b9050919050565b6000615126826141e5565b9150615131836141e5565b92508282101561514457615143614676565b5b828203905092915050565b600081905092915050565b50565b600061516a60008361514f565b91506151758261515a565b600082019050919050565b600061518b8261515d565b9150819050919050565b60006060820190506151aa6000830186614338565b6151b76020830185614338565b6151c46040830184614338565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006152286021836140d2565b9150615233826151cc565b604082019050919050565b600060208201905081810360008301526152578161521b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152cb816141b9565b92915050565b6000602082840312156152e7576152e6614182565b5b60006152f5848285016152bc565b91505092915050565b6000819050919050565b600061532361531e615319846152fe565b6142be565b6141e5565b9050919050565b61533381615308565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61536e816141a7565b82525050565b60006153808383615365565b60208301905092915050565b6000602082019050919050565b60006153a482615339565b6153ae8185615344565b93506153b983615355565b8060005b838110156153ea5781516153d18882615374565b97506153dc8361538c565b9250506001810190506153bd565b5085935050505092915050565b600060a08201905061540c6000830188614338565b615419602083018761532a565b818103604083015261542b8186615399565b905061543a6060830185614512565b6154476080830184614338565b9695505050505050565b600060c0820190506154666000830189614512565b6154736020830188614338565b615480604083018761532a565b61548d606083018661532a565b61549a6080830185614512565b6154a760a0830184614338565b979650505050505050565b6000815190506154c1816141ef565b92915050565b6000806000606084860312156154e0576154df614182565b5b60006154ee868287016154b2565b93505060206154ff868287016154b2565b9250506040615510868287016154b2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220233988f4a74a217ff6150e27fe0be88c2a10405bbb83708ffb6d99068d459ec764736f6c63430008090033
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c0246668116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610bc7578063f2fde38b14610bf2578063f637434214610c1b578063f8b45b0514610c4657610325565b8063e2f4560514610b5a578063e884f26014610b85578063ec1d547d14610bb057610325565b8063c8c8ebe4116100d1578063c8c8ebe414610a8a578063d257b34f14610ab5578063d85ba06314610af2578063dd62ed3e14610b1d57610325565b8063c024666814610a0d578063c18bc19514610a36578063c876d0b914610a5f57610325565b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb1461093f578063aacebbe31461097c578063b62496f5146109a5578063bbc0c742146109e257610325565b80639fccce32146108ac578063a0d82dc5146108d7578063a457c2d71461090257610325565b80638da5cb5b146107ae57806392136913146107d9578063924de9b71461080457806395d89b411461082d5780639a7a23d6146108585780639c3b4fdc1461088157610325565b8063395093511161026a5780636ddd171311610223578063751039fc116101fd578063751039fc146107185780637571336a146107435780637bce5a041461076c5780638a8c523c1461079757610325565b80636ddd17131461069957806370a08231146106c4578063715018a61461070157610325565b8063395093511461058757806349bd5a5e146105c45780634a62bb65146105ef5780634fbee1931461061a57806361a3996c146106575780636a486a8e1461066e57610325565b80631a8145bb116102d757806323b872dd116102b157806323b872dd146104cd5780632d5a5d341461050a578063313ce56714610533578063390270601461055e57610325565b80631a8145bb1461044e5780631f3fed8f14610479578063203e727e146104a457610325565b806306fdde031461032a578063095ea7b31461035557806310d5de53146103925780631694505e146103cf57806318160ddd146103fa5780631816467f1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c71565b60405161034c9190614160565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061421b565b610d03565b6040516103899190614276565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614291565b610d21565b6040516103c69190614276565b60405180910390f35b3480156103db57600080fd5b506103e4610d41565b6040516103f1919061431d565b60405180910390f35b34801561040657600080fd5b5061040f610d65565b60405161041c9190614347565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614291565b610d6f565b005b34801561045a57600080fd5b50610463610ec6565b6040516104709190614347565b60405180910390f35b34801561048557600080fd5b5061048e610ecc565b60405161049b9190614347565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190614362565b610ed2565b005b3480156104d957600080fd5b506104f460048036038101906104ef919061438f565b610ffc565b6040516105019190614276565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c919061440e565b6110d5565b005b34801561053f57600080fd5b506105486111c7565b604051610555919061446a565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190614485565b6111d0565b005b34801561059357600080fd5b506105ae60048036038101906105a9919061421b565b611299565b6040516105bb9190614276565b60405180910390f35b3480156105d057600080fd5b506105d961134c565b6040516105e69190614521565b60405180910390f35b3480156105fb57600080fd5b50610604611370565b6040516106119190614276565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190614291565b611383565b60405161064e9190614276565b60405180910390f35b34801561066357600080fd5b5061066c6113d9565b005b34801561067a57600080fd5b506106836114a2565b6040516106909190614347565b60405180910390f35b3480156106a557600080fd5b506106ae6114a8565b6040516106bb9190614276565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190614291565b6114bb565b6040516106f89190614347565b60405180910390f35b34801561070d57600080fd5b50610716611503565b005b34801561072457600080fd5b5061072d61165b565b60405161073a9190614276565b60405180910390f35b34801561074f57600080fd5b5061076a6004803603810190610765919061440e565b611716565b005b34801561077857600080fd5b50610781611808565b60405161078e9190614347565b60405180910390f35b3480156107a357600080fd5b506107ac61180e565b005b3480156107ba57600080fd5b506107c36118f0565b6040516107d09190614521565b60405180910390f35b3480156107e557600080fd5b506107ee61191a565b6040516107fb9190614347565b60405180910390f35b34801561081057600080fd5b5061082b6004803603810190610826919061453c565b611920565b005b34801561083957600080fd5b506108426119d4565b60405161084f9190614160565b60405180910390f35b34801561086457600080fd5b5061087f600480360381019061087a919061440e565b611a66565b005b34801561088d57600080fd5b50610896611b9a565b6040516108a39190614347565b60405180910390f35b3480156108b857600080fd5b506108c1611ba0565b6040516108ce9190614347565b60405180910390f35b3480156108e357600080fd5b506108ec611ba6565b6040516108f99190614347565b60405180910390f35b34801561090e57600080fd5b506109296004803603810190610924919061421b565b611bac565b6040516109369190614276565b60405180910390f35b34801561094b57600080fd5b506109666004803603810190610961919061421b565b611c79565b6040516109739190614276565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190614291565b611c97565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190614291565b611dee565b6040516109d99190614276565b60405180910390f35b3480156109ee57600080fd5b506109f7611e0e565b604051610a049190614276565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f919061440e565b611e21565b005b348015610a4257600080fd5b50610a5d6004803603810190610a589190614362565b611f61565b005b348015610a6b57600080fd5b50610a7461208b565b604051610a819190614276565b60405180910390f35b348015610a9657600080fd5b50610a9f61209e565b604051610aac9190614347565b60405180910390f35b348015610ac157600080fd5b50610adc6004803603810190610ad79190614362565b6120a4565b604051610ae99190614276565b60405180910390f35b348015610afe57600080fd5b50610b07612214565b604051610b149190614347565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190614569565b61221a565b604051610b519190614347565b60405180910390f35b348015610b6657600080fd5b50610b6f6122a1565b604051610b7c9190614347565b60405180910390f35b348015610b9157600080fd5b50610b9a6122a7565b604051610ba79190614276565b60405180910390f35b348015610bbc57600080fd5b50610bc5612362565b005b348015610bd357600080fd5b50610bdc612413565b604051610be99190614347565b60405180910390f35b348015610bfe57600080fd5b50610c196004803603810190610c149190614291565b612419565b005b348015610c2757600080fd5b50610c306125e0565b604051610c3d9190614347565b60405180910390f35b348015610c5257600080fd5b50610c5b6125e6565b604051610c689190614347565b60405180910390f35b606060038054610c80906145d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cac906145d8565b8015610cf95780601f10610cce57610100808354040283529160200191610cf9565b820191906000526020600020905b815481529060010190602001808311610cdc57829003601f168201915b5050505050905090565b6000610d17610d1061264a565b8484612652565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d7761264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90614656565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b610eda61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090614656565b60405180910390fd5b670de0b6b3a76400006103e86001610f7f610d65565b610f8991906146a5565b610f93919061472e565b610f9d919061472e565b811015610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd6906147d1565b60405180910390fd5b670de0b6b3a764000081610ff391906146a5565b60088190555050565b600061100984848461281d565b6110ca8461101561264a565b6110c58560405180606001604052806028815260200161554160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061107b61264a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461359a9092919063ffffffff16565b612652565b600190509392505050565b6110dd61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614656565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b6111d861264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90614656565b60405180910390fd5b856011819055508460128190555083601381905550826015819055508160168190555080601781905550505050505050565b60006113426112a661264a565b8461133d85600160006112b761264a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ec90919063ffffffff16565b612652565b6001905092915050565b7f0000000000000000000000007d36f12b9378eadae10133c8c883ab0c1ee1d52481565b600b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113e161264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790614656565b60405180910390fd5b600060118190555060006012819055506000601381905550600060158190555060006016819055506000601781905550565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150b61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190614656565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061166561264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90614656565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61171e61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490614656565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b61181661264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90614656565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055506001436118e891906147f1565b601b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b61192861264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90614656565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546119e3906145d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0f906145d8565b8015611a5c5780601f10611a3157610100808354040283529160200191611a5c565b820191906000526020600020905b815481529060010190602001808311611a3f57829003601f168201915b5050505050905090565b611a6e61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af490614656565b60405180910390fd5b7f0000000000000000000000007d36f12b9378eadae10133c8c883ab0c1ee1d52473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b83906148b9565b60405180910390fd5b611b9682826135fe565b5050565b60135481565b601a5481565b60175481565b6000611c6f611bb961264a565b84611c6a856040518060600160405280602581526020016155696025913960016000611be361264a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461359a9092919063ffffffff16565b612652565b6001905092915050565b6000611c8d611c8661264a565b848461281d565b6001905092915050565b611c9f61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614656565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611e2961264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90614656565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f559190614276565b60405180910390a25050565b611f6961264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614656565b60405180910390fd5b670de0b6b3a76400006103e8600561200e610d65565b61201891906146a5565b612022919061472e565b61202c919061472e565b81101561206e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120659061494b565b60405180910390fd5b670de0b6b3a76400008161208291906146a5565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b60006120ae61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490614656565b60405180910390fd5b620186a0600161214b610d65565b61215591906146a5565b61215f919061472e565b8210156121a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612198906149dd565b60405180910390fd5b6103e860056121ae610d65565b6121b891906146a5565b6121c2919061472e565b821115612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614a6f565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006122b161264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614656565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b61236a61264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f090614656565b60405180910390fd5b600060118190555060006012819055506000601381905550565b60125481565b61242161264a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a790614656565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251790614b01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846125fb91906147f1565b905083811015612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614b6d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b990614bff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272990614c91565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128109190614347565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490614d23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f490614db5565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129a15750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d790614e47565b60405180910390fd5b60008114156129fa576129f58383600061369f565b613595565b600b60009054906101000a900460ff16156130bd57612a176118f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a855750612a556118f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612abe5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b115750600560149054906101000a900460ff16155b156130bc57600b60019054906101000a900460ff16612c0b57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bcb5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0190614eb3565b60405180910390fd5b5b600f60009054906101000a900460ff1615612dd357612c286118f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612caf57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0757507f0000000000000000000000007d36f12b9378eadae10133c8c883ab0c1ee1d52473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dd25743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8490614f6b565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e765750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f1d57600854811115612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb790614ffd565b60405180910390fd5b600a54612ecc836114bb565b82612ed791906147f1565b1115612f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0f90615069565b60405180910390fd5b6130bb565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fc05750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561300f5760085481111561300a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613001906150fb565b60405180910390fd5b6130ba565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130b957600a5461306c836114bb565b8261307791906147f1565b11156130b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130af90615069565b60405180910390fd5b5b5b5b5b5b60006130c8306114bb565b9050600060095482101590508080156130ed5750600b60029054906101000a900460ff165b80156131065750600560149054906101000a900460ff16155b801561315c5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b25750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132085750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324c576001600560146101000a81548160ff021916908315150217905550613230613934565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133025750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561330c57600090505b6000811561358557601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561336f57506000601454115b1561343c5761339c606461338e60145488613c1b90919063ffffffff16565b613c9690919063ffffffff16565b9050601454601654826133af91906146a5565b6133b9919061472e565b601960008282546133ca91906147f1565b92505081905550601454601754826133e291906146a5565b6133ec919061472e565b601a60008282546133fd91906147f1565b925050819055506014546015548261341591906146a5565b61341f919061472e565b6018600082825461343091906147f1565b92505081905550613561565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561349757506000601054115b15613560576134c460646134b660105488613c1b90919063ffffffff16565b613c9690919063ffffffff16565b9050601054601254826134d791906146a5565b6134e1919061472e565b601960008282546134f291906147f1565b925050819055506010546013548261350a91906146a5565b613514919061472e565b601a600082825461352591906147f1565b925050819055506010546011548261353d91906146a5565b613547919061472e565b6018600082825461355891906147f1565b925050819055505b5b60008111156135765761357587308361369f565b5b8085613582919061511b565b94505b61359087878761369f565b505050505b505050565b60008383111582906135e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d99190614160565b60405180910390fd5b50600083856135f1919061511b565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561370f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370690614d23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561377f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377690614db5565b60405180910390fd5b61378a838383613ce0565b6137f58160405180606001604052806026815260200161551b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461359a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613888816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ec90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139279190614347565b60405180910390a3505050565b600061393f306114bb565b90506000601a5460185460195461395691906147f1565b61396091906147f1565b90506000808314806139725750600082145b1561397f57505050613c19565b601460095461398e91906146a5565b8311156139a75760146009546139a491906146a5565b92505b6000600283601954866139ba91906146a5565b6139c4919061472e565b6139ce919061472e565b905060006139e58286613ce590919063ffffffff16565b905060004790506139f582613d2f565b6000613a0a8247613ce590919063ffffffff16565b90506000613a3587613a2760185485613c1b90919063ffffffff16565b613c9690919063ffffffff16565b90506000613a6088613a52601a5486613c1b90919063ffffffff16565b613c9690919063ffffffff16565b90506000818385613a71919061511b565b613a7b919061511b565b9050600060198190555060006018819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613adb90615180565b60006040518083038185875af1925050503d8060008114613b18576040519150601f19603f3d011682016040523d82523d6000602084013e613b1d565b606091505b505080985050600087118015613b335750600081115b15613b8057613b428782613f7b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601954604051613b7793929190615195565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613bc690615180565b60006040518083038185875af1925050503d8060008114613c03576040519150601f19603f3d011682016040523d82523d6000602084013e613c08565b606091505b505080985050505050505050505050505b565b600080831415613c2e5760009050613c90565b60008284613c3c91906146a5565b9050828482613c4b919061472e565b14613c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c829061523e565b60405180910390fd5b809150505b92915050565b6000613cd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614064565b905092915050565b505050565b6000613d2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061359a565b905092915050565b6000600267ffffffffffffffff811115613d4c57613d4b61525e565b5b604051908082528060200260200182016040528015613d7a5781602001602082028036833780820191505090505b5090503081600081518110613d9257613d9161528d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e3257600080fd5b505afa158015613e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6a91906152d1565b81600181518110613e7e57613e7d61528d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ee3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612652565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f459594939291906153f7565b600060405180830381600087803b158015613f5f57600080fd5b505af1158015613f73573d6000803e3d6000fd5b505050505050565b613fa6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612652565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161400b96959493929190615451565b6060604051808303818588803b15801561402457600080fd5b505af1158015614038573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061405d91906154c7565b5050505050565b600080831182906140ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140a29190614160565b60405180910390fd5b50600083856140ba919061472e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141015780820151818401526020810190506140e6565b83811115614110576000848401525b50505050565b6000601f19601f8301169050919050565b6000614132826140c7565b61413c81856140d2565b935061414c8185602086016140e3565b61415581614116565b840191505092915050565b6000602082019050818103600083015261417a8184614127565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141b282614187565b9050919050565b6141c2816141a7565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000819050919050565b6141f8816141e5565b811461420357600080fd5b50565b600081359050614215816141ef565b92915050565b6000806040838503121561423257614231614182565b5b6000614240858286016141d0565b925050602061425185828601614206565b9150509250929050565b60008115159050919050565b6142708161425b565b82525050565b600060208201905061428b6000830184614267565b92915050565b6000602082840312156142a7576142a6614182565b5b60006142b5848285016141d0565b91505092915050565b6000819050919050565b60006142e36142de6142d984614187565b6142be565b614187565b9050919050565b60006142f5826142c8565b9050919050565b6000614307826142ea565b9050919050565b614317816142fc565b82525050565b6000602082019050614332600083018461430e565b92915050565b614341816141e5565b82525050565b600060208201905061435c6000830184614338565b92915050565b60006020828403121561437857614377614182565b5b600061438684828501614206565b91505092915050565b6000806000606084860312156143a8576143a7614182565b5b60006143b6868287016141d0565b93505060206143c7868287016141d0565b92505060406143d886828701614206565b9150509250925092565b6143eb8161425b565b81146143f657600080fd5b50565b600081359050614408816143e2565b92915050565b6000806040838503121561442557614424614182565b5b6000614433858286016141d0565b9250506020614444858286016143f9565b9150509250929050565b600060ff82169050919050565b6144648161444e565b82525050565b600060208201905061447f600083018461445b565b92915050565b60008060008060008060c087890312156144a2576144a1614182565b5b60006144b089828a01614206565b96505060206144c189828a01614206565b95505060406144d289828a01614206565b94505060606144e389828a01614206565b93505060806144f489828a01614206565b92505060a061450589828a01614206565b9150509295509295509295565b61451b816141a7565b82525050565b60006020820190506145366000830184614512565b92915050565b60006020828403121561455257614551614182565b5b6000614560848285016143f9565b91505092915050565b600080604083850312156145805761457f614182565b5b600061458e858286016141d0565b925050602061459f858286016141d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145f057607f821691505b60208210811415614604576146036145a9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146406020836140d2565b915061464b8261460a565b602082019050919050565b6000602082019050818103600083015261466f81614633565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146b0826141e5565b91506146bb836141e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146f4576146f3614676565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614739826141e5565b9150614744836141e5565b925082614754576147536146ff565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147bb602f836140d2565b91506147c68261475f565b604082019050919050565b600060208201905081810360008301526147ea816147ae565b9050919050565b60006147fc826141e5565b9150614807836141e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561483c5761483b614676565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148a36039836140d2565b91506148ae82614847565b604082019050919050565b600060208201905081810360008301526148d281614896565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006149356024836140d2565b9150614940826148d9565b604082019050919050565b6000602082019050818103600083015261496481614928565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149c76035836140d2565b91506149d28261496b565b604082019050919050565b600060208201905081810360008301526149f6816149ba565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614a596034836140d2565b9150614a64826149fd565b604082019050919050565b60006020820190508181036000830152614a8881614a4c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614aeb6026836140d2565b9150614af682614a8f565b604082019050919050565b60006020820190508181036000830152614b1a81614ade565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614b57601b836140d2565b9150614b6282614b21565b602082019050919050565b60006020820190508181036000830152614b8681614b4a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614be96024836140d2565b9150614bf482614b8d565b604082019050919050565b60006020820190508181036000830152614c1881614bdc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c7b6022836140d2565b9150614c8682614c1f565b604082019050919050565b60006020820190508181036000830152614caa81614c6e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d6025836140d2565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d9f6023836140d2565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614e316031836140d2565b9150614e3c82614dd5565b604082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614e9d6016836140d2565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f556049836140d2565b9150614f6082614ed3565b606082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614fe76035836140d2565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150536013836140d2565b915061505e8261501d565b602082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006150e56036836140d2565b91506150f082615089565b604082019050919050565b60006020820190508181036000830152615114816150d8565b9050919050565b6000615126826141e5565b9150615131836141e5565b92508282101561514457615143614676565b5b828203905092915050565b600081905092915050565b50565b600061516a60008361514f565b91506151758261515a565b600082019050919050565b600061518b8261515d565b9150819050919050565b60006060820190506151aa6000830186614338565b6151b76020830185614338565b6151c46040830184614338565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006152286021836140d2565b9150615233826151cc565b604082019050919050565b600060208201905081810360008301526152578161521b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152cb816141b9565b92915050565b6000602082840312156152e7576152e6614182565b5b60006152f5848285016152bc565b91505092915050565b6000819050919050565b600061532361531e615319846152fe565b6142be565b6141e5565b9050919050565b61533381615308565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61536e816141a7565b82525050565b60006153808383615365565b60208301905092915050565b6000602082019050919050565b60006153a482615339565b6153ae8185615344565b93506153b983615355565b8060005b838110156153ea5781516153d18882615374565b97506153dc8361538c565b9250506001810190506153bd565b5085935050505092915050565b600060a08201905061540c6000830188614338565b615419602083018761532a565b818103604083015261542b8186615399565b905061543a6060830185614512565b6154476080830184614338565b9695505050505050565b600060c0820190506154666000830189614512565b6154736020830188614338565b615480604083018761532a565b61548d606083018661532a565b61549a6080830185614512565b6154a760a0830184614338565b979650505050505050565b6000815190506154c1816141ef565b92915050565b6000806000606084860312156154e0576154df614182565b5b60006154ee868287016154b2565b93505060206154ff868287016154b2565b9250506040615510868287016154b2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220233988f4a74a217ff6150e27fe0be88c2a10405bbb83708ffb6d99068d459ec764736f6c63430008090033
Deployed Bytecode Sourcemap
29383:15710:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9655:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30926:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29471:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8604:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37814:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30640:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30600;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35110:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10307:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37001:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8445:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35352:488;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11072:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29529:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29797:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37983:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35998:228;;;;;;;;;;;;;:::i;:::-;;30454:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29877:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8776:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21983:148;;;;;;;;;;;;;:::i;:::-;;34327:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36459:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30346:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34122:152;;;;;;;;;;;;;:::i;:::-;;21339:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30489:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36700:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7701:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37145:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30420:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30680:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30565:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11794:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9117:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37597:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31149:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29837:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36810:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36235:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30263:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29681:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34715:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30312:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9356:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29723:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34509:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35848:142;;;;;;;;;;;;;:::i;:::-;;30383:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22287:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30527:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29763:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7481:100;7535:13;7568:5;7561:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:100;:::o;9655:169::-;9738:4;9755:39;9764:12;:10;:12::i;:::-;9778:7;9787:6;9755:8;:39::i;:::-;9812:4;9805:11;;9655:169;;;;:::o;30926:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29471:51::-;;;:::o;8604:108::-;8665:7;8692:12;;8685:19;;8604:108;:::o;37814:157::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37921:9:::1;;;;;;;;;;;37893:38;;37910:9;37893:38;;;;;;;;;;;;37954:9;37942;;:21;;;;;;;;;;;;;;;;;;37814:157:::0;:::o;30640:33::-;;;;:::o;30600:::-;;;;:::o;35110:234::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35229:4:::1;35223;35219:1;35203:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35202:31;;;;:::i;:::-;35192:6;:41;;35184:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35329:6;35319;:17;;;;:::i;:::-;35296:20;:40;;;;35110:234:::0;:::o;10307:355::-;10447:4;10464:36;10474:6;10482:9;10493:6;10464:9;:36::i;:::-;10511:121;10520:6;10528:12;:10;:12::i;:::-;10542:89;10580:6;10542:89;;;;;;;;;;;;;;;;;:11;:19;10554:6;10542:19;;;;;;;;;;;;;;;:33;10562:12;:10;:12::i;:::-;10542:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10511:8;:121::i;:::-;10650:4;10643:11;;10307:355;;;;;:::o;37001:135::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37115:13:::1;37093:10;:19;37104:7;37093:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;37001:135:::0;;:::o;8445:93::-;8503:5;8528:2;8521:9;;8445:93;:::o;35352:488::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35620:12:::1;35601:15;:31;;;;35662:12;35643:15;:31;;;;35697:6;35685:9;:18;;;;35736:16;35717;:35;;;;35782:16;35763;:35;;;;35822:10;35809;:23;;;;35352:488:::0;;;;;;:::o;11072:218::-;11160:4;11177:83;11186:12;:10;:12::i;:::-;11200:7;11209:50;11248:10;11209:11;:25;11221:12;:10;:12::i;:::-;11209:25;;;;;;;;;;;;;;;:34;11235:7;11209:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11177:8;:83::i;:::-;11278:4;11271:11;;11072:218;;;;:::o;29529:38::-;;;:::o;29797:33::-;;;;;;;;;;;;;:::o;37983:125::-;38048:4;38072:19;:28;38092:7;38072:28;;;;;;;;;;;;;;;;;;;;;;;;;38065:35;;37983:125;;;:::o;35998:228::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36074:1:::1;36056:15;:19;;;;36104:1;36086:15;:19;;;;36128:1;36116:9;:13;;;;36161:1;36142:16;:20;;;;36192:1;36173:16;:20;;;;36217:1;36204:10;:14;;;;35998:228::o:0;30454:28::-;;;;:::o;29877:31::-;;;;;;;;;;;;;:::o;8776:127::-;8850:7;8877:9;:18;8887:7;8877:18;;;;;;;;;;;;;;;;8870:25;;8776:127;;;:::o;21983:148::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22090:1:::1;22053:40;;22074:6;;;;;;;;;;;22053:40;;;;;;;;;;;;22121:1;22104:6;;:19;;;;;;;;;;;;;;;;;;21983:148::o:0;34327:120::-;34379:4;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34412:5:::1;34395:14;;:22;;;;;;;;;;;;;;;;;;34435:4;34428:11;;34327:120:::0;:::o;36459:144::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36591:4:::1;36549:31;:39;36581:6;36549:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36459:144:::0;;:::o;30346:30::-;;;;:::o;34122:152::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34193:4:::1;34177:13;;:20;;;;;;;;;;;;;;;;;;34222:4;34208:11;;:18;;;;;;;;;;;;;;;;;;34265:1;34250:12;:16;;;;:::i;:::-;34237:10;:29;;;;34122:152::o:0;21339:79::-;21377:7;21404:6;;;;;;;;;;;21397:13;;21339:79;:::o;30489:31::-;;;;:::o;36700:101::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36786:7:::1;36772:11;;:21;;;;;;;;;;;;;;;;;;36700:101:::0;:::o;7701:104::-;7757:13;7790:7;7783:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7701:104;:::o;37145:245::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37252:13:::1;37244:21;;:4;:21;;;;37236:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;37341:41;37370:4;37376:5;37341:28;:41::i;:::-;37145:245:::0;;:::o;30420:24::-;;;;:::o;30680:27::-;;;;:::o;30565:25::-;;;;:::o;11794:269::-;11887:4;11904:129;11913:12;:10;:12::i;:::-;11927:7;11936:96;11975:15;11936:96;;;;;;;;;;;;;;;;;:11;:25;11948:12;:10;:12::i;:::-;11936:25;;;;;;;;;;;;;;;:34;11962:7;11936:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11904:8;:129::i;:::-;12051:4;12044:11;;11794:269;;;;:::o;9117:175::-;9203:4;9220:42;9230:12;:10;:12::i;:::-;9244:9;9255:6;9220:9;:42::i;:::-;9280:4;9273:11;;9117:175;;;;:::o;37597:208::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37734:15:::1;;;;;;;;;;;37691:59;;37714:18;37691:59;;;;;;;;;;;;37779:18;37761:15;;:36;;;;;;;;;;;;;;;;;;37597:208:::0;:::o;31149:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29837:33::-;;;;;;;;;;;;;:::o;36810:182::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36926:8:::1;36895:19;:28;36915:7;36895:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36966:7;36950:34;;;36975:8;36950:34;;;;;;:::i;:::-;;;;;;;;36810:182:::0;;:::o;36235:215::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36357:4:::1;36351;36347:1;36331:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;36330:31;;;;:::i;:::-;36320:6;:41;;36312:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;36435:6;36425;:17;;;;:::i;:::-;36413:9;:29;;;;36235:215:::0;:::o;30263:39::-;;;;;;;;;;;;;:::o;29681:35::-;;;;:::o;34715:386::-;34796:4;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34853:6:::1;34849:1;34833:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34820:9;:39;;34812:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34969:4;34965:1;34949:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34936:9;:37;;34928:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35062:9;35041:18;:30;;;;35089:4;35082:11;;34715:386:::0;;;:::o;30312:27::-;;;;:::o;9356:151::-;9445:7;9472:11;:18;9484:5;9472:18;;;;;;;;;;;;;;;:27;9491:7;9472:27;;;;;;;;;;;;;;;;9465:34;;9356:151;;;;:::o;29723:33::-;;;;:::o;34509:134::-;34569:4;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34608:5:::1;34585:20;;:28;;;;;;;;;;;;;;;;;;34631:4;34624:11;;34509:134:::0;:::o;35848:142::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35927:1:::1;35909:15;:19;;;;35957:1;35939:15;:19;;;;35981:1;35969:9;:13;;;;35848:142::o:0;30383:30::-;;;;:::o;22287:244::-;21562:12;:10;:12::i;:::-;21552:22;;:6;;;;;;;;;;;:22;;;21544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22396:1:::1;22376:22;;:8;:22;;;;22368:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22486:8;22457:38;;22478:6;;;;;;;;;;;22457:38;;;;;;;;;;;;22515:8;22506:6;;:17;;;;;;;;;;;;;;;;;;22287:244:::0;:::o;30527:31::-;;;;:::o;29763:24::-;;;;:::o;16371:182::-;16429:7;16449:9;16465:1;16461;:5;;;;:::i;:::-;16449:17;;16490:1;16485;:6;;16477:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16544:1;16537:8;;;16371:182;;;;:::o;172:98::-;225:7;252:10;245:17;;172:98;:::o;14990:381::-;15143:1;15126:19;;:5;:19;;;;15118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15224:1;15205:21;;:7;:21;;;;15197:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15309:6;15279:11;:18;15291:5;15279:18;;;;;;;;;;;;;;;:27;15298:7;15279:27;;;;;;;;;;;;;;;:36;;;;15347:7;15331:32;;15340:5;15331:32;;;15356:6;15331:32;;;;;;:::i;:::-;;;;;;;;14990:381;;;:::o;38117:4261::-;38265:1;38249:18;;:4;:18;;;;38241:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38342:1;38328:16;;:2;:16;;;;38320:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38404:10;:14;38415:2;38404:14;;;;;;;;;;;;;;;;;;;;;;;;;38403:15;:36;;;;;38423:10;:16;38434:4;38423:16;;;;;;;;;;;;;;;;;;;;;;;;;38422:17;38403:36;38395:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38518:1;38508:6;:11;38505:92;;;38536:28;38552:4;38558:2;38562:1;38536:15;:28::i;:::-;38579:7;;38505:92;38613:14;;;;;;;;;;;38610:1811;;;38673:7;:5;:7::i;:::-;38665:15;;:4;:15;;;;:49;;;;;38707:7;:5;:7::i;:::-;38701:13;;:2;:13;;;;38665:49;:86;;;;;38749:1;38735:16;;:2;:16;;;;38665:86;:128;;;;;38786:6;38772:21;;:2;:21;;;;38665:128;:158;;;;;38815:8;;;;;;;;;;;38814:9;38665:158;38643:1767;;;38861:13;;;;;;;;;;;38857:148;;38906:19;:25;38926:4;38906:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38935:19;:23;38955:2;38935:23;;;;;;;;;;;;;;;;;;;;;;;;;38906:52;38898:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38857:148;39164:20;;;;;;;;;;;39160:423;;;39218:7;:5;:7::i;:::-;39212:13;;:2;:13;;;;:47;;;;;39243:15;39229:30;;:2;:30;;;;39212:47;:79;;;;;39277:13;39263:28;;:2;:28;;;;39212:79;39208:356;;;39369:12;39327:28;:39;39356:9;39327:39;;;;;;;;;;;;;;;;:54;39319:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39528:12;39486:28;:39;39515:9;39486:39;;;;;;;;;;;;;;;:54;;;;39208:356;39160:423;39636:25;:31;39662:4;39636:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39672:31;:35;39704:2;39672:35;;;;;;;;;;;;;;;;;;;;;;;;;39671:36;39636:71;39632:763;;;39754:20;;39744:6;:30;;39736:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39893:9;;39876:13;39886:2;39876:9;:13::i;:::-;39867:6;:22;;;;:::i;:::-;:35;;39859:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39632:763;;;40005:25;:29;40031:2;40005:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40039:31;:37;40071:4;40039:37;;;;;;;;;;;;;;;;;;;;;;;;;40038:38;40005:71;40001:394;;;40123:20;;40113:6;:30;;40105:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40001:394;;;40249:31;:35;40281:2;40249:35;;;;;;;;;;;;;;;;;;;;;;;;;40245:150;;40342:9;;40325:13;40335:2;40325:9;:13::i;:::-;40316:6;:22;;;;:::i;:::-;:35;;40308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40245:150;40001:394;39632:763;38643:1767;38610:1811;40434:28;40465:24;40483:4;40465:9;:24::i;:::-;40434:55;;40503:12;40542:18;;40518:20;:42;;40503:57;;40592:7;:35;;;;;40616:11;;;;;;;;;;;40592:35;:61;;;;;40645:8;;;;;;;;;;;40644:9;40592:61;:110;;;;;40671:25;:31;40697:4;40671:31;;;;;;;;;;;;;;;;;;;;;;;;;40670:32;40592:110;:153;;;;;40720:19;:25;40740:4;40720:25;;;;;;;;;;;;;;;;;;;;;;;;;40719:26;40592:153;:194;;;;;40763:19;:23;40783:2;40763:23;;;;;;;;;;;;;;;;;;;;;;;;;40762:24;40592:194;40574:328;;;40824:4;40813:8;;:15;;;;;;;;;;;;;;;;;;40846:10;:8;:10::i;:::-;40885:5;40874:8;;:16;;;;;;;;;;;;;;;;;;40574:328;40915:12;40931:8;;;;;;;;;;;40930:9;40915:24;;41041:19;:25;41061:4;41041:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41070:19;:23;41090:2;41070:23;;;;;;;;;;;;;;;;;;;;;;;;;41041:52;41038:99;;;41120:5;41110:15;;41038:99;41150:12;41254:7;41251:1073;;;41305:25;:29;41331:2;41305:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41354:1;41338:13;;:17;41305:50;41301:870;;;41382:34;41412:3;41382:25;41393:13;;41382:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41375:41;;41483:13;;41464:16;;41457:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41435:18;;:61;;;;;;;:::i;:::-;;;;;;;;41551:13;;41538:10;;41531:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;41515:12;;:49;;;;;;;:::i;:::-;;;;;;;;41631:13;;41612:16;;41605:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41583:18;;:61;;;;;;;:::i;:::-;;;;;;;;41301:870;;;41705:25;:31;41731:4;41705:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41755:1;41740:12;;:16;41705:51;41702:469;;;41900:33;41929:3;41900:24;41911:12;;41900:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;41893:40;;41999:12;;41981:15;;41974:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41952:18;;:59;;;;;;;:::i;:::-;;;;;;;;42065:12;;42053:9;;42046:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;42030:12;;:47;;;;;;;:::i;:::-;;;;;;;;42143:12;;42125:15;;42118:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42096:18;;:59;;;;;;;:::i;:::-;;;;;;;;41702:469;41301:870;42198:1;42191:4;:8;42188:93;;;42223:42;42239:4;42253;42260;42223:15;:42::i;:::-;42188:93;42308:4;42298:14;;;;;:::i;:::-;;;41251:1073;42337:33;42353:4;42359:2;42363:6;42337:15;:33::i;:::-;38230:4148;;;;38117:4261;;;;:::o;17277:193::-;17363:7;17396:1;17391;:6;;17399:12;17383:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17423:9;17439:1;17435;:5;;;;:::i;:::-;17423:17;;17461:1;17454:8;;;17277:193;;;;;:::o;37399:189::-;37516:5;37482:25;:31;37508:4;37482:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37574:5;37540:40;;37568:4;37540:40;;;;;;;;;;;;37399:189;;:::o;12554:575::-;12712:1;12694:20;;:6;:20;;;;12686:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12796:1;12775:23;;:9;:23;;;;12767:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12852:47;12873:6;12881:9;12892:6;12852:20;:47::i;:::-;12933:71;12955:6;12933:71;;;;;;;;;;;;;;;;;:9;:17;12943:6;12933:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12913:9;:17;12923:6;12913:17;;;;;;;;;;;;;;;:91;;;;13038:32;13063:6;13038:9;:20;13048:9;13038:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13015:9;:20;13025:9;13015:20;;;;;;;;;;;;;;;:55;;;;13103:9;13086:35;;13095:6;13086:35;;;13114:6;13086:35;;;;;;:::i;:::-;;;;;;;;12554:575;;;:::o;43522:1568::-;43561:23;43587:24;43605:4;43587:9;:24::i;:::-;43561:50;;43622:25;43692:12;;43671:18;;43650;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;43622:82;;43715:12;43763:1;43744:15;:20;:46;;;;43789:1;43768:17;:22;43744:46;43741:60;;;43793:7;;;;;43741:60;43856:2;43835:18;;:23;;;;:::i;:::-;43817:15;:41;43814:111;;;43911:2;43890:18;;:23;;;;:::i;:::-;43872:41;;43814:111;43987:23;44072:1;44052:17;44031:18;;44013:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;43987:86;;44084:26;44113:36;44133:15;44113;:19;;:36;;;;:::i;:::-;44084:65;;44163:25;44191:21;44163:49;;44226:36;44243:18;44226:16;:36::i;:::-;44277:18;44298:44;44324:17;44298:21;:25;;:44;;;;:::i;:::-;44277:65;;44356:23;44382:57;44421:17;44382:34;44397:18;;44382:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;44356:83;;44450:17;44470:51;44503:17;44470:28;44485:12;;44470:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44450:71;;44532:23;44589:9;44571:15;44558:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;44532:66;;44636:1;44615:18;:22;;;;44669:1;44648:18;:22;;;;44696:1;44681:12;:16;;;;44732:9;;;;;;;;;;;44724:23;;44755:9;44724:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44711:58;;;;;44804:1;44786:15;:19;:42;;;;;44827:1;44809:15;:19;44786:42;44783:210;;;44844:46;44857:15;44874;44844:12;:46::i;:::-;44910:71;44925:18;44945:15;44962:18;;44910:71;;;;;;;;:::i;:::-;;;;;;;;44783:210;45027:15;;;;;;;;;;;45019:29;;45056:21;45019:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45006:76;;;;;43550:1540;;;;;;;;;;43522:1568;:::o;17730:473::-;17788:7;18038:1;18033;:6;18029:47;;;18063:1;18056:8;;;;18029:47;18089:9;18105:1;18101;:5;;;;:::i;:::-;18089:17;;18134:1;18129;18125;:5;;;;:::i;:::-;:10;18117:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18194:1;18187:8;;;17730:473;;;;;:::o;18680:132::-;18738:7;18765:39;18769:1;18772;18765:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18758:46;;18680:132;;;;:::o;15975:125::-;;;;:::o;16837:136::-;16895:7;16922:43;16926:1;16929;16922:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16915:50;;16837:136;;;;:::o;42387:597::-;42516:21;42554:1;42540:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42516:40;;42585:4;42567;42572:1;42567:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42611:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42601:4;42606:1;42601:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42647:62;42664:4;42679:15;42697:11;42647:8;:62::i;:::-;42749:15;:66;;;42830:11;42856:1;42900:4;42927;42947:15;42749:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42442:542;42387:597;:::o;42993:520::-;43141:62;43158:4;43173:15;43191:11;43141:8;:62::i;:::-;43247:15;:31;;;43286:9;43319:4;43339:11;43365:1;43408;43459:4;43479:15;43247:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42993:520;;:::o;19309:279::-;19395:7;19427:1;19423;:5;19430:12;19415:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19454:9;19470:1;19466;:5;;;;:::i;:::-;19454:17;;19579:1;19572:8;;;19309: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:116::-;6189:21;6204:5;6189:21;:::i;:::-;6182:5;6179:32;6169:60;;6225:1;6222;6215:12;6169:60;6119:116;:::o;6241:133::-;6284:5;6322:6;6309:20;6300:29;;6338:30;6362:5;6338:30;:::i;:::-;6241:133;;;;:::o;6380:468::-;6445:6;6453;6502:2;6490:9;6481:7;6477:23;6473:32;6470:119;;;6508:79;;:::i;:::-;6470:119;6628:1;6653:53;6698:7;6689:6;6678:9;6674:22;6653:53;:::i;:::-;6643:63;;6599:117;6755:2;6781:50;6823:7;6814:6;6803:9;6799:22;6781:50;:::i;:::-;6771:60;;6726:115;6380:468;;;;;:::o;6854:86::-;6889:7;6929:4;6922:5;6918:16;6907:27;;6854:86;;;:::o;6946:112::-;7029:22;7045:5;7029:22;:::i;:::-;7024:3;7017:35;6946:112;;:::o;7064:214::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:67;7268:1;7257:9;7253:17;7244:6;7204:67;:::i;:::-;7064:214;;;;:::o;7284:1057::-;7388:6;7396;7404;7412;7420;7428;7477:3;7465:9;7456:7;7452:23;7448:33;7445:120;;;7484:79;;:::i;:::-;7445:120;7604:1;7629:53;7674:7;7665:6;7654:9;7650:22;7629:53;:::i;:::-;7619:63;;7575:117;7731:2;7757:53;7802:7;7793:6;7782:9;7778:22;7757:53;:::i;:::-;7747:63;;7702:118;7859:2;7885:53;7930:7;7921:6;7910:9;7906:22;7885:53;:::i;:::-;7875:63;;7830:118;7987:2;8013:53;8058:7;8049:6;8038:9;8034:22;8013:53;:::i;:::-;8003:63;;7958:118;8115:3;8142:53;8187:7;8178:6;8167:9;8163:22;8142:53;:::i;:::-;8132:63;;8086:119;8244:3;8271:53;8316:7;8307:6;8296:9;8292:22;8271:53;:::i;:::-;8261:63;;8215:119;7284:1057;;;;;;;;:::o;8347:118::-;8434:24;8452:5;8434:24;:::i;:::-;8429:3;8422:37;8347:118;;:::o;8471:222::-;8564:4;8602:2;8591:9;8587:18;8579:26;;8615:71;8683:1;8672:9;8668:17;8659:6;8615:71;:::i;:::-;8471:222;;;;:::o;8699:323::-;8755:6;8804:2;8792:9;8783:7;8779:23;8775:32;8772:119;;;8810:79;;:::i;:::-;8772:119;8930:1;8955:50;8997:7;8988:6;8977:9;8973:22;8955:50;:::i;:::-;8945:60;;8901:114;8699:323;;;;:::o;9028:474::-;9096:6;9104;9153:2;9141:9;9132:7;9128:23;9124:32;9121:119;;;9159:79;;:::i;:::-;9121:119;9279:1;9304:53;9349:7;9340:6;9329:9;9325:22;9304:53;:::i;:::-;9294:63;;9250:117;9406:2;9432:53;9477:7;9468:6;9457:9;9453:22;9432:53;:::i;:::-;9422:63;;9377:118;9028:474;;;;;:::o;9508:180::-;9556:77;9553:1;9546:88;9653:4;9650:1;9643:15;9677:4;9674:1;9667:15;9694:320;9738:6;9775:1;9769:4;9765:12;9755:22;;9822:1;9816:4;9812:12;9843:18;9833:81;;9899:4;9891:6;9887:17;9877:27;;9833:81;9961:2;9953:6;9950:14;9930:18;9927:38;9924:84;;;9980:18;;:::i;:::-;9924:84;9745:269;9694:320;;;:::o;10020:182::-;10160:34;10156:1;10148:6;10144:14;10137:58;10020:182;:::o;10208:366::-;10350:3;10371:67;10435:2;10430:3;10371:67;:::i;:::-;10364:74;;10447:93;10536:3;10447:93;:::i;:::-;10565:2;10560:3;10556:12;10549:19;;10208:366;;;:::o;10580:419::-;10746:4;10784:2;10773:9;10769:18;10761:26;;10833:9;10827:4;10823:20;10819:1;10808:9;10804:17;10797:47;10861:131;10987:4;10861:131;:::i;:::-;10853:139;;10580:419;;;:::o;11005:180::-;11053:77;11050:1;11043:88;11150:4;11147:1;11140:15;11174:4;11171:1;11164:15;11191:348;11231:7;11254:20;11272:1;11254:20;:::i;:::-;11249:25;;11288:20;11306:1;11288:20;:::i;:::-;11283:25;;11476:1;11408:66;11404:74;11401:1;11398:81;11393:1;11386:9;11379:17;11375:105;11372:131;;;11483:18;;:::i;:::-;11372:131;11531:1;11528;11524:9;11513:20;;11191:348;;;;:::o;11545:180::-;11593:77;11590:1;11583:88;11690:4;11687:1;11680:15;11714:4;11711:1;11704:15;11731:185;11771:1;11788:20;11806:1;11788:20;:::i;:::-;11783:25;;11822:20;11840:1;11822:20;:::i;:::-;11817:25;;11861:1;11851:35;;11866:18;;:::i;:::-;11851:35;11908:1;11905;11901:9;11896:14;;11731:185;;;;:::o;11922:234::-;12062:34;12058:1;12050:6;12046:14;12039:58;12131:17;12126:2;12118:6;12114:15;12107:42;11922:234;:::o;12162:366::-;12304:3;12325:67;12389:2;12384:3;12325:67;:::i;:::-;12318:74;;12401:93;12490:3;12401:93;:::i;:::-;12519:2;12514:3;12510:12;12503:19;;12162:366;;;:::o;12534:419::-;12700:4;12738:2;12727:9;12723:18;12715:26;;12787:9;12781:4;12777:20;12773:1;12762:9;12758:17;12751:47;12815:131;12941:4;12815:131;:::i;:::-;12807:139;;12534:419;;;:::o;12959:305::-;12999:3;13018:20;13036:1;13018:20;:::i;:::-;13013:25;;13052:20;13070:1;13052:20;:::i;:::-;13047:25;;13206:1;13138:66;13134:74;13131:1;13128:81;13125:107;;;13212:18;;:::i;:::-;13125:107;13256:1;13253;13249:9;13242:16;;12959:305;;;;:::o;13270:244::-;13410:34;13406:1;13398:6;13394:14;13387:58;13479:27;13474:2;13466:6;13462:15;13455:52;13270:244;:::o;13520:366::-;13662:3;13683:67;13747:2;13742:3;13683:67;:::i;:::-;13676:74;;13759:93;13848:3;13759:93;:::i;:::-;13877:2;13872:3;13868:12;13861:19;;13520:366;;;:::o;13892:419::-;14058:4;14096:2;14085:9;14081:18;14073:26;;14145:9;14139:4;14135:20;14131:1;14120:9;14116:17;14109:47;14173:131;14299:4;14173:131;:::i;:::-;14165:139;;13892:419;;;:::o;14317:223::-;14457:34;14453:1;14445:6;14441:14;14434:58;14526:6;14521:2;14513:6;14509:15;14502:31;14317:223;:::o;14546:366::-;14688:3;14709:67;14773:2;14768:3;14709:67;:::i;:::-;14702:74;;14785:93;14874:3;14785:93;:::i;:::-;14903:2;14898:3;14894:12;14887:19;;14546:366;;;:::o;14918:419::-;15084:4;15122:2;15111:9;15107:18;15099:26;;15171:9;15165:4;15161:20;15157:1;15146:9;15142:17;15135:47;15199:131;15325:4;15199:131;:::i;:::-;15191:139;;14918:419;;;:::o;15343:240::-;15483:34;15479:1;15471:6;15467:14;15460:58;15552:23;15547:2;15539:6;15535:15;15528:48;15343:240;:::o;15589:366::-;15731:3;15752:67;15816:2;15811:3;15752:67;:::i;:::-;15745:74;;15828:93;15917:3;15828:93;:::i;:::-;15946:2;15941:3;15937:12;15930:19;;15589:366;;;:::o;15961:419::-;16127:4;16165:2;16154:9;16150:18;16142:26;;16214:9;16208:4;16204:20;16200:1;16189:9;16185:17;16178:47;16242:131;16368:4;16242:131;:::i;:::-;16234:139;;15961:419;;;:::o;16386:239::-;16526:34;16522:1;16514:6;16510:14;16503:58;16595:22;16590:2;16582:6;16578:15;16571:47;16386:239;:::o;16631:366::-;16773:3;16794:67;16858:2;16853:3;16794:67;:::i;:::-;16787:74;;16870:93;16959:3;16870:93;:::i;:::-;16988:2;16983:3;16979:12;16972:19;;16631:366;;;:::o;17003:419::-;17169:4;17207:2;17196:9;17192:18;17184:26;;17256:9;17250:4;17246:20;17242:1;17231:9;17227:17;17220:47;17284:131;17410:4;17284:131;:::i;:::-;17276:139;;17003:419;;;:::o;17428:225::-;17568:34;17564:1;17556:6;17552:14;17545:58;17637:8;17632:2;17624:6;17620:15;17613:33;17428:225;:::o;17659:366::-;17801:3;17822:67;17886:2;17881:3;17822:67;:::i;:::-;17815:74;;17898:93;17987:3;17898:93;:::i;:::-;18016:2;18011:3;18007:12;18000:19;;17659:366;;;:::o;18031:419::-;18197:4;18235:2;18224:9;18220:18;18212:26;;18284:9;18278:4;18274:20;18270:1;18259:9;18255:17;18248:47;18312:131;18438:4;18312:131;:::i;:::-;18304:139;;18031:419;;;:::o;18456:177::-;18596:29;18592:1;18584:6;18580:14;18573:53;18456:177;:::o;18639:366::-;18781:3;18802:67;18866:2;18861:3;18802:67;:::i;:::-;18795:74;;18878:93;18967:3;18878:93;:::i;:::-;18996:2;18991:3;18987:12;18980:19;;18639:366;;;:::o;19011:419::-;19177:4;19215:2;19204:9;19200:18;19192:26;;19264:9;19258:4;19254:20;19250:1;19239:9;19235:17;19228:47;19292:131;19418:4;19292:131;:::i;:::-;19284:139;;19011:419;;;:::o;19436:223::-;19576:34;19572:1;19564:6;19560:14;19553:58;19645:6;19640:2;19632:6;19628:15;19621:31;19436:223;:::o;19665:366::-;19807:3;19828:67;19892:2;19887:3;19828:67;:::i;:::-;19821:74;;19904:93;19993:3;19904:93;:::i;:::-;20022:2;20017:3;20013:12;20006:19;;19665:366;;;:::o;20037:419::-;20203:4;20241:2;20230:9;20226:18;20218:26;;20290:9;20284:4;20280:20;20276:1;20265:9;20261:17;20254:47;20318:131;20444:4;20318:131;:::i;:::-;20310:139;;20037:419;;;:::o;20462:221::-;20602:34;20598:1;20590:6;20586:14;20579:58;20671:4;20666:2;20658:6;20654:15;20647:29;20462:221;:::o;20689:366::-;20831:3;20852:67;20916:2;20911:3;20852:67;:::i;:::-;20845:74;;20928:93;21017:3;20928:93;:::i;:::-;21046:2;21041:3;21037:12;21030:19;;20689:366;;;:::o;21061:419::-;21227:4;21265:2;21254:9;21250:18;21242:26;;21314:9;21308:4;21304:20;21300:1;21289:9;21285:17;21278:47;21342:131;21468:4;21342:131;:::i;:::-;21334:139;;21061:419;;;:::o;21486:224::-;21626:34;21622:1;21614:6;21610:14;21603:58;21695:7;21690:2;21682:6;21678:15;21671:32;21486:224;:::o;21716:366::-;21858:3;21879:67;21943:2;21938:3;21879:67;:::i;:::-;21872:74;;21955:93;22044:3;21955:93;:::i;:::-;22073:2;22068:3;22064:12;22057:19;;21716:366;;;:::o;22088:419::-;22254:4;22292:2;22281:9;22277:18;22269:26;;22341:9;22335:4;22331:20;22327:1;22316:9;22312:17;22305:47;22369:131;22495:4;22369:131;:::i;:::-;22361:139;;22088:419;;;:::o;22513:222::-;22653:34;22649:1;22641:6;22637:14;22630:58;22722:5;22717:2;22709:6;22705:15;22698:30;22513:222;:::o;22741:366::-;22883:3;22904:67;22968:2;22963:3;22904:67;:::i;:::-;22897:74;;22980:93;23069:3;22980:93;:::i;:::-;23098:2;23093:3;23089:12;23082:19;;22741:366;;;:::o;23113:419::-;23279:4;23317:2;23306:9;23302:18;23294:26;;23366:9;23360:4;23356:20;23352:1;23341:9;23337:17;23330:47;23394:131;23520:4;23394:131;:::i;:::-;23386:139;;23113:419;;;:::o;23538:236::-;23678:34;23674:1;23666:6;23662:14;23655:58;23747:19;23742:2;23734:6;23730:15;23723:44;23538:236;:::o;23780:366::-;23922:3;23943:67;24007:2;24002:3;23943:67;:::i;:::-;23936:74;;24019:93;24108:3;24019:93;:::i;:::-;24137:2;24132:3;24128:12;24121:19;;23780:366;;;:::o;24152:419::-;24318:4;24356:2;24345:9;24341:18;24333:26;;24405:9;24399:4;24395:20;24391:1;24380:9;24376:17;24369:47;24433:131;24559:4;24433:131;:::i;:::-;24425:139;;24152:419;;;:::o;24577:172::-;24717:24;24713:1;24705:6;24701:14;24694:48;24577:172;:::o;24755:366::-;24897:3;24918:67;24982:2;24977:3;24918:67;:::i;:::-;24911:74;;24994:93;25083:3;24994:93;:::i;:::-;25112:2;25107:3;25103:12;25096:19;;24755:366;;;:::o;25127:419::-;25293:4;25331:2;25320:9;25316:18;25308:26;;25380:9;25374:4;25370:20;25366:1;25355:9;25351:17;25344:47;25408:131;25534:4;25408:131;:::i;:::-;25400:139;;25127:419;;;:::o;25552:297::-;25692:34;25688:1;25680:6;25676:14;25669:58;25761:34;25756:2;25748:6;25744:15;25737:59;25830:11;25825:2;25817:6;25813:15;25806:36;25552:297;:::o;25855:366::-;25997:3;26018:67;26082:2;26077:3;26018:67;:::i;:::-;26011:74;;26094:93;26183:3;26094:93;:::i;:::-;26212:2;26207:3;26203:12;26196:19;;25855:366;;;:::o;26227:419::-;26393:4;26431:2;26420:9;26416:18;26408:26;;26480:9;26474:4;26470:20;26466:1;26455:9;26451:17;26444:47;26508:131;26634:4;26508:131;:::i;:::-;26500:139;;26227:419;;;:::o;26652:240::-;26792:34;26788:1;26780:6;26776:14;26769:58;26861:23;26856:2;26848:6;26844:15;26837:48;26652:240;:::o;26898:366::-;27040:3;27061:67;27125:2;27120:3;27061:67;:::i;:::-;27054:74;;27137:93;27226:3;27137:93;:::i;:::-;27255:2;27250:3;27246:12;27239:19;;26898:366;;;:::o;27270:419::-;27436:4;27474:2;27463:9;27459:18;27451:26;;27523:9;27517:4;27513:20;27509:1;27498:9;27494:17;27487:47;27551:131;27677:4;27551:131;:::i;:::-;27543:139;;27270:419;;;:::o;27695:169::-;27835:21;27831:1;27823:6;27819:14;27812:45;27695:169;:::o;27870:366::-;28012:3;28033:67;28097:2;28092:3;28033:67;:::i;:::-;28026:74;;28109:93;28198:3;28109:93;:::i;:::-;28227:2;28222:3;28218:12;28211:19;;27870:366;;;:::o;28242:419::-;28408:4;28446:2;28435:9;28431:18;28423:26;;28495:9;28489:4;28485:20;28481:1;28470:9;28466:17;28459:47;28523:131;28649:4;28523:131;:::i;:::-;28515:139;;28242:419;;;:::o;28667:241::-;28807:34;28803:1;28795:6;28791:14;28784:58;28876:24;28871:2;28863:6;28859:15;28852:49;28667:241;:::o;28914:366::-;29056:3;29077:67;29141:2;29136:3;29077:67;:::i;:::-;29070:74;;29153:93;29242:3;29153:93;:::i;:::-;29271:2;29266:3;29262:12;29255:19;;28914:366;;;:::o;29286:419::-;29452:4;29490:2;29479:9;29475:18;29467:26;;29539:9;29533:4;29529:20;29525:1;29514:9;29510:17;29503:47;29567:131;29693:4;29567:131;:::i;:::-;29559:139;;29286:419;;;:::o;29711:191::-;29751:4;29771:20;29789:1;29771:20;:::i;:::-;29766:25;;29805:20;29823:1;29805:20;:::i;:::-;29800:25;;29844:1;29841;29838:8;29835:34;;;29849:18;;:::i;:::-;29835:34;29894:1;29891;29887:9;29879:17;;29711:191;;;;:::o;29908:147::-;30009:11;30046:3;30031:18;;29908:147;;;;:::o;30061:114::-;;:::o;30181:398::-;30340:3;30361:83;30442:1;30437:3;30361:83;:::i;:::-;30354:90;;30453:93;30542:3;30453:93;:::i;:::-;30571:1;30566:3;30562:11;30555:18;;30181:398;;;:::o;30585:379::-;30769:3;30791:147;30934:3;30791:147;:::i;:::-;30784:154;;30955:3;30948:10;;30585:379;;;:::o;30970:442::-;31119:4;31157:2;31146:9;31142:18;31134:26;;31170:71;31238:1;31227:9;31223:17;31214:6;31170:71;:::i;:::-;31251:72;31319:2;31308:9;31304:18;31295:6;31251:72;:::i;:::-;31333;31401:2;31390:9;31386:18;31377:6;31333:72;:::i;:::-;30970:442;;;;;;:::o;31418:220::-;31558:34;31554:1;31546:6;31542:14;31535:58;31627:3;31622:2;31614:6;31610:15;31603:28;31418:220;:::o;31644:366::-;31786:3;31807:67;31871:2;31866:3;31807:67;:::i;:::-;31800:74;;31883:93;31972:3;31883:93;:::i;:::-;32001:2;31996:3;31992:12;31985:19;;31644:366;;;:::o;32016:419::-;32182:4;32220:2;32209:9;32205:18;32197:26;;32269:9;32263:4;32259:20;32255:1;32244:9;32240:17;32233:47;32297:131;32423:4;32297:131;:::i;:::-;32289:139;;32016:419;;;:::o;32441:180::-;32489:77;32486:1;32479:88;32586:4;32583:1;32576:15;32610:4;32607:1;32600:15;32627:180;32675:77;32672:1;32665:88;32772:4;32769:1;32762:15;32796:4;32793:1;32786:15;32813:143;32870:5;32901:6;32895:13;32886:22;;32917:33;32944:5;32917:33;:::i;:::-;32813:143;;;;:::o;32962:351::-;33032:6;33081:2;33069:9;33060:7;33056:23;33052:32;33049:119;;;33087:79;;:::i;:::-;33049:119;33207:1;33232:64;33288:7;33279:6;33268:9;33264:22;33232:64;:::i;:::-;33222:74;;33178:128;32962:351;;;;:::o;33319:85::-;33364:7;33393:5;33382:16;;33319:85;;;:::o;33410:158::-;33468:9;33501:61;33519:42;33528:32;33554:5;33528:32;:::i;:::-;33519:42;:::i;:::-;33501:61;:::i;:::-;33488:74;;33410:158;;;:::o;33574:147::-;33669:45;33708:5;33669:45;:::i;:::-;33664:3;33657:58;33574:147;;:::o;33727:114::-;33794:6;33828:5;33822:12;33812:22;;33727:114;;;:::o;33847:184::-;33946:11;33980:6;33975:3;33968:19;34020:4;34015:3;34011:14;33996:29;;33847:184;;;;:::o;34037:132::-;34104:4;34127:3;34119:11;;34157:4;34152:3;34148:14;34140:22;;34037:132;;;:::o;34175:108::-;34252:24;34270:5;34252:24;:::i;:::-;34247:3;34240:37;34175:108;;:::o;34289:179::-;34358:10;34379:46;34421:3;34413:6;34379:46;:::i;:::-;34457:4;34452:3;34448:14;34434:28;;34289:179;;;;:::o;34474:113::-;34544:4;34576;34571:3;34567:14;34559:22;;34474:113;;;:::o;34623:732::-;34742:3;34771:54;34819:5;34771:54;:::i;:::-;34841:86;34920:6;34915:3;34841:86;:::i;:::-;34834:93;;34951:56;35001:5;34951:56;:::i;:::-;35030:7;35061:1;35046:284;35071:6;35068:1;35065:13;35046:284;;;35147:6;35141:13;35174:63;35233:3;35218:13;35174:63;:::i;:::-;35167:70;;35260:60;35313:6;35260:60;:::i;:::-;35250:70;;35106:224;35093:1;35090;35086:9;35081:14;;35046:284;;;35050:14;35346:3;35339:10;;34747:608;;;34623:732;;;;:::o;35361:831::-;35624:4;35662:3;35651:9;35647:19;35639:27;;35676:71;35744:1;35733:9;35729:17;35720:6;35676:71;:::i;:::-;35757:80;35833:2;35822:9;35818:18;35809:6;35757:80;:::i;:::-;35884:9;35878:4;35874:20;35869:2;35858:9;35854:18;35847:48;35912:108;36015:4;36006:6;35912:108;:::i;:::-;35904:116;;36030:72;36098:2;36087:9;36083:18;36074:6;36030:72;:::i;:::-;36112:73;36180:3;36169:9;36165:19;36156:6;36112:73;:::i;:::-;35361:831;;;;;;;;:::o;36198:807::-;36447:4;36485:3;36474:9;36470:19;36462:27;;36499:71;36567:1;36556:9;36552:17;36543:6;36499:71;:::i;:::-;36580:72;36648:2;36637:9;36633:18;36624:6;36580:72;:::i;:::-;36662:80;36738:2;36727:9;36723:18;36714:6;36662:80;:::i;:::-;36752;36828:2;36817:9;36813:18;36804:6;36752:80;:::i;:::-;36842:73;36910:3;36899:9;36895:19;36886:6;36842:73;:::i;:::-;36925;36993:3;36982:9;36978:19;36969:6;36925:73;:::i;:::-;36198:807;;;;;;;;;:::o;37011:143::-;37068:5;37099:6;37093:13;37084:22;;37115:33;37142:5;37115:33;:::i;:::-;37011:143;;;;:::o;37160:663::-;37248:6;37256;37264;37313:2;37301:9;37292:7;37288:23;37284:32;37281:119;;;37319:79;;:::i;:::-;37281:119;37439:1;37464:64;37520:7;37511:6;37500:9;37496:22;37464:64;:::i;:::-;37454:74;;37410:128;37577:2;37603:64;37659:7;37650:6;37639:9;37635:22;37603:64;:::i;:::-;37593:74;;37548:129;37716:2;37742:64;37798:7;37789:6;37778:9;37774:22;37742:64;:::i;:::-;37732:74;;37687:129;37160:663;;;;;:::o
Swarm Source
ipfs://233988f4a74a217ff6150e27fe0be88c2a10405bbb83708ffb6d99068d459ec7
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.