ERC-20
DeFi
Overview
Max Total Supply
1,000,000,000 $dlance
Holders
2,345 ( -0.043%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DeeLance
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-22 */ // File: https://github.com/aifeelit/pink-antibot-guide-binance-solidity/blob/main/IPinkAntiBot.sol pragma solidity >=0.5.0; interface IPinkAntiBot { function setTokenOwner(address owner) external; function onPreTransferCheck( address from, address to, uint256 amount ) external; } // File: https://github.com/Uniswap/v2-core/blob/master/contracts/interfaces/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: https://github.com/Uniswap/v2-core/blob/master/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; 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; } // File: https://github.com/Uniswap/v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; 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); } // File: https://github.com/Uniswap/v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; 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; } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { 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}. * * 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 default value returned by this function, unless * it's 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); 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) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + 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) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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 += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - 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 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // File: aaa.sol //SPDX-License-Identifier: MIT pragma solidity =0.8.17; contract DeeLance is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private feeActive = true; bool public tradingEnabled; uint256 public launchTime; uint256 internal totaltokensupply = 1000000000 * (10**18); address public deadWallet = 0x000000000000000000000000000000000000dEaD; IPinkAntiBot public pinkAntiBot; uint256 public buyFee = 0; uint256 public sellFee = 0; uint256 public maxtranscation = 5000000000000000; bool public antiBotEnabled; bool public antiDumpEnabled = false; bool public verifierOne = false; bool public verifierOwner = false; address public feeWallet = 0x91130ca7111A5333051dB4b4c8aC553Bf25041E8; address public pinkAntiBot_ = 0xf4f071EB637b64fC78C9eA87DaCE4445D119CA35; address public firstVerifier = 0x3de72566bA2917D96a90500bd8B165863EE4c900; modifier onlyfirstVerifier() { require(_msgSender() == firstVerifier, "Ownable: caller is not the first voter"); _; } // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => uint256) public antiDump; mapping (address => uint256) public sellingTotal; mapping (address => uint256) public lastSellstamp; uint256 public antiDumpTime = 10 minutes; uint256 public antiDumpAmount = totaltokensupply.mul(5).div(10000); // 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 ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet); constructor() ERC20("DeeLance", "$dlance") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); pinkAntiBot = IPinkAntiBot(pinkAntiBot_); pinkAntiBot.setTokenOwner(msg.sender); antiBotEnabled = true; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(owner(), totaltokensupply); } receive() external payable { } function setEnableAntiBot(bool _enable) external onlyOwner { antiBotEnabled = _enable; } function setantiDumpEnabled(bool nodumpamount) external onlyOwner { antiDumpEnabled = nodumpamount; } function setantiDump(uint256 interval, uint256 amount) external onlyOwner { antiDumpTime = interval; antiDumpAmount = amount; } function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "DeeLance: The router already has that address"); require(newAddress != address(0), "new address is zero address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router02(newAddress); address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); uniswapV2Pair = _uniswapV2Pair; } function excludeFromFees(address account, bool excluded) public onlyOwner { require(_isExcludedFromFees[account] != excluded, "Deelance: Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setbuyFee(uint256 value) external onlyOwner{ require(value <= 15, "Max 15%"); buyFee = value; } function setsellFee(uint256 value) external onlyOwner{ require(value <= 15, "Max 15%"); sellFee = value; } function setmaxtranscation(uint256 value) external onlyOwner{ maxtranscation = value; } function setfeeWallet(address feaddress) public onlyOwner { feeWallet = feaddress; } function setFirstverifier(address faddress) public onlyOwner { require(faddress != address(0), "Ownable: new voter is the zero address"); require(verifierOne == true && verifierOwner == true ,'not active'); firstVerifier = faddress; verifierOne = false; } function setfeeActive(bool value) external onlyOwner { feeActive = value; } function voteVerifierOne(bool voteverifier) public onlyfirstVerifier() { verifierOne = voteverifier; } function voteVerifierOwner(bool voteverifier) public onlyOwner { verifierOwner = voteverifier; } function startTrading() external onlyOwner{ require(launchTime == 0, "Already Listed!"); launchTime = block.timestamp; tradingEnabled = true; } function pauseTrading() external onlyOwner{ launchTime = 0 ; tradingEnabled = false; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "DeeLance: The UniSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "DeeLance: Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require( _isExcludedFromFees[from] || _isExcludedFromFees[to] || amount <= maxtranscation,"Max transaction Limit Exceeds!"); if (antiBotEnabled) { pinkAntiBot.onPreTransferCheck(from, to, amount); } if(!_isExcludedFromFees[from]) { require(tradingEnabled == true, "Trading not enabled yet"); } if(from == owner()) { require(verifierOne == true && verifierOwner == true ,"not active"); } if(amount == 0) { super._transfer(from, to, 0); return; } if ( !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && launchTime + 3 minutes >= block.timestamp ) { // don't allow to buy more than 0.01% of total supply for 3 minutes after launch require( automatedMarketMakerPairs[from] || balanceOf(to).add(amount) <= totaltokensupply.div(10000), "AntiBot: Buy Banned!" ); if (launchTime + 180 seconds >= block.timestamp) // don't allow sell for 180 seconds after launch require( automatedMarketMakerPairs[to], "AntiBot: Sell Banned!" ); } if ( antiDumpEnabled && automatedMarketMakerPairs[to] && !_isExcludedFromFees[from] ) { require( antiDump[from] < block.timestamp, "Err: antiDump active" ); if ( lastSellstamp[from] + antiDumpTime < block.timestamp ) { lastSellstamp[from] = block.timestamp; sellingTotal[from] = 0; } sellingTotal[from] = sellingTotal[from].add(amount); if (sellingTotal[from] >= antiDumpAmount) { antiDump[from] = block.timestamp + antiDumpTime; } } bool takeFee = feeActive; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if(takeFee) { uint256 fees = 0; if(automatedMarketMakerPairs[from]) { fees += amount.mul(buyFee).div(100); } if(automatedMarketMakerPairs[to]){ fees += amount.mul(sellFee).div(100); } amount = amount.sub(fees); super._transfer(from, feeWallet, fees); } super._transfer(from, to, amount); } function recoverothertokens(address tokenAddress, uint256 tokenAmount) public onlyOwner { require(tokenAddress != address(this), "cannot be same contract address"); IERC20(tokenAddress).transfer(owner(), tokenAmount); } function recovertoken(address payable destination) public onlyOwner { require(destination != address(0), "destination is zero address"); destination.transfer(address(this).balance); } 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(0), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"antiDump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDumpAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDumpEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDumpTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSellstamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxtranscation","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":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pinkAntiBot","outputs":[{"internalType":"contract IPinkAntiBot","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pinkAntiBot_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverothertokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"recovertoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sellingTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setEnableAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"faddress","type":"address"}],"name":"setFirstverifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"interval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setantiDump","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"nodumpamount","type":"bool"}],"name":"setantiDumpEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setbuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setfeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"feaddress","type":"address"}],"name":"setfeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxtranscation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setsellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verifierOne","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"verifierOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"voteverifier","type":"bool"}],"name":"voteVerifierOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"voteverifier","type":"bool"}],"name":"voteVerifierOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600760146101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce800000060095561dead600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c556000600d556611c37937e08000600e556000600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff0219169083151502179055506000600f60036101000a81548160ff0219169083151502179055507391130ca7111a5333051db4b4c8ac553bf25041e8600f60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f4f071eb637b64fc78c9ea87dace4445d119ca35601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733de72566ba2917d96a90500bd8b165863ee4c900601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610258601655620002156127106200020160056009546200065e60201b620020211790919060201c565b6200067660201b620020371790919060201c565b6017553480156200022557600080fd5b506040518060400160405280600881526020017f4465654c616e63650000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f24646c616e6365000000000000000000000000000000000000000000000000008152508160039081620002a3919062000e8e565b508060049081620002b5919062000e8e565b505050620002d8620002cc6200068e60201b60201c565b6200069660201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000365919062000fdf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f3919062000fdf565b6040518363ffffffff1660e01b81526004016200041292919062001022565b6020604051808303816000875af115801562000432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000458919062000fdf565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004ef8160016200075c60201b60201c565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318e02bd9336040518263ffffffff1660e01b8152600401620005af91906200104f565b600060405180830381600087803b158015620005ca57600080fd5b505af1158015620005df573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff02191690831515021790555062000620620006126200089260201b60201c565b6001620008bc60201b60201c565b62000633306001620008bc60201b60201c565b62000656620006476200089260201b60201c565b60095462000a0c60201b60201c565b50506200143b565b600081836200066e91906200109b565b905092915050565b6000818362000686919062001115565b905092915050565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e890620011fa565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008cc62000b7960201b60201c565b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009589062001292565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a009190620012d1565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a75906200133e565b60405180910390fd5b62000a926000838362000c0a60201b60201c565b806002600082825462000aa6919062001360565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b599190620013ac565b60405180910390a362000b756000838362000c0f60201b60201c565b5050565b62000b896200068e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000baf6200089260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000c08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bff9062001419565b60405180910390fd5b565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c9657607f821691505b60208210810362000cac5762000cab62000c4e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cd7565b62000d22868362000cd7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d6f62000d6962000d638462000d3a565b62000d44565b62000d3a565b9050919050565b6000819050919050565b62000d8b8362000d4e565b62000da362000d9a8262000d76565b84845462000ce4565b825550505050565b600090565b62000dba62000dab565b62000dc781848462000d80565b505050565b5b8181101562000def5762000de360008262000db0565b60018101905062000dcd565b5050565b601f82111562000e3e5762000e088162000cb2565b62000e138462000cc7565b8101602085101562000e23578190505b62000e3b62000e328562000cc7565b83018262000dcc565b50505b505050565b600082821c905092915050565b600062000e636000198460080262000e43565b1980831691505092915050565b600062000e7e838362000e50565b9150826002028217905092915050565b62000e998262000c14565b67ffffffffffffffff81111562000eb55762000eb462000c1f565b5b62000ec1825462000c7d565b62000ece82828562000df3565b600060209050601f83116001811462000f06576000841562000ef1578287015190505b62000efd858262000e70565b86555062000f6d565b601f19841662000f168662000cb2565b60005b8281101562000f405784890151825560018201915060208501945060208101905062000f19565b8683101562000f60578489015162000f5c601f89168262000e50565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fa78262000f7a565b9050919050565b62000fb98162000f9a565b811462000fc557600080fd5b50565b60008151905062000fd98162000fae565b92915050565b60006020828403121562000ff85762000ff762000f75565b5b6000620010088482850162000fc8565b91505092915050565b6200101c8162000f9a565b82525050565b600060408201905062001039600083018562001011565b62001048602083018462001011565b9392505050565b600060208201905062001066600083018462001011565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010a88262000d3a565b9150620010b58362000d3a565b9250828202620010c58162000d3a565b91508282048414831517620010df57620010de6200106c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011228262000d3a565b91506200112f8362000d3a565b925082620011425762001141620010e6565b5b828204905092915050565b600082825260208201905092915050565b7f4465654c616e63653a204175746f6d61746564206d61726b6574206d616b657260008201527f207061697220697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b6000620011e26042836200114d565b9150620011ef826200115e565b606082019050919050565b600060208201905081810360008301526200121581620011d3565b9050919050565b7f4465656c616e63653a204163636f756e7420697320616c72656164792074686560008201527f2076616c7565206f6620276578636c7564656427000000000000000000000000602082015250565b60006200127a6034836200114d565b915062001287826200121c565b604082019050919050565b60006020820190508181036000830152620012ad816200126b565b9050919050565b60008115159050919050565b620012cb81620012b4565b82525050565b6000602082019050620012e86000830184620012c0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001326601f836200114d565b91506200133382620012ee565b602082019050919050565b60006020820190508181036000830152620013598162001317565b9050919050565b60006200136d8262000d3a565b91506200137a8362000d3a565b92508282019050808211156200139557620013946200106c565b5b92915050565b620013a68162000d3a565b82525050565b6000602082019050620013c360008301846200139b565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620014016020836200114d565b91506200140e82620013c9565b602082019050919050565b600060208201905081810360008301526200143481620013f2565b9050919050565b614ad0806200144b6000396000f3fe60806040526004361061036e5760003560e01c8063715018a6116101c6578063a6e30b69116100f7578063d8c6404b11610095578063f121275f1161006f578063f121275f14610cb4578063f25f4b5614610cdd578063f2fde38b14610d08578063f40a115014610d3157610375565b8063d8c6404b14610c21578063dd62ed3e14610c4c578063ebc77bfb14610c8957610375565b8063c0246668116100d1578063c024666814610b7d578063c1a63c0214610ba6578063c492f04614610bcf578063cc462bb914610bf857610375565b8063a6e30b6914610ada578063a9059cbb14610b03578063b62496f514610b4057610375565b806395d89b411161016457806399c20a3e1161013e57806399c20a3e14610a0c5780639a7a23d614610a495780639c7a91fe14610a72578063a457c2d714610a9d57610375565b806395d89b411461098f57806397661359146109ba57806397d66f80146109e357610375565b80637f8810bf116101a05780637f8810bf146108e557806385141a77146109105780638da5cb5b1461093b57806394c023ee1461096657610375565b8063715018a614610878578063790ca4131461088f5780637cbadcd2146108ba57610375565b806339509351116102a05780634fbee1931161023e578063623badb111610218578063623badb1146107be57806365b8dbc0146107e957806368c1e14c1461081257806370a082311461083b57610375565b80634fbee1931461071b578063517cb2531461075857806360763df41461078157610375565b80634568942e1161027a5780634568942e1461065d578063470624021461069a57806349bd5a5e146106c55780634ada218b146106f057610375565b806339509351146105ca57806339b1ee9314610607578063407133d21461063257610375565b80631a9aeb661161030d578063293230b8116102e7578063293230b8146105345780632b14ca561461054b5780632b15669814610576578063313ce5671461059f57610375565b80631a9aeb66146104a35780631f46b1c6146104ce57806323b872dd146104f757610375565b8063095ea7b311610349578063095ea7b3146103f95780631031e36e146104365780631694505e1461044d57806318160ddd1461047857610375565b80625abb001461037a5780630459a91e146103a357806306fdde03146103ce57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c919061339b565b610d5a565b005b3480156103af57600080fd5b506103b8610d7f565b6040516103c59190613409565b60405180910390f35b3480156103da57600080fd5b506103e3610da5565b6040516103f091906134b4565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b9190613538565b610e37565b60405161042d9190613587565b60405180910390f35b34801561044257600080fd5b5061044b610e5a565b005b34801561045957600080fd5b50610462610e87565b60405161046f9190613601565b60405180910390f35b34801561048457600080fd5b5061048d610ead565b60405161049a919061362b565b60405180910390f35b3480156104af57600080fd5b506104b8610eb7565b6040516104c5919061362b565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f0919061339b565b610ebd565b005b34801561050357600080fd5b5061051e60048036038101906105199190613646565b610ee2565b60405161052b9190613587565b60405180910390f35b34801561054057600080fd5b50610549610f11565b005b34801561055757600080fd5b50610560610f82565b60405161056d919061362b565b60405180910390f35b34801561058257600080fd5b5061059d6004803603810190610598919061339b565b610f88565b005b3480156105ab57600080fd5b506105b4610fad565b6040516105c191906136b5565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190613538565b610fb6565b6040516105fe9190613587565b60405180910390f35b34801561061357600080fd5b5061061c610fed565b6040516106299190613587565b60405180910390f35b34801561063e57600080fd5b50610647611000565b60405161065491906136f1565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f919061370c565b611026565b604051610691919061362b565b60405180910390f35b3480156106a657600080fd5b506106af61103e565b6040516106bc919061362b565b60405180910390f35b3480156106d157600080fd5b506106da611044565b6040516106e79190613409565b60405180910390f35b3480156106fc57600080fd5b5061070561106a565b6040516107129190613587565b60405180910390f35b34801561072757600080fd5b50610742600480360381019061073d919061370c565b61107d565b60405161074f9190613587565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613739565b6110d3565b005b34801561078d57600080fd5b506107a860048036038101906107a3919061370c565b6110e5565b6040516107b5919061362b565b60405180910390f35b3480156107ca57600080fd5b506107d36110fd565b6040516107e09190613587565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b919061370c565b611110565b005b34801561081e57600080fd5b506108396004803603810190610834919061370c565b6114bb565b005b34801561084757600080fd5b50610862600480360381019061085d919061370c565b611507565b60405161086f919061362b565b60405180910390f35b34801561088457600080fd5b5061088d61154f565b005b34801561089b57600080fd5b506108a4611563565b6040516108b1919061362b565b60405180910390f35b3480156108c657600080fd5b506108cf611569565b6040516108dc9190613587565b60405180910390f35b3480156108f157600080fd5b506108fa61157c565b6040516109079190613409565b60405180910390f35b34801561091c57600080fd5b506109256115a2565b6040516109329190613409565b60405180910390f35b34801561094757600080fd5b506109506115c8565b60405161095d9190613409565b60405180910390f35b34801561097257600080fd5b5061098d6004803603810190610988919061339b565b6115f2565b005b34801561099b57600080fd5b506109a46116a6565b6040516109b191906134b4565b60405180910390f35b3480156109c657600080fd5b506109e160048036038101906109dc919061370c565b611738565b005b3480156109ef57600080fd5b50610a0a6004803603810190610a0591906137a4565b611883565b005b348015610a1857600080fd5b50610a336004803603810190610a2e919061370c565b611944565b604051610a40919061362b565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b91906137d1565b61195c565b005b348015610a7e57600080fd5b50610a87611a02565b604051610a94919061362b565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf9190613538565b611a08565b604051610ad19190613587565b60405180910390f35b348015610ae657600080fd5b50610b016004803603810190610afc9190613739565b611a7f565b005b348015610b0f57600080fd5b50610b2a6004803603810190610b259190613538565b611ad5565b604051610b379190613587565b60405180910390f35b348015610b4c57600080fd5b50610b676004803603810190610b62919061370c565b611af8565b604051610b749190613587565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f91906137d1565b611b18565b005b348015610bb257600080fd5b50610bcd6004803603810190610bc89190613739565b611c5b565b005b348015610bdb57600080fd5b50610bf66004803603810190610bf19190613876565b611cb1565b005b348015610c0457600080fd5b50610c1f6004803603810190610c1a91906138d6565b611d99565b005b348015610c2d57600080fd5b50610c36611db3565b604051610c439190613587565b60405180910390f35b348015610c5857600080fd5b50610c736004803603810190610c6e9190613916565b611dc6565b604051610c80919061362b565b60405180910390f35b348015610c9557600080fd5b50610c9e611e4d565b604051610cab919061362b565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd69190613538565b611e53565b005b348015610ce957600080fd5b50610cf2611f53565b604051610cff9190613409565b60405180910390f35b348015610d1457600080fd5b50610d2f6004803603810190610d2a919061370c565b611f79565b005b348015610d3d57600080fd5b50610d586004803603810190610d53919061339b565b611ffc565b005b610d6261204d565b80600760146101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610db490613985565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613985565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b600080610e426120cb565b9050610e4f8185856120d3565b600191505092915050565b610e6261204d565b60006008819055506000600760156101000a81548160ff021916908315150217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600e5481565b610ec561204d565b80600f60006101000a81548160ff02191690831515021790555050565b600080610eed6120cb565b9050610efa85828561229c565b610f05858585612328565b60019150509392505050565b610f1961204d565b600060085414610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590613a02565b60405180910390fd5b426008819055506001600760156101000a81548160ff021916908315150217905550565b600d5481565b610f9061204d565b80600f60016101000a81548160ff02191690831515021790555050565b60006012905090565b600080610fc16120cb565b9050610fe2818585610fd38589611dc6565b610fdd9190613a51565b6120d3565b600191505092915050565b600f60029054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60156020528060005260406000206000915090505481565b600c5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110db61204d565b80600e8190555050565b60146020528060005260406000206000915090505481565b600f60039054906101000a900460ff1681565b61111861204d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90613af7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90613b63565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113679190613b98565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190613b98565b6040518363ffffffff1660e01b8152600401611431929190613bc5565b6020604051808303816000875af1158015611450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114749190613b98565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114c361204d565b80600f60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61155761204d565b6115616000612eb4565b565b60085481565b600f60019054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116336120cb565b73ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168090613c60565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b6060600480546116b590613985565b80601f01602080910402602001604051908101604052809291908181526020018280546116e190613985565b801561172e5780601f106117035761010080835404028352916020019161172e565b820191906000526020600020905b81548152906001019060200180831161171157829003601f168201915b5050505050905090565b61174061204d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690613cf2565b60405180910390fd5b60011515600f60029054906101000a900460ff1615151480156117e5575060011515600f60039054906101000a900460ff161515145b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90613d5e565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60026101000a81548160ff02191690831515021790555050565b61188b61204d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f190613dca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611940573d6000803e3d6000fd5b5050565b60136020528060005260406000206000915090505481565b61196461204d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613e82565b60405180910390fd5b6119fe8282612f7a565b5050565b60165481565b600080611a136120cb565b90506000611a218286611dc6565b905083811015611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613f14565b60405180910390fd5b611a7382868684036120d3565b60019250505092915050565b611a8761204d565b600f811115611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613f80565b60405180910390fd5b80600c8190555050565b600080611ae06120cb565b9050611aed818585612328565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b611b2061204d565b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614012565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c4f9190613587565b60405180910390a25050565b611c6361204d565b600f811115611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613f80565b60405180910390fd5b80600d8190555050565b611cb961204d565b60005b83839050811015611d58578160126000868685818110611cdf57611cde614032565b5b9050602002016020810190611cf4919061370c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d5090614061565b915050611cbc565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611d8c9392919061416c565b60405180910390a1505050565b611da161204d565b81601681905550806017819055505050565b600f60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60175481565b611e5b61204d565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec0906141ea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611eed6115c8565b836040518363ffffffff1660e01b8152600401611f0b92919061420a565b6020604051808303816000875af1158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e9190614248565b505050565b600f60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f8161204d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe7906142e7565b60405180910390fd5b611ff981612eb4565b50565b61200461204d565b80600f60036101000a81548160ff02191690831515021790555050565b6000818361202f9190614307565b905092915050565b600081836120459190614378565b905092915050565b6120556120cb565b73ffffffffffffffffffffffffffffffffffffffff166120736115c8565b73ffffffffffffffffffffffffffffffffffffffff16146120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c0906143f5565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990614487565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890614519565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161228f919061362b565b60405180910390a3505050565b60006122a88484611dc6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146123225781811015612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90614585565b60405180910390fd5b61232184848484036120d3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90614617565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd906146a9565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124a75750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124b45750600e548111155b6124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea90614715565b60405180910390fd5b600f60009054906101000a900460ff161561259a57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663487608588484846040518463ffffffff1660e01b815260040161256793929190614735565b600060405180830381600087803b15801561258157600080fd5b505af1158015612595573d6000803e3d6000fd5b505050505b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126425760011515600760159054906101000a900460ff16151514612641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612638906147b8565b60405180910390fd5b5b61264a6115c8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126f25760011515600f60029054906101000a900460ff1615151480156126b2575060011515600f60039054906101000a900460ff161515145b6126f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e890613d5e565b60405180910390fd5b5b6000810361270b57612706838360006130ad565b612eaf565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127af5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127c957504260b46008546127c69190613a51565b10155b1561293857601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612856575061283861271060095461203790919063ffffffff16565b6128538261284585611507565b61332390919063ffffffff16565b11155b612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90614824565b60405180910390fd5b4260b46008546128a59190613a51565b1061293757601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90614890565b60405180910390fd5b5b5b600f60019054906101000a900460ff16801561299d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156129f35750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c875742601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a70906148fc565b60405180910390fd5b42601654601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ac79190613a51565b1015612b575742601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612ba981601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332390919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601754601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612c865760165442612c429190613a51565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000600760149054906101000a900460ff169050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d3c5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d4657600090505b8015612ea2576000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dd657612dc86064612dba600c548661202190919063ffffffff16565b61203790919063ffffffff16565b81612dd39190613a51565b90505b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e5e57612e506064612e42600d548661202190919063ffffffff16565b61203790919063ffffffff16565b81612e5b9190613a51565b90505b612e71818461333990919063ffffffff16565b9250612ea085600f60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836130ad565b505b612ead8484846130ad565b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361300c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613003906149b4565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361311c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311390614617565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361318b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613182906146a9565b60405180910390fd5b61319683838361334f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561321c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321390614a46565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330a919061362b565b60405180910390a361331d848484613354565b50505050565b600081836133319190613a51565b905092915050565b600081836133479190614a66565b905092915050565b505050565b505050565b600080fd5b600080fd5b60008115159050919050565b61337881613363565b811461338357600080fd5b50565b6000813590506133958161336f565b92915050565b6000602082840312156133b1576133b0613359565b5b60006133bf84828501613386565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133f3826133c8565b9050919050565b613403816133e8565b82525050565b600060208201905061341e60008301846133fa565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561345e578082015181840152602081019050613443565b60008484015250505050565b6000601f19601f8301169050919050565b600061348682613424565b613490818561342f565b93506134a0818560208601613440565b6134a98161346a565b840191505092915050565b600060208201905081810360008301526134ce818461347b565b905092915050565b6134df816133e8565b81146134ea57600080fd5b50565b6000813590506134fc816134d6565b92915050565b6000819050919050565b61351581613502565b811461352057600080fd5b50565b6000813590506135328161350c565b92915050565b6000806040838503121561354f5761354e613359565b5b600061355d858286016134ed565b925050602061356e85828601613523565b9150509250929050565b61358181613363565b82525050565b600060208201905061359c6000830184613578565b92915050565b6000819050919050565b60006135c76135c26135bd846133c8565b6135a2565b6133c8565b9050919050565b60006135d9826135ac565b9050919050565b60006135eb826135ce565b9050919050565b6135fb816135e0565b82525050565b600060208201905061361660008301846135f2565b92915050565b61362581613502565b82525050565b6000602082019050613640600083018461361c565b92915050565b60008060006060848603121561365f5761365e613359565b5b600061366d868287016134ed565b935050602061367e868287016134ed565b925050604061368f86828701613523565b9150509250925092565b600060ff82169050919050565b6136af81613699565b82525050565b60006020820190506136ca60008301846136a6565b92915050565b60006136db826135ce565b9050919050565b6136eb816136d0565b82525050565b600060208201905061370660008301846136e2565b92915050565b60006020828403121561372257613721613359565b5b6000613730848285016134ed565b91505092915050565b60006020828403121561374f5761374e613359565b5b600061375d84828501613523565b91505092915050565b6000613771826133c8565b9050919050565b61378181613766565b811461378c57600080fd5b50565b60008135905061379e81613778565b92915050565b6000602082840312156137ba576137b9613359565b5b60006137c88482850161378f565b91505092915050565b600080604083850312156137e8576137e7613359565b5b60006137f6858286016134ed565b925050602061380785828601613386565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261383657613835613811565b5b8235905067ffffffffffffffff81111561385357613852613816565b5b60208301915083602082028301111561386f5761386e61381b565b5b9250929050565b60008060006040848603121561388f5761388e613359565b5b600084013567ffffffffffffffff8111156138ad576138ac61335e565b5b6138b986828701613820565b935093505060206138cc86828701613386565b9150509250925092565b600080604083850312156138ed576138ec613359565b5b60006138fb85828601613523565b925050602061390c85828601613523565b9150509250929050565b6000806040838503121561392d5761392c613359565b5b600061393b858286016134ed565b925050602061394c858286016134ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061399d57607f821691505b6020821081036139b0576139af613956565b5b50919050565b7f416c7265616479204c6973746564210000000000000000000000000000000000600082015250565b60006139ec600f8361342f565b91506139f7826139b6565b602082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5c82613502565b9150613a6783613502565b9250828201905080821115613a7f57613a7e613a22565b5b92915050565b7f4465654c616e63653a2054686520726f7574657220616c72656164792068617360008201527f2074686174206164647265737300000000000000000000000000000000000000602082015250565b6000613ae1602d8361342f565b9150613aec82613a85565b604082019050919050565b60006020820190508181036000830152613b1081613ad4565b9050919050565b7f6e65772061646472657373206973207a65726f20616464726573730000000000600082015250565b6000613b4d601b8361342f565b9150613b5882613b17565b602082019050919050565b60006020820190508181036000830152613b7c81613b40565b9050919050565b600081519050613b92816134d6565b92915050565b600060208284031215613bae57613bad613359565b5b6000613bbc84828501613b83565b91505092915050565b6000604082019050613bda60008301856133fa565b613be760208301846133fa565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520666972737460008201527f20766f7465720000000000000000000000000000000000000000000000000000602082015250565b6000613c4a60268361342f565b9150613c5582613bee565b604082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b7f4f776e61626c653a206e657720766f74657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cdc60268361342f565b9150613ce782613c80565b604082019050919050565b60006020820190508181036000830152613d0b81613ccf565b9050919050565b7f6e6f742061637469766500000000000000000000000000000000000000000000600082015250565b6000613d48600a8361342f565b9150613d5382613d12565b602082019050919050565b60006020820190508181036000830152613d7781613d3b565b9050919050565b7f64657374696e6174696f6e206973207a65726f20616464726573730000000000600082015250565b6000613db4601b8361342f565b9150613dbf82613d7e565b602082019050919050565b60006020820190508181036000830152613de381613da7565b9050919050565b7f4465654c616e63653a2054686520556e695377617020706169722063616e6e6f60008201527f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b6560208201527f744d616b65725061697273000000000000000000000000000000000000000000604082015250565b6000613e6c604b8361342f565b9150613e7782613dea565b606082019050919050565b60006020820190508181036000830152613e9b81613e5f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613efe60258361342f565b9150613f0982613ea2565b604082019050919050565b60006020820190508181036000830152613f2d81613ef1565b9050919050565b7f4d61782031352500000000000000000000000000000000000000000000000000600082015250565b6000613f6a60078361342f565b9150613f7582613f34565b602082019050919050565b60006020820190508181036000830152613f9981613f5d565b9050919050565b7f4465656c616e63653a204163636f756e7420697320616c72656164792074686560008201527f2076616c7565206f6620276578636c7564656427000000000000000000000000602082015250565b6000613ffc60348361342f565b915061400782613fa0565b604082019050919050565b6000602082019050818103600083015261402b81613fef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061406c82613502565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361409e5761409d613a22565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b6140cd816133e8565b82525050565b60006140df83836140c4565b60208301905092915050565b60006140fa60208401846134ed565b905092915050565b6000602082019050919050565b600061411b83856140a9565b9350614126826140ba565b8060005b8581101561415f5761413c82846140eb565b61414688826140d3565b975061415183614102565b92505060018101905061412a565b5085925050509392505050565b6000604082019050818103600083015261418781858761410f565b90506141966020830184613578565b949350505050565b7f63616e6e6f742062652073616d6520636f6e7472616374206164647265737300600082015250565b60006141d4601f8361342f565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b600060408201905061421f60008301856133fa565b61422c602083018461361c565b9392505050565b6000815190506142428161336f565b92915050565b60006020828403121561425e5761425d613359565b5b600061426c84828501614233565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142d160268361342f565b91506142dc82614275565b604082019050919050565b60006020820190508181036000830152614300816142c4565b9050919050565b600061431282613502565b915061431d83613502565b925082820261432b81613502565b9150828204841483151761434257614341613a22565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061438382613502565b915061438e83613502565b92508261439e5761439d614349565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143df60208361342f565b91506143ea826143a9565b602082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061447160248361342f565b915061447c82614415565b604082019050919050565b600060208201905081810360008301526144a081614464565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061450360228361342f565b915061450e826144a7565b604082019050919050565b60006020820190508181036000830152614532816144f6565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061456f601d8361342f565b915061457a82614539565b602082019050919050565b6000602082019050818103600083015261459e81614562565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061460160258361342f565b915061460c826145a5565b604082019050919050565b60006020820190508181036000830152614630816145f4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061469360238361342f565b915061469e82614637565b604082019050919050565b600060208201905081810360008301526146c281614686565b9050919050565b7f4d6178207472616e73616374696f6e204c696d69742045786365656473210000600082015250565b60006146ff601e8361342f565b915061470a826146c9565b602082019050919050565b6000602082019050818103600083015261472e816146f2565b9050919050565b600060608201905061474a60008301866133fa565b61475760208301856133fa565b614764604083018461361c565b949350505050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b60006147a260178361342f565b91506147ad8261476c565b602082019050919050565b600060208201905081810360008301526147d181614795565b9050919050565b7f416e7469426f743a204275792042616e6e656421000000000000000000000000600082015250565b600061480e60148361342f565b9150614819826147d8565b602082019050919050565b6000602082019050818103600083015261483d81614801565b9050919050565b7f416e7469426f743a2053656c6c2042616e6e6564210000000000000000000000600082015250565b600061487a60158361342f565b915061488582614844565b602082019050919050565b600060208201905081810360008301526148a98161486d565b9050919050565b7f4572723a20616e746944756d7020616374697665000000000000000000000000600082015250565b60006148e660148361342f565b91506148f1826148b0565b602082019050919050565b60006020820190508181036000830152614915816148d9565b9050919050565b7f4465654c616e63653a204175746f6d61746564206d61726b6574206d616b657260008201527f207061697220697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b600061499e60428361342f565b91506149a98261491c565b606082019050919050565b600060208201905081810360008301526149cd81614991565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614a3060268361342f565b9150614a3b826149d4565b604082019050919050565b60006020820190508181036000830152614a5f81614a23565b9050919050565b6000614a7182613502565b9150614a7c83613502565b9250828203905081811115614a9457614a93613a22565b5b9291505056fea2646970667358221220ad32f48d0586b47a823947817df6cdd8d45391541dddb1cefa845206dcc402e864736f6c63430008110033
Deployed Bytecode
0x60806040526004361061036e5760003560e01c8063715018a6116101c6578063a6e30b69116100f7578063d8c6404b11610095578063f121275f1161006f578063f121275f14610cb4578063f25f4b5614610cdd578063f2fde38b14610d08578063f40a115014610d3157610375565b8063d8c6404b14610c21578063dd62ed3e14610c4c578063ebc77bfb14610c8957610375565b8063c0246668116100d1578063c024666814610b7d578063c1a63c0214610ba6578063c492f04614610bcf578063cc462bb914610bf857610375565b8063a6e30b6914610ada578063a9059cbb14610b03578063b62496f514610b4057610375565b806395d89b411161016457806399c20a3e1161013e57806399c20a3e14610a0c5780639a7a23d614610a495780639c7a91fe14610a72578063a457c2d714610a9d57610375565b806395d89b411461098f57806397661359146109ba57806397d66f80146109e357610375565b80637f8810bf116101a05780637f8810bf146108e557806385141a77146109105780638da5cb5b1461093b57806394c023ee1461096657610375565b8063715018a614610878578063790ca4131461088f5780637cbadcd2146108ba57610375565b806339509351116102a05780634fbee1931161023e578063623badb111610218578063623badb1146107be57806365b8dbc0146107e957806368c1e14c1461081257806370a082311461083b57610375565b80634fbee1931461071b578063517cb2531461075857806360763df41461078157610375565b80634568942e1161027a5780634568942e1461065d578063470624021461069a57806349bd5a5e146106c55780634ada218b146106f057610375565b806339509351146105ca57806339b1ee9314610607578063407133d21461063257610375565b80631a9aeb661161030d578063293230b8116102e7578063293230b8146105345780632b14ca561461054b5780632b15669814610576578063313ce5671461059f57610375565b80631a9aeb66146104a35780631f46b1c6146104ce57806323b872dd146104f757610375565b8063095ea7b311610349578063095ea7b3146103f95780631031e36e146104365780631694505e1461044d57806318160ddd1461047857610375565b80625abb001461037a5780630459a91e146103a357806306fdde03146103ce57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c919061339b565b610d5a565b005b3480156103af57600080fd5b506103b8610d7f565b6040516103c59190613409565b60405180910390f35b3480156103da57600080fd5b506103e3610da5565b6040516103f091906134b4565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b9190613538565b610e37565b60405161042d9190613587565b60405180910390f35b34801561044257600080fd5b5061044b610e5a565b005b34801561045957600080fd5b50610462610e87565b60405161046f9190613601565b60405180910390f35b34801561048457600080fd5b5061048d610ead565b60405161049a919061362b565b60405180910390f35b3480156104af57600080fd5b506104b8610eb7565b6040516104c5919061362b565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f0919061339b565b610ebd565b005b34801561050357600080fd5b5061051e60048036038101906105199190613646565b610ee2565b60405161052b9190613587565b60405180910390f35b34801561054057600080fd5b50610549610f11565b005b34801561055757600080fd5b50610560610f82565b60405161056d919061362b565b60405180910390f35b34801561058257600080fd5b5061059d6004803603810190610598919061339b565b610f88565b005b3480156105ab57600080fd5b506105b4610fad565b6040516105c191906136b5565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190613538565b610fb6565b6040516105fe9190613587565b60405180910390f35b34801561061357600080fd5b5061061c610fed565b6040516106299190613587565b60405180910390f35b34801561063e57600080fd5b50610647611000565b60405161065491906136f1565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f919061370c565b611026565b604051610691919061362b565b60405180910390f35b3480156106a657600080fd5b506106af61103e565b6040516106bc919061362b565b60405180910390f35b3480156106d157600080fd5b506106da611044565b6040516106e79190613409565b60405180910390f35b3480156106fc57600080fd5b5061070561106a565b6040516107129190613587565b60405180910390f35b34801561072757600080fd5b50610742600480360381019061073d919061370c565b61107d565b60405161074f9190613587565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613739565b6110d3565b005b34801561078d57600080fd5b506107a860048036038101906107a3919061370c565b6110e5565b6040516107b5919061362b565b60405180910390f35b3480156107ca57600080fd5b506107d36110fd565b6040516107e09190613587565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b919061370c565b611110565b005b34801561081e57600080fd5b506108396004803603810190610834919061370c565b6114bb565b005b34801561084757600080fd5b50610862600480360381019061085d919061370c565b611507565b60405161086f919061362b565b60405180910390f35b34801561088457600080fd5b5061088d61154f565b005b34801561089b57600080fd5b506108a4611563565b6040516108b1919061362b565b60405180910390f35b3480156108c657600080fd5b506108cf611569565b6040516108dc9190613587565b60405180910390f35b3480156108f157600080fd5b506108fa61157c565b6040516109079190613409565b60405180910390f35b34801561091c57600080fd5b506109256115a2565b6040516109329190613409565b60405180910390f35b34801561094757600080fd5b506109506115c8565b60405161095d9190613409565b60405180910390f35b34801561097257600080fd5b5061098d6004803603810190610988919061339b565b6115f2565b005b34801561099b57600080fd5b506109a46116a6565b6040516109b191906134b4565b60405180910390f35b3480156109c657600080fd5b506109e160048036038101906109dc919061370c565b611738565b005b3480156109ef57600080fd5b50610a0a6004803603810190610a0591906137a4565b611883565b005b348015610a1857600080fd5b50610a336004803603810190610a2e919061370c565b611944565b604051610a40919061362b565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b91906137d1565b61195c565b005b348015610a7e57600080fd5b50610a87611a02565b604051610a94919061362b565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf9190613538565b611a08565b604051610ad19190613587565b60405180910390f35b348015610ae657600080fd5b50610b016004803603810190610afc9190613739565b611a7f565b005b348015610b0f57600080fd5b50610b2a6004803603810190610b259190613538565b611ad5565b604051610b379190613587565b60405180910390f35b348015610b4c57600080fd5b50610b676004803603810190610b62919061370c565b611af8565b604051610b749190613587565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f91906137d1565b611b18565b005b348015610bb257600080fd5b50610bcd6004803603810190610bc89190613739565b611c5b565b005b348015610bdb57600080fd5b50610bf66004803603810190610bf19190613876565b611cb1565b005b348015610c0457600080fd5b50610c1f6004803603810190610c1a91906138d6565b611d99565b005b348015610c2d57600080fd5b50610c36611db3565b604051610c439190613587565b60405180910390f35b348015610c5857600080fd5b50610c736004803603810190610c6e9190613916565b611dc6565b604051610c80919061362b565b60405180910390f35b348015610c9557600080fd5b50610c9e611e4d565b604051610cab919061362b565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd69190613538565b611e53565b005b348015610ce957600080fd5b50610cf2611f53565b604051610cff9190613409565b60405180910390f35b348015610d1457600080fd5b50610d2f6004803603810190610d2a919061370c565b611f79565b005b348015610d3d57600080fd5b50610d586004803603810190610d53919061339b565b611ffc565b005b610d6261204d565b80600760146101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610db490613985565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613985565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b600080610e426120cb565b9050610e4f8185856120d3565b600191505092915050565b610e6261204d565b60006008819055506000600760156101000a81548160ff021916908315150217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600e5481565b610ec561204d565b80600f60006101000a81548160ff02191690831515021790555050565b600080610eed6120cb565b9050610efa85828561229c565b610f05858585612328565b60019150509392505050565b610f1961204d565b600060085414610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590613a02565b60405180910390fd5b426008819055506001600760156101000a81548160ff021916908315150217905550565b600d5481565b610f9061204d565b80600f60016101000a81548160ff02191690831515021790555050565b60006012905090565b600080610fc16120cb565b9050610fe2818585610fd38589611dc6565b610fdd9190613a51565b6120d3565b600191505092915050565b600f60029054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60156020528060005260406000206000915090505481565b600c5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110db61204d565b80600e8190555050565b60146020528060005260406000206000915090505481565b600f60039054906101000a900460ff1681565b61111861204d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90613af7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90613b63565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113679190613b98565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190613b98565b6040518363ffffffff1660e01b8152600401611431929190613bc5565b6020604051808303816000875af1158015611450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114749190613b98565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114c361204d565b80600f60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61155761204d565b6115616000612eb4565b565b60085481565b600f60019054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116336120cb565b73ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168090613c60565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b6060600480546116b590613985565b80601f01602080910402602001604051908101604052809291908181526020018280546116e190613985565b801561172e5780601f106117035761010080835404028352916020019161172e565b820191906000526020600020905b81548152906001019060200180831161171157829003601f168201915b5050505050905090565b61174061204d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690613cf2565b60405180910390fd5b60011515600f60029054906101000a900460ff1615151480156117e5575060011515600f60039054906101000a900460ff161515145b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90613d5e565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60026101000a81548160ff02191690831515021790555050565b61188b61204d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f190613dca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611940573d6000803e3d6000fd5b5050565b60136020528060005260406000206000915090505481565b61196461204d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613e82565b60405180910390fd5b6119fe8282612f7a565b5050565b60165481565b600080611a136120cb565b90506000611a218286611dc6565b905083811015611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613f14565b60405180910390fd5b611a7382868684036120d3565b60019250505092915050565b611a8761204d565b600f811115611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613f80565b60405180910390fd5b80600c8190555050565b600080611ae06120cb565b9050611aed818585612328565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b611b2061204d565b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614012565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c4f9190613587565b60405180910390a25050565b611c6361204d565b600f811115611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613f80565b60405180910390fd5b80600d8190555050565b611cb961204d565b60005b83839050811015611d58578160126000868685818110611cdf57611cde614032565b5b9050602002016020810190611cf4919061370c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d5090614061565b915050611cbc565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611d8c9392919061416c565b60405180910390a1505050565b611da161204d565b81601681905550806017819055505050565b600f60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60175481565b611e5b61204d565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec0906141ea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611eed6115c8565b836040518363ffffffff1660e01b8152600401611f0b92919061420a565b6020604051808303816000875af1158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e9190614248565b505050565b600f60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f8161204d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe7906142e7565b60405180910390fd5b611ff981612eb4565b50565b61200461204d565b80600f60036101000a81548160ff02191690831515021790555050565b6000818361202f9190614307565b905092915050565b600081836120459190614378565b905092915050565b6120556120cb565b73ffffffffffffffffffffffffffffffffffffffff166120736115c8565b73ffffffffffffffffffffffffffffffffffffffff16146120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c0906143f5565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990614487565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890614519565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161228f919061362b565b60405180910390a3505050565b60006122a88484611dc6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146123225781811015612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90614585565b60405180910390fd5b61232184848484036120d3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90614617565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd906146a9565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124a75750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124b45750600e548111155b6124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea90614715565b60405180910390fd5b600f60009054906101000a900460ff161561259a57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663487608588484846040518463ffffffff1660e01b815260040161256793929190614735565b600060405180830381600087803b15801561258157600080fd5b505af1158015612595573d6000803e3d6000fd5b505050505b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126425760011515600760159054906101000a900460ff16151514612641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612638906147b8565b60405180910390fd5b5b61264a6115c8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126f25760011515600f60029054906101000a900460ff1615151480156126b2575060011515600f60039054906101000a900460ff161515145b6126f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e890613d5e565b60405180910390fd5b5b6000810361270b57612706838360006130ad565b612eaf565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127af5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127c957504260b46008546127c69190613a51565b10155b1561293857601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612856575061283861271060095461203790919063ffffffff16565b6128538261284585611507565b61332390919063ffffffff16565b11155b612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90614824565b60405180910390fd5b4260b46008546128a59190613a51565b1061293757601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90614890565b60405180910390fd5b5b5b600f60019054906101000a900460ff16801561299d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156129f35750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c875742601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a70906148fc565b60405180910390fd5b42601654601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ac79190613a51565b1015612b575742601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612ba981601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332390919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601754601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612c865760165442612c429190613a51565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000600760149054906101000a900460ff169050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d3c5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d4657600090505b8015612ea2576000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dd657612dc86064612dba600c548661202190919063ffffffff16565b61203790919063ffffffff16565b81612dd39190613a51565b90505b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e5e57612e506064612e42600d548661202190919063ffffffff16565b61203790919063ffffffff16565b81612e5b9190613a51565b90505b612e71818461333990919063ffffffff16565b9250612ea085600f60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836130ad565b505b612ead8484846130ad565b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361300c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613003906149b4565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361311c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311390614617565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361318b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613182906146a9565b60405180910390fd5b61319683838361334f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561321c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321390614a46565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330a919061362b565b60405180910390a361331d848484613354565b50505050565b600081836133319190613a51565b905092915050565b600081836133479190614a66565b905092915050565b505050565b505050565b600080fd5b600080fd5b60008115159050919050565b61337881613363565b811461338357600080fd5b50565b6000813590506133958161336f565b92915050565b6000602082840312156133b1576133b0613359565b5b60006133bf84828501613386565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133f3826133c8565b9050919050565b613403816133e8565b82525050565b600060208201905061341e60008301846133fa565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561345e578082015181840152602081019050613443565b60008484015250505050565b6000601f19601f8301169050919050565b600061348682613424565b613490818561342f565b93506134a0818560208601613440565b6134a98161346a565b840191505092915050565b600060208201905081810360008301526134ce818461347b565b905092915050565b6134df816133e8565b81146134ea57600080fd5b50565b6000813590506134fc816134d6565b92915050565b6000819050919050565b61351581613502565b811461352057600080fd5b50565b6000813590506135328161350c565b92915050565b6000806040838503121561354f5761354e613359565b5b600061355d858286016134ed565b925050602061356e85828601613523565b9150509250929050565b61358181613363565b82525050565b600060208201905061359c6000830184613578565b92915050565b6000819050919050565b60006135c76135c26135bd846133c8565b6135a2565b6133c8565b9050919050565b60006135d9826135ac565b9050919050565b60006135eb826135ce565b9050919050565b6135fb816135e0565b82525050565b600060208201905061361660008301846135f2565b92915050565b61362581613502565b82525050565b6000602082019050613640600083018461361c565b92915050565b60008060006060848603121561365f5761365e613359565b5b600061366d868287016134ed565b935050602061367e868287016134ed565b925050604061368f86828701613523565b9150509250925092565b600060ff82169050919050565b6136af81613699565b82525050565b60006020820190506136ca60008301846136a6565b92915050565b60006136db826135ce565b9050919050565b6136eb816136d0565b82525050565b600060208201905061370660008301846136e2565b92915050565b60006020828403121561372257613721613359565b5b6000613730848285016134ed565b91505092915050565b60006020828403121561374f5761374e613359565b5b600061375d84828501613523565b91505092915050565b6000613771826133c8565b9050919050565b61378181613766565b811461378c57600080fd5b50565b60008135905061379e81613778565b92915050565b6000602082840312156137ba576137b9613359565b5b60006137c88482850161378f565b91505092915050565b600080604083850312156137e8576137e7613359565b5b60006137f6858286016134ed565b925050602061380785828601613386565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261383657613835613811565b5b8235905067ffffffffffffffff81111561385357613852613816565b5b60208301915083602082028301111561386f5761386e61381b565b5b9250929050565b60008060006040848603121561388f5761388e613359565b5b600084013567ffffffffffffffff8111156138ad576138ac61335e565b5b6138b986828701613820565b935093505060206138cc86828701613386565b9150509250925092565b600080604083850312156138ed576138ec613359565b5b60006138fb85828601613523565b925050602061390c85828601613523565b9150509250929050565b6000806040838503121561392d5761392c613359565b5b600061393b858286016134ed565b925050602061394c858286016134ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061399d57607f821691505b6020821081036139b0576139af613956565b5b50919050565b7f416c7265616479204c6973746564210000000000000000000000000000000000600082015250565b60006139ec600f8361342f565b91506139f7826139b6565b602082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5c82613502565b9150613a6783613502565b9250828201905080821115613a7f57613a7e613a22565b5b92915050565b7f4465654c616e63653a2054686520726f7574657220616c72656164792068617360008201527f2074686174206164647265737300000000000000000000000000000000000000602082015250565b6000613ae1602d8361342f565b9150613aec82613a85565b604082019050919050565b60006020820190508181036000830152613b1081613ad4565b9050919050565b7f6e65772061646472657373206973207a65726f20616464726573730000000000600082015250565b6000613b4d601b8361342f565b9150613b5882613b17565b602082019050919050565b60006020820190508181036000830152613b7c81613b40565b9050919050565b600081519050613b92816134d6565b92915050565b600060208284031215613bae57613bad613359565b5b6000613bbc84828501613b83565b91505092915050565b6000604082019050613bda60008301856133fa565b613be760208301846133fa565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520666972737460008201527f20766f7465720000000000000000000000000000000000000000000000000000602082015250565b6000613c4a60268361342f565b9150613c5582613bee565b604082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b7f4f776e61626c653a206e657720766f74657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cdc60268361342f565b9150613ce782613c80565b604082019050919050565b60006020820190508181036000830152613d0b81613ccf565b9050919050565b7f6e6f742061637469766500000000000000000000000000000000000000000000600082015250565b6000613d48600a8361342f565b9150613d5382613d12565b602082019050919050565b60006020820190508181036000830152613d7781613d3b565b9050919050565b7f64657374696e6174696f6e206973207a65726f20616464726573730000000000600082015250565b6000613db4601b8361342f565b9150613dbf82613d7e565b602082019050919050565b60006020820190508181036000830152613de381613da7565b9050919050565b7f4465654c616e63653a2054686520556e695377617020706169722063616e6e6f60008201527f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b6560208201527f744d616b65725061697273000000000000000000000000000000000000000000604082015250565b6000613e6c604b8361342f565b9150613e7782613dea565b606082019050919050565b60006020820190508181036000830152613e9b81613e5f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613efe60258361342f565b9150613f0982613ea2565b604082019050919050565b60006020820190508181036000830152613f2d81613ef1565b9050919050565b7f4d61782031352500000000000000000000000000000000000000000000000000600082015250565b6000613f6a60078361342f565b9150613f7582613f34565b602082019050919050565b60006020820190508181036000830152613f9981613f5d565b9050919050565b7f4465656c616e63653a204163636f756e7420697320616c72656164792074686560008201527f2076616c7565206f6620276578636c7564656427000000000000000000000000602082015250565b6000613ffc60348361342f565b915061400782613fa0565b604082019050919050565b6000602082019050818103600083015261402b81613fef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061406c82613502565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361409e5761409d613a22565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b6140cd816133e8565b82525050565b60006140df83836140c4565b60208301905092915050565b60006140fa60208401846134ed565b905092915050565b6000602082019050919050565b600061411b83856140a9565b9350614126826140ba565b8060005b8581101561415f5761413c82846140eb565b61414688826140d3565b975061415183614102565b92505060018101905061412a565b5085925050509392505050565b6000604082019050818103600083015261418781858761410f565b90506141966020830184613578565b949350505050565b7f63616e6e6f742062652073616d6520636f6e7472616374206164647265737300600082015250565b60006141d4601f8361342f565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b600060408201905061421f60008301856133fa565b61422c602083018461361c565b9392505050565b6000815190506142428161336f565b92915050565b60006020828403121561425e5761425d613359565b5b600061426c84828501614233565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142d160268361342f565b91506142dc82614275565b604082019050919050565b60006020820190508181036000830152614300816142c4565b9050919050565b600061431282613502565b915061431d83613502565b925082820261432b81613502565b9150828204841483151761434257614341613a22565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061438382613502565b915061438e83613502565b92508261439e5761439d614349565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143df60208361342f565b91506143ea826143a9565b602082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061447160248361342f565b915061447c82614415565b604082019050919050565b600060208201905081810360008301526144a081614464565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061450360228361342f565b915061450e826144a7565b604082019050919050565b60006020820190508181036000830152614532816144f6565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061456f601d8361342f565b915061457a82614539565b602082019050919050565b6000602082019050818103600083015261459e81614562565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061460160258361342f565b915061460c826145a5565b604082019050919050565b60006020820190508181036000830152614630816145f4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061469360238361342f565b915061469e82614637565b604082019050919050565b600060208201905081810360008301526146c281614686565b9050919050565b7f4d6178207472616e73616374696f6e204c696d69742045786365656473210000600082015250565b60006146ff601e8361342f565b915061470a826146c9565b602082019050919050565b6000602082019050818103600083015261472e816146f2565b9050919050565b600060608201905061474a60008301866133fa565b61475760208301856133fa565b614764604083018461361c565b949350505050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b60006147a260178361342f565b91506147ad8261476c565b602082019050919050565b600060208201905081810360008301526147d181614795565b9050919050565b7f416e7469426f743a204275792042616e6e656421000000000000000000000000600082015250565b600061480e60148361342f565b9150614819826147d8565b602082019050919050565b6000602082019050818103600083015261483d81614801565b9050919050565b7f416e7469426f743a2053656c6c2042616e6e6564210000000000000000000000600082015250565b600061487a60158361342f565b915061488582614844565b602082019050919050565b600060208201905081810360008301526148a98161486d565b9050919050565b7f4572723a20616e746944756d7020616374697665000000000000000000000000600082015250565b60006148e660148361342f565b91506148f1826148b0565b602082019050919050565b60006020820190508181036000830152614915816148d9565b9050919050565b7f4465654c616e63653a204175746f6d61746564206d61726b6574206d616b657260008201527f207061697220697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b600061499e60428361342f565b91506149a98261491c565b606082019050919050565b600060208201905081810360008301526149cd81614991565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614a3060268361342f565b9150614a3b826149d4565b604082019050919050565b60006020820190508181036000830152614a5f81614a23565b9050919050565b6000614a7182613502565b9150614a7c83613502565b9250828203905081811115614a9457614a93613a22565b5b9291505056fea2646970667358221220ad32f48d0586b47a823947817df6cdd8d45391541dddb1cefa845206dcc402e864736f6c63430008110033
Deployed Bytecode Sourcemap
36491:10976:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42125:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37312:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25392:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27752:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42649:111;;;;;;;;;;;;;:::i;:::-;;36569:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26521:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37011:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39736:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28533:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42466:175;;;;;;;;;;;;;:::i;:::-;;36978:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39846:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26363:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29203:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37151:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36906;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37845:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36946:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36617:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36691:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43368:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41604:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37790:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37189:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40127:577;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41713:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26692:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18688:103;;;;;;;;;;;;;:::i;:::-;;36724:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37105:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37392:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36827:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18040:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42222:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25611:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41819:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46730:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37739:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42770:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37901:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29944:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41332:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27025:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38176:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40712:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41467:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41020:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39969:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37072:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27281:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37948:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46477:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37231:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18946:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42346:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42125:89;17926:13;:11;:13::i;:::-;42201:5:::1;42189:9;;:17;;;;;;;;;;;;;;;;;;42125:89:::0;:::o;37312:73::-;;;;;;;;;;;;;:::o;25392:100::-;25446:13;25479:5;25472:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25392:100;:::o;27752:201::-;27835:4;27852:13;27868:12;:10;:12::i;:::-;27852:28;;27891:32;27900:5;27907:7;27916:6;27891:8;:32::i;:::-;27941:4;27934:11;;;27752:201;;;;:::o;42649:111::-;17926:13;:11;:13::i;:::-;42715:1:::1;42702:10;:14;;;;42745:5;42728:14;;:22;;;;;;;;;;;;;;;;;;42649:111::o:0;36569:41::-;;;;;;;;;;;;;:::o;26521:108::-;26582:7;26609:12;;26602:19;;26521:108;:::o;37011:48::-;;;;:::o;39736:102::-;17926:13;:11;:13::i;:::-;39823:7:::1;39806:14;;:24;;;;;;;;;;;;;;;;;;39736:102:::0;:::o;28533:261::-;28630:4;28647:15;28665:12;:10;:12::i;:::-;28647:30;;28688:38;28704:4;28710:7;28719:6;28688:15;:38::i;:::-;28737:27;28747:4;28753:2;28757:6;28737:9;:27::i;:::-;28782:4;28775:11;;;28533:261;;;;;:::o;42466:175::-;17926:13;:11;:13::i;:::-;42541:1:::1;42527:10;;:15;42519:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;42586:15;42573:10;:28;;;;42629:4;42612:14;;:21;;;;;;;;;;;;;;;;;;42466:175::o:0;36978:26::-;;;;:::o;39846:115::-;17926:13;:11;:13::i;:::-;39941:12:::1;39923:15;;:30;;;;;;;;;;;;;;;;;;39846:115:::0;:::o;26363:93::-;26421:5;26446:2;26439:9;;26363:93;:::o;29203:238::-;29291:4;29308:13;29324:12;:10;:12::i;:::-;29308:28;;29347:64;29356:5;29363:7;29400:10;29372:25;29382:5;29389:7;29372:9;:25::i;:::-;:38;;;;:::i;:::-;29347:8;:64::i;:::-;29429:4;29422:11;;;29203:238;;;;:::o;37151:31::-;;;;;;;;;;;;;:::o;36906:::-;;;;;;;;;;;;;:::o;37845:49::-;;;;;;;;;;;;;;;;;:::o;36946:25::-;;;;:::o;36617:29::-;;;;;;;;;;;;;:::o;36691:26::-;;;;;;;;;;;;;:::o;43368:125::-;43433:4;43457:19;:28;43477:7;43457:28;;;;;;;;;;;;;;;;;;;;;;;;;43450:35;;43368:125;;;:::o;41604:101::-;17926:13;:11;:13::i;:::-;41692:5:::1;41675:14;:22;;;;41604:101:::0;:::o;37790:48::-;;;;;;;;;;;;;;;;;:::o;37189:33::-;;;;;;;;;;;;;:::o;40127:577::-;17926:13;:11;:13::i;:::-;40236:15:::1;;;;;;;;;;;40214:38;;:10;:38;;::::0;40206:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;40343:1;40321:24;;:10;:24;;::::0;40313:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;40435:15;;;;;;;;;;;40393:59;;40415:10;40393:59;;;;;;;;;;;;40500:10;40463:15;;:48;;;;;;;;;;;;;;;;;;40522:22;40565:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40547:69;;;40625:4;40632:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40547:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40522:133;;40682:14;40666:13;;:30;;;;;;;;;;;;;;;;;;40195:509;40127:577:::0;:::o;41713:98::-;17926:13;:11;:13::i;:::-;41794:9:::1;41782;;:21;;;;;;;;;;;;;;;;;;41713:98:::0;:::o;26692:127::-;26766:7;26793:9;:18;26803:7;26793:18;;;;;;;;;;;;;;;;26786:25;;26692:127;;;:::o;18688:103::-;17926:13;:11;:13::i;:::-;18753:30:::1;18780:1;18753:18;:30::i;:::-;18688:103::o:0;36724:25::-;;;;:::o;37105:35::-;;;;;;;;;;;;;:::o;37392:73::-;;;;;;;;;;;;;:::o;36827:70::-;;;;;;;;;;;;;:::o;18040:87::-;18086:7;18113:6;;;;;;;;;;;18106:13;;18040:87;:::o;42222:116::-;37539:13;;;;;;;;;;;37523:29;;:12;:10;:12::i;:::-;:29;;;37515:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;42318:12:::1;42304:11;;:26;;;;;;;;;;;;;;;;;;42222:116:::0;:::o;25611:104::-;25667:13;25700:7;25693:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25611:104;:::o;41819:296::-;17926:13;:11;:13::i;:::-;41919:1:::1;41899:22;;:8;:22;;::::0;41891:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;41998:4;41983:19;;:11;;;;;;;;;;;:19;;;:44;;;;;42023:4;42006:21;;:13;;;;;;;;;;;:21;;;41983:44;41975:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42069:8;42053:13;;:24;;;;;;;;;;;;;;;;;;42102:5;42088:11;;:19;;;;;;;;;;;;;;;;;;41819:296:::0;:::o;46730:206::-;17926:13;:11;:13::i;:::-;46840:1:::1;46817:25;;:11;:25;;::::0;46809:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;46885:11;:20;;:43;46906:21;46885:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;46730:206:::0;:::o;37739:44::-;;;;;;;;;;;;;;;;;:::o;42770:262::-;17926:13;:11;:13::i;:::-;42877::::1;;;;;;;;;;;42869:21;;:4;:21;;::::0;42861:109:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;42983:41;43012:4;43018:5;42983:28;:41::i;:::-;42770:262:::0;;:::o;37901:40::-;;;;:::o;29944:436::-;30037:4;30054:13;30070:12;:10;:12::i;:::-;30054:28;;30093:24;30120:25;30130:5;30137:7;30120:9;:25::i;:::-;30093:52;;30184:15;30164:16;:35;;30156:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30277:60;30286:5;30293:7;30321:15;30302:16;:34;30277:8;:60::i;:::-;30368:4;30361:11;;;;29944:436;;;;:::o;41332:127::-;17926:13;:11;:13::i;:::-;41412:2:::1;41403:5;:11;;41395:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;41446:5;41437:6;:14;;;;41332:127:::0;:::o;27025:193::-;27104:4;27121:13;27137:12;:10;:12::i;:::-;27121:28;;27160;27170:5;27177:2;27181:6;27160:9;:28::i;:::-;27206:4;27199:11;;;27025:193;;;;:::o;38176:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;40712:300::-;17926:13;:11;:13::i;:::-;40837:8:::1;40805:40;;:19;:28;40825:7;40805:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;40797:105:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;40944:8;40913:19;:28;40933:7;40913:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;40986:7;40970:34;;;40995:8;40970:34;;;;;;:::i;:::-;;;;;;;;40712:300:::0;;:::o;41467:129::-;17926:13;:11;:13::i;:::-;41548:2:::1;41539:5;:11;;41531:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;41583:5;41573:7;:15;;;;41467:129:::0;:::o;41020:304::-;17926:13;:11;:13::i;:::-;41137:9:::1;41133:115;41156:8;;:15;;41152:1;:19;41133:115;;;41228:8;41193:19;:32;41213:8;;41222:1;41213:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;41193:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;41173:3;;;;;:::i;:::-;;;;41133:115;;;;41265:51;41297:8;;41307;41265:51;;;;;;;;:::i;:::-;;;;;;;;41020:304:::0;;;:::o;39969:150::-;17926:13;:11;:13::i;:::-;40069:8:::1;40054:12;:23;;;;40105:6;40088:14;:23;;;;39969:150:::0;;:::o;37072:26::-;;;;;;;;;;;;;:::o;27281:151::-;27370:7;27397:11;:18;27409:5;27397:18;;;;;;;;;;;;;;;:27;27416:7;27397:27;;;;;;;;;;;;;;;;27390:34;;27281:151;;;;:::o;37948:66::-;;;;:::o;46477:243::-;17926:13;:11;:13::i;:::-;46609:4:::1;46585:29;;:12;:29;;::::0;46577:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;46668:12;46661:29;;;46691:7;:5;:7::i;:::-;46700:11;46661:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46477:243:::0;;:::o;37231:73::-;;;;;;;;;;;;;:::o;18946:201::-;17926:13;:11;:13::i;:::-;19055:1:::1;19035:22;;:8;:22;;::::0;19027:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19111:28;19130:8;19111:18;:28::i;:::-;18946:201:::0;:::o;42346:110::-;17926:13;:11;:13::i;:::-;42436:12:::1;42420:13;;:28;;;;;;;;;;;;;;;;;;42346:110:::0;:::o;12481:98::-;12539:7;12570:1;12566;:5;;;;:::i;:::-;12559:12;;12481:98;;;;:::o;12880:::-;12938:7;12969:1;12965;:5;;;;:::i;:::-;12958:12;;12880:98;;;;:::o;18205:132::-;18280:12;:10;:12::i;:::-;18269:23;;:7;:5;:7::i;:::-;:23;;;18261:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18205:132::o;16538:98::-;16591:7;16618:10;16611:17;;16538:98;:::o;33937:346::-;34056:1;34039:19;;:5;:19;;;34031:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34137:1;34118:21;;:7;:21;;;34110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34221:6;34191:11;:18;34203:5;34191:18;;;;;;;;;;;;;;;:27;34210:7;34191:27;;;;;;;;;;;;;;;:36;;;;34259:7;34243:32;;34252:5;34243:32;;;34268:6;34243:32;;;;;;:::i;:::-;;;;;;;;33937:346;;;:::o;34574:419::-;34675:24;34702:25;34712:5;34719:7;34702:9;:25::i;:::-;34675:52;;34762:17;34742:16;:37;34738:248;;34824:6;34804:16;:26;;34796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34908:51;34917:5;34924:7;34952:6;34933:16;:25;34908:8;:51::i;:::-;34738:248;34664:329;34574:419;;;:::o;43501:2968::-;43649:1;43633:18;;:4;:18;;;43625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43726:1;43712:16;;:2;:16;;;43704:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;43788:19;:25;43808:4;43788:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;43817:19;:23;43837:2;43817:23;;;;;;;;;;;;;;;;;;;;;;;;;43788:52;:81;;;;43855:14;;43845:6;:24;;43788:81;43779:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;43918:14;;;;;;;;;;;43914:85;;;43943:11;;;;;;;;;;;:30;;;43974:4;43980:2;43984:6;43943:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43914:85;44015:19;:25;44035:4;44015:25;;;;;;;;;;;;;;;;;;;;;;;;;44011:94;;44070:4;44052:22;;:14;;;;;;;;;;;:22;;;44044:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;44011:94;44128:7;:5;:7::i;:::-;44120:15;;:4;:15;;;44117:92;;44162:4;44147:19;;:11;;;;;;;;;;;:19;;;:44;;;;;44187:4;44170:21;;:13;;;;;;;;;;;:21;;;44147:44;44139:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44117:92;44238:1;44228:6;:11;44225:92;;44256:28;44272:4;44278:2;44282:1;44256:15;:28::i;:::-;44299:7;;44225:92;44350:19;:25;44370:4;44350:25;;;;;;;;;;;;;;;;;;;;;;;;;44349:26;:67;;;;;44393:19;:23;44413:2;44393:23;;;;;;;;;;;;;;;;;;;;;;;;;44392:24;44349:67;:125;;;;;44459:15;44446:9;44433:10;;:22;;;;:::i;:::-;:41;;44349:125;44331:741;;;44621:25;:31;44647:4;44621:31;;;;;;;;;;;;;;;;;;;;;;;;;:112;;;;44706:27;44727:5;44706:16;;:20;;:27;;;;:::i;:::-;44677:25;44695:6;44677:13;44687:2;44677:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:56;;44621:112;44595:194;;;;;;;;;;;;:::i;:::-;;;;;;;;;44836:15;44821:11;44808:10;;:24;;;;:::i;:::-;:43;44804:256;;44966:25;:29;44992:2;44966:29;;;;;;;;;;;;;;;;;;;;;;;;;44936:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;44804:256;44331:741;45104:15;;;;;;;;;;;:61;;;;;45136:25;:29;45162:2;45136:29;;;;;;;;;;;;;;;;;;;;;;;;;45104:61;:104;;;;;45183:19;:25;45203:4;45183:25;;;;;;;;;;;;;;;;;;;;;;;;;45182:26;45104:104;45086:696;;;45278:15;45261:8;:14;45270:4;45261:14;;;;;;;;;;;;;;;;:32;45235:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;45423:15;45408:12;;45386:13;:19;45400:4;45386:19;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;:52;45364:203;;;45495:15;45473:13;:19;45487:4;45473:19;;;;;;;;;;;;;;;:37;;;;45550:1;45529:12;:18;45542:4;45529:18;;;;;;;;;;;;;;;:22;;;;45364:203;45602:30;45625:6;45602:12;:18;45615:4;45602:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;45581:12;:18;45594:4;45581:18;;;;;;;;;;;;;;;:51;;;;45673:14;;45651:12;:18;45664:4;45651:18;;;;;;;;;;;;;;;;:36;45647:124;;45743:12;;45725:15;:30;;;;:::i;:::-;45708:8;:14;45717:4;45708:14;;;;;;;;;;;;;;;:47;;;;45647:124;45086:696;45794:12;45809:9;;;;;;;;;;;45794:24;;45919:19;:25;45939:4;45919:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;45948:19;:23;45968:2;45948:23;;;;;;;;;;;;;;;;;;;;;;;;;45919:52;45916:99;;;45998:5;45988:15;;45916:99;46030:7;46027:389;;;46056:12;46090:25;:31;46116:4;46090:31;;;;;;;;;;;;;;;;;;;;;;;;;46087:113;;;46160:27;46183:3;46160:18;46171:6;;46160;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;46152:35;;;;;:::i;:::-;;;46087:113;46214:25;:29;46240:2;46214:29;;;;;;;;;;;;;;;;;;;;;;;;;46211:98;;;46268:28;46292:3;46268:19;46279:7;;46268:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;46260:36;;;;;:::i;:::-;;;46211:98;46329:16;46340:4;46329:6;:10;;:16;;;;:::i;:::-;46320:25;;46366:38;46382:4;46388:9;;;;;;;;;;;46399:4;46366:15;:38::i;:::-;46039:377;46027:389;46428:33;46444:4;46450:2;46454:6;46428:15;:33::i;:::-;43614:2855;43501:2968;;;;:::o;19307:191::-;19381:16;19400:6;;;;;;;;;;;19381:25;;19426:8;19417:6;;:17;;;;;;;;;;;;;;;;;;19481:8;19450:40;;19471:8;19450:40;;;;;;;;;;;;19370:128;19307:191;:::o;43042:318::-;43168:5;43133:40;;:25;:31;43159:4;43133:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;43125:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;43289:5;43255:25;:31;43281:4;43255:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;43346:5;43312:40;;43340:4;43312:40;;;;;;;;;;;;43042:318;;:::o;30850:806::-;30963:1;30947:18;;:4;:18;;;30939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31040:1;31026:16;;:2;:16;;;31018:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31095:38;31116:4;31122:2;31126:6;31095:20;:38::i;:::-;31146:19;31168:9;:15;31178:4;31168:15;;;;;;;;;;;;;;;;31146:37;;31217:6;31202:11;:21;;31194:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;31334:6;31320:11;:20;31302:9;:15;31312:4;31302:15;;;;;;;;;;;;;;;:38;;;;31537:6;31520:9;:13;31530:2;31520:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;31587:2;31572:26;;31581:4;31572:26;;;31591:6;31572:26;;;;;;:::i;:::-;;;;;;;;31611:37;31631:4;31637:2;31641:6;31611:19;:37::i;:::-;30928:728;30850:806;;;:::o;11743:98::-;11801:7;11832:1;11828;:5;;;;:::i;:::-;11821:12;;11743:98;;;;:::o;12124:::-;12182:7;12213:1;12209;:5;;;;:::i;:::-;12202:12;;12124:98;;;;:::o;35593:91::-;;;;:::o;36288:90::-;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:126::-;1057:7;1097:42;1090:5;1086:54;1075:65;;1020:126;;;:::o;1152:96::-;1189:7;1218:24;1236:5;1218:24;:::i;:::-;1207:35;;1152:96;;;:::o;1254:118::-;1341:24;1359:5;1341:24;:::i;:::-;1336:3;1329:37;1254:118;;:::o;1378:222::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1522:71;1590:1;1579:9;1575:17;1566:6;1522:71;:::i;:::-;1378:222;;;;:::o;1606:99::-;1658:6;1692:5;1686:12;1676:22;;1606:99;;;:::o;1711:169::-;1795:11;1829:6;1824:3;1817:19;1869:4;1864:3;1860:14;1845:29;;1711:169;;;;:::o;1886:246::-;1967:1;1977:113;1991:6;1988:1;1985:13;1977:113;;;2076:1;2071:3;2067:11;2061:18;2057:1;2052:3;2048:11;2041:39;2013:2;2010:1;2006:10;2001:15;;1977:113;;;2124:1;2115:6;2110:3;2106:16;2099:27;1948:184;1886:246;;;:::o;2138:102::-;2179:6;2230:2;2226:7;2221:2;2214:5;2210:14;2206:28;2196:38;;2138:102;;;:::o;2246:377::-;2334:3;2362:39;2395:5;2362:39;:::i;:::-;2417:71;2481:6;2476:3;2417:71;:::i;:::-;2410:78;;2497:65;2555:6;2550:3;2543:4;2536:5;2532:16;2497:65;:::i;:::-;2587:29;2609:6;2587:29;:::i;:::-;2582:3;2578:39;2571:46;;2338:285;2246:377;;;;:::o;2629:313::-;2742:4;2780:2;2769:9;2765:18;2757:26;;2829:9;2823:4;2819:20;2815:1;2804:9;2800:17;2793:47;2857:78;2930:4;2921:6;2857:78;:::i;:::-;2849:86;;2629:313;;;;:::o;2948:122::-;3021:24;3039:5;3021:24;:::i;:::-;3014:5;3011:35;3001:63;;3060:1;3057;3050:12;3001:63;2948:122;:::o;3076:139::-;3122:5;3160:6;3147:20;3138:29;;3176:33;3203:5;3176:33;:::i;:::-;3076:139;;;;:::o;3221:77::-;3258:7;3287:5;3276:16;;3221:77;;;:::o;3304:122::-;3377:24;3395:5;3377:24;:::i;:::-;3370:5;3367:35;3357:63;;3416:1;3413;3406:12;3357:63;3304:122;:::o;3432:139::-;3478:5;3516:6;3503:20;3494:29;;3532:33;3559:5;3532:33;:::i;:::-;3432:139;;;;:::o;3577:474::-;3645:6;3653;3702:2;3690:9;3681:7;3677:23;3673:32;3670:119;;;3708:79;;:::i;:::-;3670:119;3828:1;3853:53;3898:7;3889:6;3878:9;3874:22;3853:53;:::i;:::-;3843:63;;3799:117;3955:2;3981:53;4026:7;4017:6;4006:9;4002:22;3981:53;:::i;:::-;3971:63;;3926:118;3577:474;;;;;:::o;4057:109::-;4138:21;4153:5;4138:21;:::i;:::-;4133:3;4126:34;4057:109;;:::o;4172:210::-;4259:4;4297:2;4286:9;4282:18;4274:26;;4310:65;4372:1;4361:9;4357:17;4348:6;4310:65;:::i;:::-;4172:210;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:152::-;4810:9;4843:37;4874:5;4843:37;:::i;:::-;4830:50;;4734:152;;;:::o;4892:183::-;5005:63;5062:5;5005:63;:::i;:::-;5000:3;4993:76;4892:183;;:::o;5081:274::-;5200:4;5238:2;5227:9;5223:18;5215:26;;5251:97;5345:1;5334:9;5330:17;5321:6;5251:97;:::i;:::-;5081:274;;;;:::o;5361:118::-;5448:24;5466:5;5448:24;:::i;:::-;5443:3;5436:37;5361:118;;:::o;5485:222::-;5578:4;5616:2;5605:9;5601:18;5593:26;;5629:71;5697:1;5686:9;5682:17;5673:6;5629:71;:::i;:::-;5485:222;;;;:::o;5713:619::-;5790:6;5798;5806;5855:2;5843:9;5834:7;5830:23;5826:32;5823:119;;;5861:79;;:::i;:::-;5823:119;5981:1;6006:53;6051:7;6042:6;6031:9;6027:22;6006:53;:::i;:::-;5996:63;;5952:117;6108:2;6134:53;6179:7;6170:6;6159:9;6155:22;6134:53;:::i;:::-;6124:63;;6079:118;6236:2;6262:53;6307:7;6298:6;6287:9;6283:22;6262:53;:::i;:::-;6252:63;;6207:118;5713:619;;;;;:::o;6338:86::-;6373:7;6413:4;6406:5;6402:16;6391:27;;6338:86;;;:::o;6430:112::-;6513:22;6529:5;6513:22;:::i;:::-;6508:3;6501:35;6430:112;;:::o;6548:214::-;6637:4;6675:2;6664:9;6660:18;6652:26;;6688:67;6752:1;6741:9;6737:17;6728:6;6688:67;:::i;:::-;6548:214;;;;:::o;6768:145::-;6837:9;6870:37;6901:5;6870:37;:::i;:::-;6857:50;;6768:145;;;:::o;6919:169::-;7025:56;7075:5;7025:56;:::i;:::-;7020:3;7013:69;6919:169;;:::o;7094:260::-;7206:4;7244:2;7233:9;7229:18;7221:26;;7257:90;7344:1;7333:9;7329:17;7320:6;7257:90;:::i;:::-;7094:260;;;;:::o;7360:329::-;7419:6;7468:2;7456:9;7447:7;7443:23;7439:32;7436:119;;;7474:79;;:::i;:::-;7436:119;7594:1;7619:53;7664:7;7655:6;7644:9;7640:22;7619:53;:::i;:::-;7609:63;;7565:117;7360:329;;;;:::o;7695:::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:104::-;8075:7;8104:24;8122:5;8104:24;:::i;:::-;8093:35;;8030:104;;;:::o;8140:138::-;8221:32;8247:5;8221:32;:::i;:::-;8214:5;8211:43;8201:71;;8268:1;8265;8258:12;8201:71;8140:138;:::o;8284:155::-;8338:5;8376:6;8363:20;8354:29;;8392:41;8427:5;8392:41;:::i;:::-;8284:155;;;;:::o;8445:345::-;8512:6;8561:2;8549:9;8540:7;8536:23;8532:32;8529:119;;;8567:79;;:::i;:::-;8529:119;8687:1;8712:61;8765:7;8756:6;8745:9;8741:22;8712:61;:::i;:::-;8702:71;;8658:125;8445:345;;;;:::o;8796:468::-;8861:6;8869;8918:2;8906:9;8897:7;8893:23;8889:32;8886:119;;;8924:79;;:::i;:::-;8886:119;9044:1;9069:53;9114:7;9105:6;9094:9;9090:22;9069:53;:::i;:::-;9059:63;;9015:117;9171:2;9197:50;9239:7;9230:6;9219:9;9215:22;9197:50;:::i;:::-;9187:60;;9142:115;8796:468;;;;;:::o;9270:117::-;9379:1;9376;9369:12;9393:117;9502:1;9499;9492:12;9516:117;9625:1;9622;9615:12;9656:568;9729:8;9739:6;9789:3;9782:4;9774:6;9770:17;9766:27;9756:122;;9797:79;;:::i;:::-;9756:122;9910:6;9897:20;9887:30;;9940:18;9932:6;9929:30;9926:117;;;9962:79;;:::i;:::-;9926:117;10076:4;10068:6;10064:17;10052:29;;10130:3;10122:4;10114:6;10110:17;10100:8;10096:32;10093:41;10090:128;;;10137:79;;:::i;:::-;10090:128;9656:568;;;;;:::o;10230:698::-;10322:6;10330;10338;10387:2;10375:9;10366:7;10362:23;10358:32;10355:119;;;10393:79;;:::i;:::-;10355:119;10541:1;10530:9;10526:17;10513:31;10571:18;10563:6;10560:30;10557:117;;;10593:79;;:::i;:::-;10557:117;10706:80;10778:7;10769:6;10758:9;10754:22;10706:80;:::i;:::-;10688:98;;;;10484:312;10835:2;10861:50;10903:7;10894:6;10883:9;10879:22;10861:50;:::i;:::-;10851:60;;10806:115;10230:698;;;;;:::o;10934:474::-;11002:6;11010;11059:2;11047:9;11038:7;11034:23;11030:32;11027:119;;;11065:79;;:::i;:::-;11027:119;11185:1;11210:53;11255:7;11246:6;11235:9;11231:22;11210:53;:::i;:::-;11200:63;;11156:117;11312:2;11338:53;11383:7;11374:6;11363:9;11359:22;11338:53;:::i;:::-;11328:63;;11283:118;10934:474;;;;;:::o;11414:::-;11482:6;11490;11539:2;11527:9;11518:7;11514:23;11510:32;11507:119;;;11545:79;;:::i;:::-;11507:119;11665:1;11690:53;11735:7;11726:6;11715:9;11711:22;11690:53;:::i;:::-;11680:63;;11636:117;11792:2;11818:53;11863:7;11854:6;11843:9;11839:22;11818:53;:::i;:::-;11808:63;;11763:118;11414:474;;;;;:::o;11894:180::-;11942:77;11939:1;11932:88;12039:4;12036:1;12029:15;12063:4;12060:1;12053:15;12080:320;12124:6;12161:1;12155:4;12151:12;12141:22;;12208:1;12202:4;12198:12;12229:18;12219:81;;12285:4;12277:6;12273:17;12263:27;;12219:81;12347:2;12339:6;12336:14;12316:18;12313:38;12310:84;;12366:18;;:::i;:::-;12310:84;12131:269;12080:320;;;:::o;12406:165::-;12546:17;12542:1;12534:6;12530:14;12523:41;12406:165;:::o;12577:366::-;12719:3;12740:67;12804:2;12799:3;12740:67;:::i;:::-;12733:74;;12816:93;12905:3;12816:93;:::i;:::-;12934:2;12929:3;12925:12;12918:19;;12577:366;;;:::o;12949:419::-;13115:4;13153:2;13142:9;13138:18;13130:26;;13202:9;13196:4;13192:20;13188:1;13177:9;13173:17;13166:47;13230:131;13356:4;13230:131;:::i;:::-;13222:139;;12949:419;;;:::o;13374:180::-;13422:77;13419:1;13412:88;13519:4;13516:1;13509:15;13543:4;13540:1;13533:15;13560:191;13600:3;13619:20;13637:1;13619:20;:::i;:::-;13614:25;;13653:20;13671:1;13653:20;:::i;:::-;13648:25;;13696:1;13693;13689:9;13682:16;;13717:3;13714:1;13711:10;13708:36;;;13724:18;;:::i;:::-;13708:36;13560:191;;;;:::o;13757:232::-;13897:34;13893:1;13885:6;13881:14;13874:58;13966:15;13961:2;13953:6;13949:15;13942:40;13757:232;:::o;13995:366::-;14137:3;14158:67;14222:2;14217:3;14158:67;:::i;:::-;14151:74;;14234:93;14323:3;14234:93;:::i;:::-;14352:2;14347:3;14343:12;14336:19;;13995:366;;;:::o;14367:419::-;14533:4;14571:2;14560:9;14556:18;14548:26;;14620:9;14614:4;14610:20;14606:1;14595:9;14591:17;14584:47;14648:131;14774:4;14648:131;:::i;:::-;14640:139;;14367:419;;;:::o;14792:177::-;14932:29;14928:1;14920:6;14916:14;14909:53;14792:177;:::o;14975:366::-;15117:3;15138:67;15202:2;15197:3;15138:67;:::i;:::-;15131:74;;15214:93;15303:3;15214:93;:::i;:::-;15332:2;15327:3;15323:12;15316:19;;14975:366;;;:::o;15347:419::-;15513:4;15551:2;15540:9;15536:18;15528:26;;15600:9;15594:4;15590:20;15586:1;15575:9;15571:17;15564:47;15628:131;15754:4;15628:131;:::i;:::-;15620:139;;15347:419;;;:::o;15772:143::-;15829:5;15860:6;15854:13;15845:22;;15876:33;15903:5;15876:33;:::i;:::-;15772:143;;;;:::o;15921:351::-;15991:6;16040:2;16028:9;16019:7;16015:23;16011:32;16008:119;;;16046:79;;:::i;:::-;16008:119;16166:1;16191:64;16247:7;16238:6;16227:9;16223:22;16191:64;:::i;:::-;16181:74;;16137:128;15921:351;;;;:::o;16278:332::-;16399:4;16437:2;16426:9;16422:18;16414:26;;16450:71;16518:1;16507:9;16503:17;16494:6;16450:71;:::i;:::-;16531:72;16599:2;16588:9;16584:18;16575:6;16531:72;:::i;:::-;16278:332;;;;;:::o;16616:225::-;16756:34;16752:1;16744:6;16740:14;16733:58;16825:8;16820:2;16812:6;16808:15;16801:33;16616:225;:::o;16847:366::-;16989:3;17010:67;17074:2;17069:3;17010:67;:::i;:::-;17003:74;;17086:93;17175:3;17086:93;:::i;:::-;17204:2;17199:3;17195:12;17188:19;;16847:366;;;:::o;17219:419::-;17385:4;17423:2;17412:9;17408:18;17400:26;;17472:9;17466:4;17462:20;17458:1;17447:9;17443:17;17436:47;17500:131;17626:4;17500:131;:::i;:::-;17492:139;;17219:419;;;:::o;17644:225::-;17784:34;17780:1;17772:6;17768:14;17761:58;17853:8;17848:2;17840:6;17836:15;17829:33;17644:225;:::o;17875:366::-;18017:3;18038:67;18102:2;18097:3;18038:67;:::i;:::-;18031:74;;18114:93;18203:3;18114:93;:::i;:::-;18232:2;18227:3;18223:12;18216:19;;17875:366;;;:::o;18247:419::-;18413:4;18451:2;18440:9;18436:18;18428:26;;18500:9;18494:4;18490:20;18486:1;18475:9;18471:17;18464:47;18528:131;18654:4;18528:131;:::i;:::-;18520:139;;18247:419;;;:::o;18672:160::-;18812:12;18808:1;18800:6;18796:14;18789:36;18672:160;:::o;18838:366::-;18980:3;19001:67;19065:2;19060:3;19001:67;:::i;:::-;18994:74;;19077:93;19166:3;19077:93;:::i;:::-;19195:2;19190:3;19186:12;19179:19;;18838:366;;;:::o;19210:419::-;19376:4;19414:2;19403:9;19399:18;19391:26;;19463:9;19457:4;19453:20;19449:1;19438:9;19434:17;19427:47;19491:131;19617:4;19491:131;:::i;:::-;19483:139;;19210:419;;;:::o;19635:177::-;19775:29;19771:1;19763:6;19759:14;19752:53;19635:177;:::o;19818:366::-;19960:3;19981:67;20045:2;20040:3;19981:67;:::i;:::-;19974:74;;20057:93;20146:3;20057:93;:::i;:::-;20175:2;20170:3;20166:12;20159:19;;19818:366;;;:::o;20190:419::-;20356:4;20394:2;20383:9;20379:18;20371:26;;20443:9;20437:4;20433:20;20429:1;20418:9;20414:17;20407:47;20471:131;20597:4;20471:131;:::i;:::-;20463:139;;20190:419;;;:::o;20615:299::-;20755:34;20751:1;20743:6;20739:14;20732:58;20824:34;20819:2;20811:6;20807:15;20800:59;20893:13;20888:2;20880:6;20876:15;20869:38;20615:299;:::o;20920:366::-;21062:3;21083:67;21147:2;21142:3;21083:67;:::i;:::-;21076:74;;21159:93;21248:3;21159:93;:::i;:::-;21277:2;21272:3;21268:12;21261:19;;20920:366;;;:::o;21292:419::-;21458:4;21496:2;21485:9;21481:18;21473:26;;21545:9;21539:4;21535:20;21531:1;21520:9;21516:17;21509:47;21573:131;21699:4;21573:131;:::i;:::-;21565:139;;21292:419;;;:::o;21717:224::-;21857:34;21853:1;21845:6;21841:14;21834:58;21926:7;21921:2;21913:6;21909:15;21902:32;21717:224;:::o;21947:366::-;22089:3;22110:67;22174:2;22169:3;22110:67;:::i;:::-;22103:74;;22186:93;22275:3;22186:93;:::i;:::-;22304:2;22299:3;22295:12;22288:19;;21947:366;;;:::o;22319:419::-;22485:4;22523:2;22512:9;22508:18;22500:26;;22572:9;22566:4;22562:20;22558:1;22547:9;22543:17;22536:47;22600:131;22726:4;22600:131;:::i;:::-;22592:139;;22319:419;;;:::o;22744:157::-;22884:9;22880:1;22872:6;22868:14;22861:33;22744:157;:::o;22907:365::-;23049:3;23070:66;23134:1;23129:3;23070:66;:::i;:::-;23063:73;;23145:93;23234:3;23145:93;:::i;:::-;23263:2;23258:3;23254:12;23247:19;;22907:365;;;:::o;23278:419::-;23444:4;23482:2;23471:9;23467:18;23459:26;;23531:9;23525:4;23521:20;23517:1;23506:9;23502:17;23495:47;23559:131;23685:4;23559:131;:::i;:::-;23551:139;;23278:419;;;:::o;23703:239::-;23843:34;23839:1;23831:6;23827:14;23820:58;23912:22;23907:2;23899:6;23895:15;23888:47;23703:239;:::o;23948:366::-;24090:3;24111:67;24175:2;24170:3;24111:67;:::i;:::-;24104:74;;24187:93;24276:3;24187:93;:::i;:::-;24305:2;24300:3;24296:12;24289:19;;23948:366;;;:::o;24320:419::-;24486:4;24524:2;24513:9;24509:18;24501:26;;24573:9;24567:4;24563:20;24559:1;24548:9;24544:17;24537:47;24601:131;24727:4;24601:131;:::i;:::-;24593:139;;24320:419;;;:::o;24745:180::-;24793:77;24790:1;24783:88;24890:4;24887:1;24880:15;24914:4;24911:1;24904:15;24931:233;24970:3;24993:24;25011:5;24993:24;:::i;:::-;24984:33;;25039:66;25032:5;25029:77;25026:103;;25109:18;;:::i;:::-;25026:103;25156:1;25149:5;25145:13;25138:20;;24931:233;;;:::o;25170:184::-;25269:11;25303:6;25298:3;25291:19;25343:4;25338:3;25334:14;25319:29;;25170:184;;;;:::o;25360:102::-;25429:4;25452:3;25444:11;;25360:102;;;:::o;25468:108::-;25545:24;25563:5;25545:24;:::i;:::-;25540:3;25533:37;25468:108;;:::o;25582:179::-;25651:10;25672:46;25714:3;25706:6;25672:46;:::i;:::-;25750:4;25745:3;25741:14;25727:28;;25582:179;;;;:::o;25767:122::-;25819:5;25844:39;25879:2;25874:3;25870:12;25865:3;25844:39;:::i;:::-;25835:48;;25767:122;;;;:::o;25895:115::-;25967:4;25999;25994:3;25990:14;25982:22;;25895:115;;;:::o;26046:699::-;26175:3;26198:86;26277:6;26272:3;26198:86;:::i;:::-;26191:93;;26308:58;26360:5;26308:58;:::i;:::-;26389:7;26420:1;26405:315;26430:6;26427:1;26424:13;26405:315;;;26500:42;26535:6;26526:7;26500:42;:::i;:::-;26562:63;26621:3;26606:13;26562:63;:::i;:::-;26555:70;;26648:62;26703:6;26648:62;:::i;:::-;26638:72;;26465:255;26452:1;26449;26445:9;26440:14;;26405:315;;;26409:14;26736:3;26729:10;;26180:565;;26046:699;;;;;:::o;26751:491::-;26926:4;26964:2;26953:9;26949:18;26941:26;;27013:9;27007:4;27003:20;26999:1;26988:9;26984:17;26977:47;27041:118;27154:4;27145:6;27137;27041:118;:::i;:::-;27033:126;;27169:66;27231:2;27220:9;27216:18;27207:6;27169:66;:::i;:::-;26751:491;;;;;;:::o;27248:181::-;27388:33;27384:1;27376:6;27372:14;27365:57;27248:181;:::o;27435:366::-;27577:3;27598:67;27662:2;27657:3;27598:67;:::i;:::-;27591:74;;27674:93;27763:3;27674:93;:::i;:::-;27792:2;27787:3;27783:12;27776:19;;27435:366;;;:::o;27807:419::-;27973:4;28011:2;28000:9;27996:18;27988:26;;28060:9;28054:4;28050:20;28046:1;28035:9;28031:17;28024:47;28088:131;28214:4;28088:131;:::i;:::-;28080:139;;27807:419;;;:::o;28232:332::-;28353:4;28391:2;28380:9;28376:18;28368:26;;28404:71;28472:1;28461:9;28457:17;28448:6;28404:71;:::i;:::-;28485:72;28553:2;28542:9;28538:18;28529:6;28485:72;:::i;:::-;28232:332;;;;;:::o;28570:137::-;28624:5;28655:6;28649:13;28640:22;;28671:30;28695:5;28671:30;:::i;:::-;28570:137;;;;:::o;28713:345::-;28780:6;28829:2;28817:9;28808:7;28804:23;28800:32;28797:119;;;28835:79;;:::i;:::-;28797:119;28955:1;28980:61;29033:7;29024:6;29013:9;29009:22;28980:61;:::i;:::-;28970:71;;28926:125;28713:345;;;;:::o;29064:225::-;29204:34;29200:1;29192:6;29188:14;29181:58;29273:8;29268:2;29260:6;29256:15;29249:33;29064:225;:::o;29295:366::-;29437:3;29458:67;29522:2;29517:3;29458:67;:::i;:::-;29451:74;;29534:93;29623:3;29534:93;:::i;:::-;29652:2;29647:3;29643:12;29636:19;;29295:366;;;:::o;29667:419::-;29833:4;29871:2;29860:9;29856:18;29848:26;;29920:9;29914:4;29910:20;29906:1;29895:9;29891:17;29884:47;29948:131;30074:4;29948:131;:::i;:::-;29940:139;;29667:419;;;:::o;30092:410::-;30132:7;30155:20;30173:1;30155:20;:::i;:::-;30150:25;;30189:20;30207:1;30189:20;:::i;:::-;30184:25;;30244:1;30241;30237:9;30266:30;30284:11;30266:30;:::i;:::-;30255:41;;30445:1;30436:7;30432:15;30429:1;30426:22;30406:1;30399:9;30379:83;30356:139;;30475:18;;:::i;:::-;30356:139;30140:362;30092:410;;;;:::o;30508:180::-;30556:77;30553:1;30546:88;30653:4;30650:1;30643:15;30677:4;30674:1;30667:15;30694:185;30734:1;30751:20;30769:1;30751:20;:::i;:::-;30746:25;;30785:20;30803:1;30785:20;:::i;:::-;30780:25;;30824:1;30814:35;;30829:18;;:::i;:::-;30814:35;30871:1;30868;30864:9;30859:14;;30694:185;;;;:::o;30885:182::-;31025:34;31021:1;31013:6;31009:14;31002:58;30885:182;:::o;31073:366::-;31215:3;31236:67;31300:2;31295:3;31236:67;:::i;:::-;31229:74;;31312:93;31401:3;31312:93;:::i;:::-;31430:2;31425:3;31421:12;31414:19;;31073:366;;;:::o;31445:419::-;31611:4;31649:2;31638:9;31634:18;31626:26;;31698:9;31692:4;31688:20;31684:1;31673:9;31669:17;31662:47;31726:131;31852:4;31726:131;:::i;:::-;31718:139;;31445:419;;;:::o;31870:223::-;32010:34;32006:1;31998:6;31994:14;31987:58;32079:6;32074:2;32066:6;32062:15;32055:31;31870:223;:::o;32099:366::-;32241:3;32262:67;32326:2;32321:3;32262:67;:::i;:::-;32255:74;;32338:93;32427:3;32338:93;:::i;:::-;32456:2;32451:3;32447:12;32440:19;;32099:366;;;:::o;32471:419::-;32637:4;32675:2;32664:9;32660:18;32652:26;;32724:9;32718:4;32714:20;32710:1;32699:9;32695:17;32688:47;32752:131;32878:4;32752:131;:::i;:::-;32744:139;;32471:419;;;:::o;32896:221::-;33036:34;33032:1;33024:6;33020:14;33013:58;33105:4;33100:2;33092:6;33088:15;33081:29;32896:221;:::o;33123:366::-;33265:3;33286:67;33350:2;33345:3;33286:67;:::i;:::-;33279:74;;33362:93;33451:3;33362:93;:::i;:::-;33480:2;33475:3;33471:12;33464:19;;33123:366;;;:::o;33495:419::-;33661:4;33699:2;33688:9;33684:18;33676:26;;33748:9;33742:4;33738:20;33734:1;33723:9;33719:17;33712:47;33776:131;33902:4;33776:131;:::i;:::-;33768:139;;33495:419;;;:::o;33920:179::-;34060:31;34056:1;34048:6;34044:14;34037:55;33920:179;:::o;34105:366::-;34247:3;34268:67;34332:2;34327:3;34268:67;:::i;:::-;34261:74;;34344:93;34433:3;34344:93;:::i;:::-;34462:2;34457:3;34453:12;34446:19;;34105:366;;;:::o;34477:419::-;34643:4;34681:2;34670:9;34666:18;34658:26;;34730:9;34724:4;34720:20;34716:1;34705:9;34701:17;34694:47;34758:131;34884:4;34758:131;:::i;:::-;34750:139;;34477:419;;;:::o;34902:224::-;35042:34;35038:1;35030:6;35026:14;35019:58;35111:7;35106:2;35098:6;35094:15;35087:32;34902:224;:::o;35132:366::-;35274:3;35295:67;35359:2;35354:3;35295:67;:::i;:::-;35288:74;;35371:93;35460:3;35371:93;:::i;:::-;35489:2;35484:3;35480:12;35473:19;;35132:366;;;:::o;35504:419::-;35670:4;35708:2;35697:9;35693:18;35685:26;;35757:9;35751:4;35747:20;35743:1;35732:9;35728:17;35721:47;35785:131;35911:4;35785:131;:::i;:::-;35777:139;;35504:419;;;:::o;35929:222::-;36069:34;36065:1;36057:6;36053:14;36046:58;36138:5;36133:2;36125:6;36121:15;36114:30;35929:222;:::o;36157:366::-;36299:3;36320:67;36384:2;36379:3;36320:67;:::i;:::-;36313:74;;36396:93;36485:3;36396:93;:::i;:::-;36514:2;36509:3;36505:12;36498:19;;36157:366;;;:::o;36529:419::-;36695:4;36733:2;36722:9;36718:18;36710:26;;36782:9;36776:4;36772:20;36768:1;36757:9;36753:17;36746:47;36810:131;36936:4;36810:131;:::i;:::-;36802:139;;36529:419;;;:::o;36954:180::-;37094:32;37090:1;37082:6;37078:14;37071:56;36954:180;:::o;37140:366::-;37282:3;37303:67;37367:2;37362:3;37303:67;:::i;:::-;37296:74;;37379:93;37468:3;37379:93;:::i;:::-;37497:2;37492:3;37488:12;37481:19;;37140:366;;;:::o;37512:419::-;37678:4;37716:2;37705:9;37701:18;37693:26;;37765:9;37759:4;37755:20;37751:1;37740:9;37736:17;37729:47;37793:131;37919:4;37793:131;:::i;:::-;37785:139;;37512:419;;;:::o;37937:442::-;38086:4;38124:2;38113:9;38109:18;38101:26;;38137:71;38205:1;38194:9;38190:17;38181:6;38137:71;:::i;:::-;38218:72;38286:2;38275:9;38271:18;38262:6;38218:72;:::i;:::-;38300;38368:2;38357:9;38353:18;38344:6;38300:72;:::i;:::-;37937:442;;;;;;:::o;38385:173::-;38525:25;38521:1;38513:6;38509:14;38502:49;38385:173;:::o;38564:366::-;38706:3;38727:67;38791:2;38786:3;38727:67;:::i;:::-;38720:74;;38803:93;38892:3;38803:93;:::i;:::-;38921:2;38916:3;38912:12;38905:19;;38564:366;;;:::o;38936:419::-;39102:4;39140:2;39129:9;39125:18;39117:26;;39189:9;39183:4;39179:20;39175:1;39164:9;39160:17;39153:47;39217:131;39343:4;39217:131;:::i;:::-;39209:139;;38936:419;;;:::o;39361:170::-;39501:22;39497:1;39489:6;39485:14;39478:46;39361:170;:::o;39537:366::-;39679:3;39700:67;39764:2;39759:3;39700:67;:::i;:::-;39693:74;;39776:93;39865:3;39776:93;:::i;:::-;39894:2;39889:3;39885:12;39878:19;;39537:366;;;:::o;39909:419::-;40075:4;40113:2;40102:9;40098:18;40090:26;;40162:9;40156:4;40152:20;40148:1;40137:9;40133:17;40126:47;40190:131;40316:4;40190:131;:::i;:::-;40182:139;;39909:419;;;:::o;40334:171::-;40474:23;40470:1;40462:6;40458:14;40451:47;40334:171;:::o;40511:366::-;40653:3;40674:67;40738:2;40733:3;40674:67;:::i;:::-;40667:74;;40750:93;40839:3;40750:93;:::i;:::-;40868:2;40863:3;40859:12;40852:19;;40511:366;;;:::o;40883:419::-;41049:4;41087:2;41076:9;41072:18;41064:26;;41136:9;41130:4;41126:20;41122:1;41111:9;41107:17;41100:47;41164:131;41290:4;41164:131;:::i;:::-;41156:139;;40883:419;;;:::o;41308:170::-;41448:22;41444:1;41436:6;41432:14;41425:46;41308:170;:::o;41484:366::-;41626:3;41647:67;41711:2;41706:3;41647:67;:::i;:::-;41640:74;;41723:93;41812:3;41723:93;:::i;:::-;41841:2;41836:3;41832:12;41825:19;;41484:366;;;:::o;41856:419::-;42022:4;42060:2;42049:9;42045:18;42037:26;;42109:9;42103:4;42099:20;42095:1;42084:9;42080:17;42073:47;42137:131;42263:4;42137:131;:::i;:::-;42129:139;;41856:419;;;:::o;42281:290::-;42421:34;42417:1;42409:6;42405:14;42398:58;42490:34;42485:2;42477:6;42473:15;42466:59;42559:4;42554:2;42546:6;42542:15;42535:29;42281:290;:::o;42577:366::-;42719:3;42740:67;42804:2;42799:3;42740:67;:::i;:::-;42733:74;;42816:93;42905:3;42816:93;:::i;:::-;42934:2;42929:3;42925:12;42918:19;;42577:366;;;:::o;42949:419::-;43115:4;43153:2;43142:9;43138:18;43130:26;;43202:9;43196:4;43192:20;43188:1;43177:9;43173:17;43166:47;43230:131;43356:4;43230:131;:::i;:::-;43222:139;;42949:419;;;:::o;43374:225::-;43514:34;43510:1;43502:6;43498:14;43491:58;43583:8;43578:2;43570:6;43566:15;43559:33;43374:225;:::o;43605:366::-;43747:3;43768:67;43832:2;43827:3;43768:67;:::i;:::-;43761:74;;43844:93;43933:3;43844:93;:::i;:::-;43962:2;43957:3;43953:12;43946:19;;43605:366;;;:::o;43977:419::-;44143:4;44181:2;44170:9;44166:18;44158:26;;44230:9;44224:4;44220:20;44216:1;44205:9;44201:17;44194:47;44258:131;44384:4;44258:131;:::i;:::-;44250:139;;43977:419;;;:::o;44402:194::-;44442:4;44462:20;44480:1;44462:20;:::i;:::-;44457:25;;44496:20;44514:1;44496:20;:::i;:::-;44491:25;;44540:1;44537;44533:9;44525:17;;44564:1;44558:4;44555:11;44552:37;;;44569:18;;:::i;:::-;44552:37;44402:194;;;;:::o
Swarm Source
ipfs://ad32f48d0586b47a823947817df6cdd8d45391541dddb1cefa845206dcc402e8
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.