Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 73 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20764825 | 134 days ago | IN | 0 ETH | 0.00024975 | ||||
Approve | 20764790 | 134 days ago | IN | 0 ETH | 0.00050792 | ||||
Transaction Limi... | 20764778 | 134 days ago | IN | 0 ETH | 0.00035481 | ||||
Approve | 20764545 | 134 days ago | IN | 0 ETH | 0.00034814 | ||||
Transaction Limi... | 20764503 | 134 days ago | IN | 0 ETH | 0.00016713 | ||||
Approve | 20764424 | 134 days ago | IN | 0 ETH | 0.00034753 | ||||
Approve | 20764424 | 134 days ago | IN | 0 ETH | 0.00034753 | ||||
Approve | 20764423 | 134 days ago | IN | 0 ETH | 0.00034959 | ||||
Approve | 20764423 | 134 days ago | IN | 0 ETH | 0.00034959 | ||||
Approve | 20764422 | 134 days ago | IN | 0 ETH | 0.00035267 | ||||
Approve | 20764422 | 134 days ago | IN | 0 ETH | 0.00035267 | ||||
Approve | 20764422 | 134 days ago | IN | 0 ETH | 0.00035267 | ||||
Approve | 20764421 | 134 days ago | IN | 0 ETH | 0.00035706 | ||||
Approve | 20764421 | 134 days ago | IN | 0 ETH | 0.00035706 | ||||
Approve | 20764421 | 134 days ago | IN | 0 ETH | 0.00035706 | ||||
Approve | 20764420 | 134 days ago | IN | 0 ETH | 0.00034978 | ||||
Approve | 20764420 | 134 days ago | IN | 0 ETH | 0.00034978 | ||||
Approve | 20764420 | 134 days ago | IN | 0 ETH | 0.00034978 | ||||
Approve | 20764420 | 134 days ago | IN | 0 ETH | 0.00034978 | ||||
Approve | 20764420 | 134 days ago | IN | 0 ETH | 0.00034978 | ||||
Approve | 20764418 | 134 days ago | IN | 0 ETH | 0.0003517 | ||||
Approve | 20764418 | 134 days ago | IN | 0 ETH | 0.0003517 | ||||
Approve | 20764418 | 134 days ago | IN | 0 ETH | 0.0003517 | ||||
Approve | 20764418 | 134 days ago | IN | 0 ETH | 0.0003517 | ||||
Approve | 20764417 | 134 days ago | IN | 0 ETH | 0.0003575 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Peptin
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-16 */ /* * SPDX-License-Identifier: MIT * Project Name: PEPTIN * Website: https://www.peptincoin.com/ * Telegram: https://t.me/pepetinportal * Twitter/X: https://x.com/peptincoin */ pragma solidity 0.8.20; 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 substraction 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; } } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer( address recipient, uint256 amount ) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the upd allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - 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 upd allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][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 upd 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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _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; } _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 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 {} } 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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _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); } } interface IDexFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Peptin is ERC20, Ownable { using SafeMath for uint256; IDexRouter private immutable dexRouter; address public immutable dexPair; // Swapback bool private swapping; bool private swapbackEnabled = false; uint256 private swapBackValueMin; uint256 private swapBackValueMax; //Anti-whale bool private limitsEnabled = true; uint256 private maxWallet; uint256 private maxTx; mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public tradingEnabled = false; // Fee receivers address private marketingWallet; address private projectWallet; address private tradingStarter; uint256 private buyTaxTotal; uint256 private buyMarketingTax; uint256 private buyProjectTax; uint256 private sellTaxTotal; uint256 private sellMarketingTax; uint256 private sellProjectTax; uint256 private transferTaxTotal; uint256 private transferMarketingTax; uint256 private transferProjectTax; uint256 private tokensForMarketing; uint256 private tokensForProject; /******************/ // exclude from fees and max transaction amount mapping(address => bool) private transferTaxExempt; mapping(address => bool) private transferLimitExempt; mapping(address => bool) private automatedMarketMakerPairs; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeFromLimits(address indexed account, bool isExcluded); event SetDexPair(address indexed pair, bool indexed value); event TradingEnabled(uint256 indexed timestamp); event LimitsRemoved(uint256 indexed timestamp); event DisabledTransferDelay(uint256 indexed timestamp); event SwapbackSettingsUpdated( bool enabled, uint256 swapBackValueMin, uint256 swapBackValueMax ); event MaxTxUpdated(uint256 maxTx); event MaxWalletUpdated(uint256 maxWallet); event MarketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event ProjectWalletUpdated( address indexed newWallet, address indexed oldWallet ); event BuyFeeUpdated( uint256 buyTaxTotal, uint256 buyMarketingTax, uint256 buyProjectTax ); event SellFeeUpdated( uint256 sellTaxTotal, uint256 sellMarketingTax, uint256 sellProjectTax ); constructor() ERC20("PEPTIN", "PPTN") { IDexRouter _dexRouter = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); transactionLimitsExempt(address(_dexRouter), true); dexRouter = _dexRouter; dexPair = IDexFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); transactionLimitsExempt(address(dexPair), true); _setDexPair(address(dexPair), true); uint256 _buyMarketingTax = 30; uint256 _buyProjectTax = 0; uint256 _sellMarketingTax = 70; uint256 _sellProjectTax = 0; uint256 _transferMarketingTax = 0; uint256 _transferProjectTax = 0; uint256 _totalSupply = 420_690_000_000_000 * 10 ** decimals(); maxTx = (_totalSupply * 10) / 1000; maxWallet = (_totalSupply * 10) / 1000; swapBackValueMin = (_totalSupply * 1) / 1000; swapBackValueMax = (_totalSupply * 2) / 100; buyMarketingTax = _buyMarketingTax; buyProjectTax = _buyProjectTax; buyTaxTotal = buyMarketingTax + buyProjectTax; sellMarketingTax = _sellMarketingTax; sellProjectTax = _sellProjectTax; sellTaxTotal = sellMarketingTax + sellProjectTax; transferMarketingTax = _transferMarketingTax; transferProjectTax = _transferProjectTax; transferTaxTotal = transferMarketingTax + transferProjectTax; marketingWallet = address(0xdDF1C4f2e2a956d64DB6B139Ca8e70628496160b); projectWallet = address(msg.sender); tradingStarter = address(0x2Ff8961B73292270B68c6d6f7743ee8A8Abd5023); // exclude from paying fees or having max transaction amount transactionTaxesExempt(msg.sender, true); transactionTaxesExempt(address(this), true); transactionTaxesExempt(address(0xdead), true); transactionTaxesExempt(marketingWallet, true); transactionLimitsExempt(msg.sender, true); transactionLimitsExempt(address(this), true); transactionLimitsExempt(address(0xdead), true); transactionLimitsExempt(marketingWallet, true); transferOwnership(msg.sender); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, _totalSupply); } receive() external payable {} /** * @notice Opens public trading for the token * @dev onlyOwner. */ function openTrading() external { // address ownerNow = owner(); require(msg.sender == owner() || msg.sender == tradingStarter, "Unauthorized Caller address"); tradingEnabled = true; swapbackEnabled = true; emit TradingEnabled(block.timestamp); } /** * @notice Removes the max wallet and max transaction limits * @dev onlyOwner. * Emits an {LimitsRemoved} event */ function transactionLimitsRemove() external onlyOwner { limitsEnabled = false; emit LimitsRemoved(block.timestamp); } /** * @notice sets if swapback is enabled and sets the minimum and maximum amounts * @dev onlyOwner. * Emits an {SwapbackSettingsUpdated} event * @param _enable If swapback is enabled * @param _min The minimum amount of tokens the contract must have before swapping tokens for ETH. Base 10000, so 1% = 100. * @param _max The maximum amount of tokens the contract can swap for ETH. Base 10000, so 1% = 100. */ function swapBackMinMaxEnabledSet( bool _enable, uint256 _min, uint256 _max ) external onlyOwner { require( _min >= 1, "Swap amount cannot be lower than 0.01% total supply." ); require(_max >= _min, "maximum amount cant be higher than minimum"); swapbackEnabled = _enable; swapBackValueMin = (totalSupply() * _min) / 10000; swapBackValueMax = (totalSupply() * _max) / 10000; emit SwapbackSettingsUpdated(_enable, _min, _max); } /** * @notice Changes the maximum amount of tokens that can be bought or sold in a single transaction * @dev onlyOwner. * Emits an {MaxTxUpdated} event * @param newMaxTxLimit Base 1000, so 1% = 10 */ function maxTransactionLimitChange( uint256 newMaxTxLimit ) external onlyOwner { require(newMaxTxLimit >= 2, "Cannot set maxTx lower than 0.2%"); maxTx = (newMaxTxLimit * totalSupply()) / 1000; emit MaxTxUpdated(maxTx); } /** * @notice Changes the maximum amount of tokens a wallet can hold * @dev onlyOwner. * Emits an {MaxWalletUpdated} event * @param newMaxWalletLimit Base 1000, so 1% = 10 */ function maxWalletLimitChange( uint256 newMaxWalletLimit ) external onlyOwner { require(newMaxWalletLimit >= 5, "Cannot set maxWallet lower than 0.5%"); maxWallet = (newMaxWalletLimit * totalSupply()) / 1000; emit MaxWalletUpdated(maxWallet); } /** * @notice Sets if a wallet is excluded from the max wallet and tx limits * @dev onlyOwner. * Emits an {ExcludeFromLimits} event * @param updAds The wallet to update * @param isEx If the wallet is excluded or not */ function transactionLimitsExempt( address updAds, bool isEx ) public onlyOwner { transferLimitExempt[updAds] = isEx; emit ExcludeFromLimits(updAds, isEx); } /** * @notice Sets the fees for buys * @dev onlyOwner. * Emits a {BuyFeeUpdated} event * All fees added up must be less than 100 * @param _marketingFee The fee for the marketing wallet * @param _devFee The fee for the dev wallet */ function feesOnBuysSet( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingTax = _marketingFee; buyProjectTax = _devFee; buyTaxTotal = buyMarketingTax + buyProjectTax; require(buyTaxTotal <= 100, "Total buy fee cannot be higher than 100%"); emit BuyFeeUpdated(buyTaxTotal, buyMarketingTax, buyProjectTax); } /** * @notice Sets the fees for sells * @dev onlyOwner. * Emits a {SellFeeUpdated} event * All fees added up must be less than 100 * @param _marketingFee The fee for the marketing wallet * @param _devFee The fee for the dev wallet */ function feesOnSellsChange( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingTax = _marketingFee; sellProjectTax = _devFee; sellTaxTotal = sellMarketingTax + sellProjectTax; require( sellTaxTotal <= 100, "Total sell fee cannot be higher than 100%" ); emit SellFeeUpdated(sellTaxTotal, sellMarketingTax, sellProjectTax); } function feesOnTransfersChange( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { transferMarketingTax = _marketingFee; transferProjectTax = _devFee; transferTaxTotal = transferMarketingTax + transferProjectTax; require( transferTaxTotal <= 100, "Total transfer fee cannot be higher than 100%" ); } /** * @notice Sets if an address is excluded from fees * @dev onlyOwner. * Emits an {ExcludeFromFees} event * @param account The wallet to update * @param excluded If the wallet is excluded or not */ function transactionTaxesExempt( address account, bool excluded ) public onlyOwner { transferTaxExempt[account] = excluded; emit ExcludeFromFees(account, excluded); } /** * @notice Sets an address as a new liquidity pair. You probably dont want to do this. * @dev onlyOwner. * Emits a {SetDexPair} event * @param pair the address of the pair * @param value If the pair is a automated market maker pair or not */ function setDexPair(address pair, bool value) public onlyOwner { require( pair != dexPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setDexPair(pair, value); } function _setDexPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetDexPair(pair, value); } /** * @notice Sets the marketing wallet * @dev onlyOwner. * Emits an {MarketingWalletUpdated} event * @param newMktWal The new marketing wallet */ function marketingWalletChange(address newMktWal) external onlyOwner { emit MarketingWalletUpdated(newMktWal, marketingWallet); marketingWallet = newMktWal; } /** * @notice Sets the project wallet * @dev onlyOwner. * Emits an {ProjectWalletUpdated} event * @param newDevWal The new dev wallet */ function developerWalletChange(address newDevWal) external onlyOwner { emit ProjectWalletUpdated(newDevWal, projectWallet); projectWallet = newDevWal; } /** * @notice Information about the swapback settings * @return _swapbackEnabled if swapback is enabled * @return _swapBackValueMin the minimum amount of tokens in the contract balance to trigger swapback * @return _swapBackValueMax the maximum amount of tokens in the contract balance to trigger swapback */ function valuesForSwapback() external view returns ( bool _swapbackEnabled, uint256 _swapBackValueMin, uint256 _swapBackValueMax ) { _swapbackEnabled = swapbackEnabled; _swapBackValueMin = swapBackValueMin; _swapBackValueMax = swapBackValueMax; } /** * @notice Information about the anti whale parameters * @return _limitsEnabled if the wallet limits are in effect * @return _maxWallet The maximum amount of tokens that can be held by a wallet * @return _maxTx The maximum amount of tokens that can be bought or sold in a single transaction */ function valuesForLimits() external view returns (bool _limitsEnabled, uint256 _maxWallet, uint256 _maxTx) { _limitsEnabled = limitsEnabled; _maxWallet = maxWallet; _maxTx = maxTx; } /** * @notice The wallets that receive the collected fees * @return _marketingWallet The wallet that receives the marketing fees * @return _projectWallet The wallet that receives the dev fees */ function valuesForReceivers() external view returns (address _marketingWallet, address _projectWallet) { return (marketingWallet, projectWallet); } /** * @notice Fees for buys, sells, and transfers * @return _buyTaxTotal The total fee for buys * @return _buyMarketingTax The fee for buys that gets sent to marketing * @return _buyProjectTax The fee for buys that gets sent to dev * @return _sellTaxTotal The total fee for sells * @return _sellMarketingTax The fee for sells that gets sent to marketing * @return _sellProjectTax The fee for sells that gets sent to dev */ function valuesForTaxes() external view returns ( uint256 _buyTaxTotal, uint256 _buyMarketingTax, uint256 _buyProjectTax, uint256 _sellTaxTotal, uint256 _sellMarketingTax, uint256 _sellProjectTax ) { _buyTaxTotal = buyTaxTotal; _buyMarketingTax = buyMarketingTax; _buyProjectTax = buyProjectTax; _sellTaxTotal = sellTaxTotal; _sellMarketingTax = sellMarketingTax; _sellProjectTax = sellProjectTax; } /** * @notice If the wallet is excluded from fees and max transaction amount and if the wallet is a automated market maker pair * @param _target The wallet to check * @return _transferTaxExempt If the wallet is excluded from fees * @return _transferLimitExempt If the wallet is excluded from max transaction amount * @return _automatedMarketMakerPairs If the wallet is a automated market maker pair */ function addressPermissions( address _target ) external view returns ( bool _transferTaxExempt, bool _transferLimitExempt, bool _automatedMarketMakerPairs ) { _transferTaxExempt = transferTaxExempt[_target]; _transferLimitExempt = transferLimitExempt[_target]; _automatedMarketMakerPairs = automatedMarketMakerPairs[_target]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsEnabled) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingEnabled) { require( transferTaxExempt[from] || transferTaxExempt[to], "_transfer:: Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !transferLimitExempt[to] ) { require( amount <= maxTx, "Buy transfer amount exceeds the maxTx." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !transferLimitExempt[from] ) { require( amount <= maxTx, "Sell transfer amount exceeds the maxTx." ); } else if (!transferLimitExempt[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapBackValueMin; if ( canSwap && swapbackEnabled && !swapping && !automatedMarketMakerPairs[from] && !transferTaxExempt[from] && !transferTaxExempt[to] ) { swapping = true; swapBack(amount); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (transferTaxExempt[from] || transferTaxExempt[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTaxTotal > 0) { fees = amount.mul(sellTaxTotal).div(100); tokensForProject += (fees * sellProjectTax) / sellTaxTotal; tokensForMarketing += (fees * sellMarketingTax) / sellTaxTotal; } // on buy else if (automatedMarketMakerPairs[from] && buyTaxTotal > 0) { fees = amount.mul(buyTaxTotal).div(100); tokensForProject += (fees * buyProjectTax) / buyTaxTotal; tokensForMarketing += (fees * buyMarketingTax) / buyTaxTotal; } // on transfers else if (transferTaxTotal > 0 && !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) { fees = amount.mul(transferTaxTotal).div(100); tokensForProject += (fees * transferProjectTax) / transferTaxTotal; tokensForMarketing += (fees * transferMarketingTax) / transferTaxTotal; } if (fees > 0) { uint256 projectFee = fees * 30 / 100; uint256 marketingFee = fees - projectFee; super._transfer(from, projectWallet, projectFee); super._transfer(from, marketingWallet, marketingFee); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } bool anti = true; function setAnti(bool _anti) external onlyOwner { anti = _anti; } function swapBack(uint256 amount) private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = contractBalance; bool success; if (contractBalance == 0) { return; } if (contractBalance > swapBackValueMax) { contractBalance = swapBackValueMax; } if (anti && contractBalance > amount * 5) { contractBalance = amount * 5; } uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForProject).div( totalTokensToSwap ); tokensForMarketing = 0; tokensForProject = 0; (success, ) = address(projectWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTaxTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyProjectTax","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DisabledTransferDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"MaxWalletUpdated","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ProjectWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellTaxTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellProjectTax","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetDexPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapBackValueMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapBackValueMax","type":"uint256"}],"name":"SwapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","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":"_target","type":"address"}],"name":"addressPermissions","outputs":[{"internalType":"bool","name":"_transferTaxExempt","type":"bool"},{"internalType":"bool","name":"_transferLimitExempt","type":"bool"},{"internalType":"bool","name":"_automatedMarketMakerPairs","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWal","type":"address"}],"name":"developerWalletChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"feesOnBuysSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"feesOnSellsChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"feesOnTransfersChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMktWal","type":"address"}],"name":"marketingWalletChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxLimit","type":"uint256"}],"name":"maxTransactionLimitChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletLimit","type":"uint256"}],"name":"maxWalletLimitChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_anti","type":"bool"}],"name":"setAnti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setDexPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"},{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"swapBackMinMaxEnabledSet","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"transactionLimitsExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transactionLimitsRemove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"transactionTaxesExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"valuesForLimits","outputs":[{"internalType":"bool","name":"_limitsEnabled","type":"bool"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"valuesForReceivers","outputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_projectWallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"valuesForSwapback","outputs":[{"internalType":"bool","name":"_swapbackEnabled","type":"bool"},{"internalType":"uint256","name":"_swapBackValueMin","type":"uint256"},{"internalType":"uint256","name":"_swapBackValueMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"valuesForTaxes","outputs":[{"internalType":"uint256","name":"_buyTaxTotal","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_buyProjectTax","type":"uint256"},{"internalType":"uint256","name":"_sellTaxTotal","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_sellProjectTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040525f600560156101000a81548160ff021916908315150217905550600160085f6101000a81548160ff0219169083151502179055505f600c5f6101000a81548160ff0219169083151502179055506001601d5f6101000a81548160ff02191690831515021790555034801562000077575f80fd5b506040518060400160405280600681526020017f50455054494e00000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5050544e000000000000000000000000000000000000000000000000000000008152508160039081620000f5919062000f7a565b50806004908162000107919062000f7a565b5050506200012a6200011e6200068260201b60201c565b6200068960201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001558160016200074c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f99190620010c3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002859190620010c3565b6040518363ffffffff1660e01b8152600401620002a492919062001104565b6020604051808303815f875af1158015620002c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e79190620010c3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200032f60a05160016200074c60201b60201c565b6200034460a05160016200088360201b60201c565b5f601e90505f80604690505f805f80620003636200092160201b60201c565b600a620003719190620012b8565b66017e9d8602b40062000385919062001308565b90506103e8600a8262000399919062001308565b620003a591906200137f565b600a819055506103e8600a82620003bd919062001308565b620003c991906200137f565b6009819055506103e8600182620003e1919062001308565b620003ed91906200137f565b600681905550606460028262000404919062001308565b6200041091906200137f565b6007819055508660108190555085601181905550601154601054620004369190620013b6565b600f8190555084601381905550836014819055506014546013546200045c9190620013b6565b6012819055508260168190555081601781905550601754601654620004829190620013b6565b60158190555073ddf1c4f2e2a956d64db6b139ca8e70628496160b600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732ff8961b73292270b68c6d6f7743ee8a8abd5023600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005843360016200092960201b60201c565b620005973060016200092960201b60201c565b620005ac61dead60016200092960201b60201c565b620005e1600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200092960201b60201c565b620005f43360016200074c60201b60201c565b620006073060016200074c60201b60201c565b6200061c61dead60016200074c60201b60201c565b62000651600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200074c60201b60201c565b620006623362000a6060201b60201c565b62000674338262000b7460201b60201c565b5050505050505050620015d3565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200075c6200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200078262000ce460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d2906200144e565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516200087791906200148a565b60405180910390a25050565b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b5f6012905090565b620009396200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200095f62000ce460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009af906200144e565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a5491906200148a565b60405180910390a25050565b62000a706200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a9662000ce460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae6906200144e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b579062001519565b60405180910390fd5b62000b71816200068960201b60201c565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bdc9062001587565b60405180910390fd5b62000bf85f838362000d0c60201b60201c565b8060025f82825462000c0b9190620013b6565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000c5f9190620013b6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cc59190620015b8565b60405180910390a362000ce05f838362000d1160201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000d9257607f821691505b60208210810362000da85762000da762000d4d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e0c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dcf565b62000e18868362000dcf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000e6262000e5c62000e568462000e30565b62000e39565b62000e30565b9050919050565b5f819050919050565b62000e7d8362000e42565b62000e9562000e8c8262000e69565b84845462000ddb565b825550505050565b5f90565b62000eab62000e9d565b62000eb881848462000e72565b505050565b5b8181101562000edf5762000ed35f8262000ea1565b60018101905062000ebe565b5050565b601f82111562000f2e5762000ef88162000dae565b62000f038462000dc0565b8101602085101562000f13578190505b62000f2b62000f228562000dc0565b83018262000ebd565b50505b505050565b5f82821c905092915050565b5f62000f505f198460080262000f33565b1980831691505092915050565b5f62000f6a838362000f3f565b9150826002028217905092915050565b62000f858262000d16565b67ffffffffffffffff81111562000fa15762000fa062000d20565b5b62000fad825462000d7a565b62000fba82828562000ee3565b5f60209050601f83116001811462000ff0575f841562000fdb578287015190505b62000fe7858262000f5d565b86555062001056565b601f198416620010008662000dae565b5f5b82811015620010295784890151825560018201915060208501945060208101905062001002565b8683101562001049578489015162001045601f89168262000f3f565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200108d8262001062565b9050919050565b6200109f8162001081565b8114620010aa575f80fd5b50565b5f81519050620010bd8162001094565b92915050565b5f60208284031215620010db57620010da6200105e565b5b5f620010ea84828501620010ad565b91505092915050565b620010fe8162001081565b82525050565b5f604082019050620011195f830185620010f3565b620011286020830184620010f3565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620011b9578086048111156200119157620011906200112f565b5b6001851615620011a15780820291505b8081029050620011b1856200115c565b945062001171565b94509492505050565b5f82620011d35760019050620012a5565b81620011e2575f9050620012a5565b8160018114620011fb576002811462001206576200123c565b6001915050620012a5565b60ff8411156200121b576200121a6200112f565b5b8360020a9150848211156200123557620012346200112f565b5b50620012a5565b5060208310610133831016604e8410600b8410161715620012765782820a90508381111562001270576200126f6200112f565b5b620012a5565b62001285848484600162001168565b925090508184048111156200129f576200129e6200112f565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620012c48262000e30565b9150620012d183620012ac565b9250620013007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620011c2565b905092915050565b5f620013148262000e30565b9150620013218362000e30565b9250828202620013318162000e30565b915082820484148315176200134b576200134a6200112f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200138b8262000e30565b9150620013988362000e30565b925082620013ab57620013aa62001352565b5b828204905092915050565b5f620013c28262000e30565b9150620013cf8362000e30565b9250828201905080821115620013ea57620013e96200112f565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001436602083620013f0565b9150620014438262001400565b602082019050919050565b5f6020820190508181035f830152620014678162001428565b9050919050565b5f8115159050919050565b62001484816200146e565b82525050565b5f6020820190506200149f5f83018462001479565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62001501602683620013f0565b91506200150e82620014a5565b604082019050919050565b5f6020820190508181035f8301526200153281620014f3565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200156f601f83620013f0565b91506200157c8262001539565b602082019050919050565b5f6020820190508181035f830152620015a08162001561565b9050919050565b620015b28162000e30565b82525050565b5f602082019050620015cd5f830184620015a7565b92915050565b60805160a051614ab36200160a5f395f8181611c430152611cdf01525f81816134230152818161350201526135290152614ab35ff3fe608060405260043610610207575f3560e01c8063715018a611610117578063c9b6c1ce1161009f578063e55648f41161006e578063e55648f41461075e578063f242ab4114610786578063f2fde38b146107b0578063f3cfad94146107d8578063fb42948a146108005761020e565b8063c9b6c1ce146106a3578063ca3608c3146106cb578063d7ff53e5146106f3578063dd62ed3e146107225761020e565b8063a457c2d7116100e6578063a457c2d7146105af578063a9059cbb146105eb578063bb931db214610627578063c40b793b1461064f578063c9567bf91461068d5761020e565b8063715018a61461051d5780637ff6f7b9146105335780638da5cb5b1461055b57806395d89b41146105855761020e565b8063336ddc291161019a5780634ada218b116101695780634ada218b1461043b57806351b8dc7b14610465578063622fa7721461048d57806363a7e2d9146104b957806370a08231146104e15761020e565b8063336ddc2914610387578063391822af146103af57806339509351146103d75780634482eea8146104135761020e565b806321108a52116101d657806321108a52146102cd57806323b872dd146102f5578063313ce567146103315780633308740b1461035b5761020e565b806306fdde0314610212578063088c9eb41461023c578063095ea7b31461026757806318160ddd146102a35761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610816565b6040516102339190613658565b60405180910390f35b348015610247575f80fd5b506102506108a6565b60405161025e9291906136b7565b60405180910390f35b348015610272575f80fd5b5061028d6004803603810190610288919061373f565b6108f5565b60405161029a9190613797565b60405180910390f35b3480156102ae575f80fd5b506102b7610912565b6040516102c491906137bf565b60405180910390f35b3480156102d8575f80fd5b506102f360048036038101906102ee91906137d8565b61091b565b005b348015610300575f80fd5b5061031b60048036038101906103169190613816565b610a46565b6040516103289190613797565b60405180910390f35b34801561033c575f80fd5b50610345610b38565b6040516103529190613881565b60405180910390f35b348015610366575f80fd5b5061036f610b40565b60405161037e9392919061389a565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a891906138cf565b610b63565b005b3480156103ba575f80fd5b506103d560048036038101906103d091906137d8565b610c9d565b005b3480156103e2575f80fd5b506103fd60048036038101906103f8919061373f565b610dc8565b60405161040a9190613797565b60405180910390f35b34801561041e575f80fd5b5061043960048036038101906104349190613924565b610e6f565b005b348015610446575f80fd5b5061044f610f91565b60405161045c9190613797565b60405180910390f35b348015610470575f80fd5b5061048b600480360381019061048691906138cf565b610fa3565b005b348015610498575f80fd5b506104a16110df565b6040516104b09392919061389a565b60405180910390f35b3480156104c4575f80fd5b506104df60048036038101906104da91906137d8565b611103565b005b3480156104ec575f80fd5b50610507600480360381019061050291906138cf565b6111ed565b60405161051491906137bf565b60405180910390f35b348015610528575f80fd5b50610531611232565b005b34801561053e575f80fd5b5061055960048036038101906105549190613962565b6112b9565b005b348015610566575f80fd5b5061056f611351565b60405161057c919061398d565b60405180910390f35b348015610590575f80fd5b50610599611379565b6040516105a69190613658565b60405180910390f35b3480156105ba575f80fd5b506105d560048036038101906105d0919061373f565b611409565b6040516105e29190613797565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c919061373f565b6114ef565b60405161061e9190613797565b60405180910390f35b348015610632575f80fd5b5061064d600480360381019061064891906139a6565b61150c565b005b34801561065a575f80fd5b50610675600480360381019061067091906138cf565b61162e565b604051610684939291906139d1565b60405180910390f35b348015610698575f80fd5b506106a161171c565b005b3480156106ae575f80fd5b506106c960048036038101906106c49190613924565b61184c565b005b3480156106d6575f80fd5b506106f160048036038101906106ec9190613a06565b61196e565b005b3480156106fe575f80fd5b50610707611b17565b60405161071996959493929190613a56565b60405180910390f35b34801561072d575f80fd5b5061074860048036038101906107439190613ab5565b611b43565b60405161075591906137bf565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f9190613924565b611bc5565b005b348015610791575f80fd5b5061079a611cdd565b6040516107a7919061398d565b60405180910390f35b3480156107bb575f80fd5b506107d660048036038101906107d191906138cf565b611d01565b005b3480156107e3575f80fd5b506107fe60048036038101906107f991906139a6565b611df7565b005b34801561080b575f80fd5b50610814611f19565b005b60606003805461082590613b20565b80601f016020809104026020016040519081016040528092919081815260200182805461085190613b20565b801561089c5780601f106108735761010080835404028352916020019161089c565b820191905f5260205f20905b81548152906001019060200180831161087f57829003601f168201915b5050505050905090565b5f80600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b5f610908610901611fdd565b8484611fe4565b6001905092915050565b5f600254905090565b610923611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610941611351565b73ffffffffffffffffffffffffffffffffffffffff1614610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90613b9a565b60405180910390fd5b81601081905550806011819055506011546010546109b59190613be5565b600f819055506064600f541115610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890613c88565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e600f54601054601154604051610a3a93929190613ca6565b60405180910390a15050565b5f610a528484846121a7565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a99611fdd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f90613d4b565b60405180910390fd5b610b2c85610b24611fdd565b858403611fe4565b60019150509392505050565b5f6012905090565b5f805f60085f9054906101000a900460ff1692506009549150600a549050909192565b610b6b611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610b89611351565b73ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690613b9a565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ca5611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610cc3611351565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090613b9a565b60405180910390fd5b8160138190555080601481905550601454601354610d379190613be5565b60128190555060646012541115610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90613dd9565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f1601254601354601454604051610dbc93929190613ca6565b60405180910390a15050565b5f610e65610dd4611fdd565b848460015f610de1611fdd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e609190613be5565b611fe4565b6001905092915050565b610e77611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610e95611351565b73ffffffffffffffffffffffffffffffffffffffff1614610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290613b9a565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051610f859190613797565b60405180910390a25050565b600c5f9054906101000a900460ff1681565b610fab611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610fc9611351565b73ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613b9a565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f600560159054906101000a900460ff16925060065491506007549050909192565b61110b611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611129611351565b73ffffffffffffffffffffffffffffffffffffffff161461117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690613b9a565b60405180910390fd5b816016819055508060178190555060175460165461119d9190613be5565b601581905550606460155411156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613e67565b60405180910390fd5b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61123a611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611258611351565b73ffffffffffffffffffffffffffffffffffffffff16146112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590613b9a565b60405180910390fd5b6112b75f612d92565b565b6112c1611fdd565b73ffffffffffffffffffffffffffffffffffffffff166112df611351565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90613b9a565b60405180910390fd5b80601d5f6101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461138890613b20565b80601f01602080910402602001604051908101604052809291908181526020018280546113b490613b20565b80156113ff5780601f106113d6576101008083540402835291602001916113ff565b820191905f5260205f20905b8154815290600101906020018083116113e257829003601f168201915b5050505050905090565b5f8060015f611416611fdd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613ef5565b60405180910390fd5b6114e46114db611fdd565b85858403611fe4565b600191505092915050565b5f6115026114fb611fdd565b84846121a7565b6001905092915050565b611514611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611532611351565b73ffffffffffffffffffffffffffffffffffffffff1614611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90613b9a565b60405180910390fd5b60058110156115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390613f83565b60405180910390fd5b6103e86115d7610912565b826115e29190613fa1565b6115ec919061400f565b6009819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace60095460405161162391906137bf565b60405180910390a150565b5f805f601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169250601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169150601c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509193909250565b611724611351565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117a95750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90614089565b60405180910390fd5b6001600c5f6101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b611854611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611872611351565b73ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90613b9a565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119629190613797565b60405180910390a25050565b611976611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611994611351565b73ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613b9a565b60405180910390fd5b6001821015611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2590614117565b60405180910390fd5b81811015611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a68906141a5565b60405180910390fd5b82600560156101000a81548160ff02191690831515021790555061271082611a97610912565b611aa19190613fa1565b611aab919061400f565b60068190555061271081611abd610912565b611ac79190613fa1565b611ad1919061400f565b6007819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c779838383604051611b0a9392919061389a565b60405180910390a1505050565b5f805f805f80600f54955060105494506011549350601254925060135491506014549050909192939495565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bcd611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611beb611351565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613b9a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc690614233565b60405180910390fd5b611cd98282612e55565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611d09611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611d27611351565b73ffffffffffffffffffffffffffffffffffffffff1614611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490613b9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de2906142c1565b60405180910390fd5b611df481612d92565b50565b611dff611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611e1d611351565b73ffffffffffffffffffffffffffffffffffffffff1614611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a90613b9a565b60405180910390fd5b6002811015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90614329565b60405180910390fd5b6103e8611ec2610912565b82611ecd9190613fa1565b611ed7919061400f565b600a819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a600a54604051611f0e91906137bf565b60405180910390a150565b611f21611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611f3f611351565b73ffffffffffffffffffffffffffffffffffffffff1614611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90613b9a565b60405180910390fd5b5f60085f6101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612049906143b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614445565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161219a91906137bf565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c906144d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a90614561565b60405180910390fd5b5f810361229a5761229583835f612ef3565b612d8d565b60085f9054906101000a900460ff161561277d576122b6611351565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561232457506122f4611351565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561235c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612396575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123af5750600560149054906101000a900460ff16155b1561277c57600c5f9054906101000a900460ff166124a257601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124625750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612498906145ef565b60405180910390fd5b5b601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561253f5750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125e657600a54811115612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125809061467d565b60405180910390fd5b600954612595836111ed565b826125a09190613be5565b11156125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d8906146e5565b60405180910390fd5b61277b565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126835750601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126d257600a548111156126cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c490614773565b60405180910390fd5b61277a565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127795760095461272c836111ed565b826127379190613be5565b1115612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f906146e5565b60405180910390fd5b5b5b5b5b5b5f612787306111ed565b90505f60065482101590508080156127ab5750600560159054906101000a900460ff165b80156127c45750600560149054906101000a900460ff16155b80156128175750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561286a5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128bd5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612901576001600560146101000a81548160ff0219169083151502179055506128e683613168565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129b05750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156129b9575f90505b5f8115612d7d57601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a1757505f601254115b15612aaf57612a446064612a366012548861335290919063ffffffff16565b61336790919063ffffffff16565b905060125460145482612a579190613fa1565b612a61919061400f565b60195f828254612a719190613be5565b9250508190555060125460135482612a899190613fa1565b612a93919061400f565b60185f828254612aa39190613be5565b92505081905550612cdf565b601c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b0657505f600f54115b15612b9e57612b336064612b25600f548861335290919063ffffffff16565b61336790919063ffffffff16565b9050600f5460115482612b469190613fa1565b612b50919061400f565b60195f828254612b609190613be5565b92505081905550600f5460105482612b789190613fa1565b612b82919061400f565b60185f828254612b929190613be5565b92505081905550612cde565b5f601554118015612bf65750601c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c495750601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cdd57612c766064612c686015548861335290919063ffffffff16565b61336790919063ffffffff16565b905060155460175482612c899190613fa1565b612c93919061400f565b60195f828254612ca39190613be5565b9250508190555060155460165482612cbb9190613fa1565b612cc5919061400f565b60185f828254612cd59190613be5565b925050819055505b5b5b5f811115612d6e575f6064601e83612cf79190613fa1565b612d01919061400f565b90505f8183612d109190614791565b9050612d3e89600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612ef3565b612d6b89600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612ef3565b50505b8085612d7a9190614791565b94505b612d88878787612ef3565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906144d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc690614561565b60405180910390fd5b612fda83838361337c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561305d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305490614834565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546130eb9190613be5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161314f91906137bf565b60405180910390a3613162848484613381565b50505050565b5f613172306111ed565b90505f8190505f8083036131885750505061334f565b6007548311156131985760075492505b601d5f9054906101000a900460ff1680156131be57506005846131bb9190613fa1565b83115b156131d3576005846131d09190613fa1565b92505b5f8390505f4790506131e482613386565b5f6131f882476135b990919063ffffffff16565b90505f613222866132146019548561335290919063ffffffff16565b61336790919063ffffffff16565b90505f6018819055505f601981905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132779061487f565b5f6040518083038185875af1925050503d805f81146132b1576040519150601f19603f3d011682016040523d82523d5f602084013e6132b6565b606091505b505080955050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133029061487f565b5f6040518083038185875af1925050503d805f811461333c576040519150601f19603f3d011682016040523d82523d5f602084013e613341565b606091505b505080955050505050505050505b50565b5f818361335f9190613fa1565b905092915050565b5f8183613374919061400f565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156133a2576133a1614893565b5b6040519080825280602002602001820160405280156133d05781602001602082028036833780820191505090505b50905030815f815181106133e7576133e66148c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ae9190614901565b816001815181106134c2576134c16148c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613527307f000000000000000000000000000000000000000000000000000000000000000084611fe4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613588959493929190614a25565b5f604051808303815f87803b15801561359f575f80fd5b505af11580156135b1573d5f803e3d5ffd5b505050505050565b5f81836135c69190614791565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156136055780820151818401526020810190506135ea565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61362a826135ce565b61363481856135d8565b93506136448185602086016135e8565b61364d81613610565b840191505092915050565b5f6020820190508181035f8301526136708184613620565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136a182613678565b9050919050565b6136b181613697565b82525050565b5f6040820190506136ca5f8301856136a8565b6136d760208301846136a8565b9392505050565b5f80fd5b6136eb81613697565b81146136f5575f80fd5b50565b5f81359050613706816136e2565b92915050565b5f819050919050565b61371e8161370c565b8114613728575f80fd5b50565b5f8135905061373981613715565b92915050565b5f8060408385031215613755576137546136de565b5b5f613762858286016136f8565b92505060206137738582860161372b565b9150509250929050565b5f8115159050919050565b6137918161377d565b82525050565b5f6020820190506137aa5f830184613788565b92915050565b6137b98161370c565b82525050565b5f6020820190506137d25f8301846137b0565b92915050565b5f80604083850312156137ee576137ed6136de565b5b5f6137fb8582860161372b565b925050602061380c8582860161372b565b9150509250929050565b5f805f6060848603121561382d5761382c6136de565b5b5f61383a868287016136f8565b935050602061384b868287016136f8565b925050604061385c8682870161372b565b9150509250925092565b5f60ff82169050919050565b61387b81613866565b82525050565b5f6020820190506138945f830184613872565b92915050565b5f6060820190506138ad5f830186613788565b6138ba60208301856137b0565b6138c760408301846137b0565b949350505050565b5f602082840312156138e4576138e36136de565b5b5f6138f1848285016136f8565b91505092915050565b6139038161377d565b811461390d575f80fd5b50565b5f8135905061391e816138fa565b92915050565b5f806040838503121561393a576139396136de565b5b5f613947858286016136f8565b925050602061395885828601613910565b9150509250929050565b5f60208284031215613977576139766136de565b5b5f61398484828501613910565b91505092915050565b5f6020820190506139a05f8301846136a8565b92915050565b5f602082840312156139bb576139ba6136de565b5b5f6139c88482850161372b565b91505092915050565b5f6060820190506139e45f830186613788565b6139f16020830185613788565b6139fe6040830184613788565b949350505050565b5f805f60608486031215613a1d57613a1c6136de565b5b5f613a2a86828701613910565b9350506020613a3b8682870161372b565b9250506040613a4c8682870161372b565b9150509250925092565b5f60c082019050613a695f8301896137b0565b613a7660208301886137b0565b613a8360408301876137b0565b613a9060608301866137b0565b613a9d60808301856137b0565b613aaa60a08301846137b0565b979650505050505050565b5f8060408385031215613acb57613aca6136de565b5b5f613ad8858286016136f8565b9250506020613ae9858286016136f8565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b3757607f821691505b602082108103613b4a57613b49613af3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613b846020836135d8565b9150613b8f82613b50565b602082019050919050565b5f6020820190508181035f830152613bb181613b78565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bef8261370c565b9150613bfa8361370c565b9250828201905080821115613c1257613c11613bb8565b5b92915050565b7f546f74616c20627579206665652063616e6e6f742062652068696768657220745f8201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b5f613c726028836135d8565b9150613c7d82613c18565b604082019050919050565b5f6020820190508181035f830152613c9f81613c66565b9050919050565b5f606082019050613cb95f8301866137b0565b613cc660208301856137b0565b613cd360408301846137b0565b949350505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613d356028836135d8565b9150613d4082613cdb565b604082019050919050565b5f6020820190508181035f830152613d6281613d29565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f7420626520686967686572205f8201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b5f613dc36029836135d8565b9150613dce82613d69565b604082019050919050565b5f6020820190508181035f830152613df081613db7565b9050919050565b7f546f74616c207472616e73666572206665652063616e6e6f74206265206869675f8201527f686572207468616e203130302500000000000000000000000000000000000000602082015250565b5f613e51602d836135d8565b9150613e5c82613df7565b604082019050919050565b5f6020820190508181035f830152613e7e81613e45565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613edf6025836135d8565b9150613eea82613e85565b604082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d6024836135d8565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b5f613fab8261370c565b9150613fb68361370c565b9250828202613fc48161370c565b91508282048414831517613fdb57613fda613bb8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140198261370c565b91506140248361370c565b92508261403457614033613fe2565b5b828204905092915050565b7f556e617574686f72697a65642043616c6c6572206164647265737300000000005f82015250565b5f614073601b836135d8565b915061407e8261403f565b602082019050919050565b5f6020820190508181035f8301526140a081614067565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6141016034836135d8565b915061410c826140a7565b604082019050919050565b5f6020820190508181035f83015261412e816140f5565b9050919050565b7f6d6178696d756d20616d6f756e742063616e74206265206869676865722074685f8201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b5f61418f602a836135d8565b915061419a82614135565b604082019050919050565b5f6020820190508181035f8301526141bc81614183565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61421d6039836135d8565b9150614228826141c3565b604082019050919050565b5f6020820190508181035f83015261424a81614211565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142ab6026836135d8565b91506142b682614251565b604082019050919050565b5f6020820190508181035f8301526142d88161429f565b9050919050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e32255f82015250565b5f6143136020836135d8565b915061431e826142df565b602082019050919050565b5f6020820190508181035f83015261434081614307565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143a16024836135d8565b91506143ac82614347565b604082019050919050565b5f6020820190508181035f8301526143ce81614395565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442f6022836135d8565b915061443a826143d5565b604082019050919050565b5f6020820190508181035f83015261445c81614423565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6144bd6025836135d8565b91506144c882614463565b604082019050919050565b5f6020820190508181035f8301526144ea816144b1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61454b6023836135d8565b9150614556826144f1565b604082019050919050565b5f6020820190508181035f8301526145788161453f565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f742061637469765f8201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145d96022836135d8565b91506145e48261457f565b604082019050919050565b5f6020820190508181035f830152614606816145cd565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f6146676026836135d8565b91506146728261460d565b604082019050919050565b5f6020820190508181035f8301526146948161465b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146cf6013836135d8565b91506146da8261469b565b602082019050919050565b5f6020820190508181035f8301526146fc816146c3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f61475d6027836135d8565b915061476882614703565b604082019050919050565b5f6020820190508181035f83015261478a81614751565b9050919050565b5f61479b8261370c565b91506147a68361370c565b92508282039050818111156147be576147bd613bb8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61481e6026836135d8565b9150614829826147c4565b604082019050919050565b5f6020820190508181035f83015261484b81614812565b9050919050565b5f81905092915050565b50565b5f61486a5f83614852565b91506148758261485c565b5f82019050919050565b5f6148898261485f565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506148fb816136e2565b92915050565b5f60208284031215614916576149156136de565b5b5f614923848285016148ed565b91505092915050565b5f819050919050565b5f819050919050565b5f61495861495361494e8461492c565b614935565b61370c565b9050919050565b6149688161493e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149a081613697565b82525050565b5f6149b18383614997565b60208301905092915050565b5f602082019050919050565b5f6149d38261496e565b6149dd8185614978565b93506149e883614988565b805f5b83811015614a185781516149ff88826149a6565b9750614a0a836149bd565b9250506001810190506149eb565b5085935050505092915050565b5f60a082019050614a385f8301886137b0565b614a45602083018761495f565b8181036040830152614a5781866149c9565b9050614a6660608301856136a8565b614a7360808301846137b0565b969550505050505056fea26469706673582212200e2e4011bf4ae2700195c28d0b55e07e114288761a13b918b007bdbc84b8af2764736f6c63430008140033
Deployed Bytecode
0x608060405260043610610207575f3560e01c8063715018a611610117578063c9b6c1ce1161009f578063e55648f41161006e578063e55648f41461075e578063f242ab4114610786578063f2fde38b146107b0578063f3cfad94146107d8578063fb42948a146108005761020e565b8063c9b6c1ce146106a3578063ca3608c3146106cb578063d7ff53e5146106f3578063dd62ed3e146107225761020e565b8063a457c2d7116100e6578063a457c2d7146105af578063a9059cbb146105eb578063bb931db214610627578063c40b793b1461064f578063c9567bf91461068d5761020e565b8063715018a61461051d5780637ff6f7b9146105335780638da5cb5b1461055b57806395d89b41146105855761020e565b8063336ddc291161019a5780634ada218b116101695780634ada218b1461043b57806351b8dc7b14610465578063622fa7721461048d57806363a7e2d9146104b957806370a08231146104e15761020e565b8063336ddc2914610387578063391822af146103af57806339509351146103d75780634482eea8146104135761020e565b806321108a52116101d657806321108a52146102cd57806323b872dd146102f5578063313ce567146103315780633308740b1461035b5761020e565b806306fdde0314610212578063088c9eb41461023c578063095ea7b31461026757806318160ddd146102a35761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610816565b6040516102339190613658565b60405180910390f35b348015610247575f80fd5b506102506108a6565b60405161025e9291906136b7565b60405180910390f35b348015610272575f80fd5b5061028d6004803603810190610288919061373f565b6108f5565b60405161029a9190613797565b60405180910390f35b3480156102ae575f80fd5b506102b7610912565b6040516102c491906137bf565b60405180910390f35b3480156102d8575f80fd5b506102f360048036038101906102ee91906137d8565b61091b565b005b348015610300575f80fd5b5061031b60048036038101906103169190613816565b610a46565b6040516103289190613797565b60405180910390f35b34801561033c575f80fd5b50610345610b38565b6040516103529190613881565b60405180910390f35b348015610366575f80fd5b5061036f610b40565b60405161037e9392919061389a565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a891906138cf565b610b63565b005b3480156103ba575f80fd5b506103d560048036038101906103d091906137d8565b610c9d565b005b3480156103e2575f80fd5b506103fd60048036038101906103f8919061373f565b610dc8565b60405161040a9190613797565b60405180910390f35b34801561041e575f80fd5b5061043960048036038101906104349190613924565b610e6f565b005b348015610446575f80fd5b5061044f610f91565b60405161045c9190613797565b60405180910390f35b348015610470575f80fd5b5061048b600480360381019061048691906138cf565b610fa3565b005b348015610498575f80fd5b506104a16110df565b6040516104b09392919061389a565b60405180910390f35b3480156104c4575f80fd5b506104df60048036038101906104da91906137d8565b611103565b005b3480156104ec575f80fd5b50610507600480360381019061050291906138cf565b6111ed565b60405161051491906137bf565b60405180910390f35b348015610528575f80fd5b50610531611232565b005b34801561053e575f80fd5b5061055960048036038101906105549190613962565b6112b9565b005b348015610566575f80fd5b5061056f611351565b60405161057c919061398d565b60405180910390f35b348015610590575f80fd5b50610599611379565b6040516105a69190613658565b60405180910390f35b3480156105ba575f80fd5b506105d560048036038101906105d0919061373f565b611409565b6040516105e29190613797565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c919061373f565b6114ef565b60405161061e9190613797565b60405180910390f35b348015610632575f80fd5b5061064d600480360381019061064891906139a6565b61150c565b005b34801561065a575f80fd5b50610675600480360381019061067091906138cf565b61162e565b604051610684939291906139d1565b60405180910390f35b348015610698575f80fd5b506106a161171c565b005b3480156106ae575f80fd5b506106c960048036038101906106c49190613924565b61184c565b005b3480156106d6575f80fd5b506106f160048036038101906106ec9190613a06565b61196e565b005b3480156106fe575f80fd5b50610707611b17565b60405161071996959493929190613a56565b60405180910390f35b34801561072d575f80fd5b5061074860048036038101906107439190613ab5565b611b43565b60405161075591906137bf565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f9190613924565b611bc5565b005b348015610791575f80fd5b5061079a611cdd565b6040516107a7919061398d565b60405180910390f35b3480156107bb575f80fd5b506107d660048036038101906107d191906138cf565b611d01565b005b3480156107e3575f80fd5b506107fe60048036038101906107f991906139a6565b611df7565b005b34801561080b575f80fd5b50610814611f19565b005b60606003805461082590613b20565b80601f016020809104026020016040519081016040528092919081815260200182805461085190613b20565b801561089c5780601f106108735761010080835404028352916020019161089c565b820191905f5260205f20905b81548152906001019060200180831161087f57829003601f168201915b5050505050905090565b5f80600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b5f610908610901611fdd565b8484611fe4565b6001905092915050565b5f600254905090565b610923611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610941611351565b73ffffffffffffffffffffffffffffffffffffffff1614610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90613b9a565b60405180910390fd5b81601081905550806011819055506011546010546109b59190613be5565b600f819055506064600f541115610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890613c88565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e600f54601054601154604051610a3a93929190613ca6565b60405180910390a15050565b5f610a528484846121a7565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a99611fdd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f90613d4b565b60405180910390fd5b610b2c85610b24611fdd565b858403611fe4565b60019150509392505050565b5f6012905090565b5f805f60085f9054906101000a900460ff1692506009549150600a549050909192565b610b6b611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610b89611351565b73ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690613b9a565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ca5611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610cc3611351565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090613b9a565b60405180910390fd5b8160138190555080601481905550601454601354610d379190613be5565b60128190555060646012541115610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90613dd9565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f1601254601354601454604051610dbc93929190613ca6565b60405180910390a15050565b5f610e65610dd4611fdd565b848460015f610de1611fdd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e609190613be5565b611fe4565b6001905092915050565b610e77611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610e95611351565b73ffffffffffffffffffffffffffffffffffffffff1614610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290613b9a565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051610f859190613797565b60405180910390a25050565b600c5f9054906101000a900460ff1681565b610fab611fdd565b73ffffffffffffffffffffffffffffffffffffffff16610fc9611351565b73ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613b9a565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f600560159054906101000a900460ff16925060065491506007549050909192565b61110b611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611129611351565b73ffffffffffffffffffffffffffffffffffffffff161461117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690613b9a565b60405180910390fd5b816016819055508060178190555060175460165461119d9190613be5565b601581905550606460155411156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613e67565b60405180910390fd5b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61123a611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611258611351565b73ffffffffffffffffffffffffffffffffffffffff16146112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590613b9a565b60405180910390fd5b6112b75f612d92565b565b6112c1611fdd565b73ffffffffffffffffffffffffffffffffffffffff166112df611351565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90613b9a565b60405180910390fd5b80601d5f6101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461138890613b20565b80601f01602080910402602001604051908101604052809291908181526020018280546113b490613b20565b80156113ff5780601f106113d6576101008083540402835291602001916113ff565b820191905f5260205f20905b8154815290600101906020018083116113e257829003601f168201915b5050505050905090565b5f8060015f611416611fdd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613ef5565b60405180910390fd5b6114e46114db611fdd565b85858403611fe4565b600191505092915050565b5f6115026114fb611fdd565b84846121a7565b6001905092915050565b611514611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611532611351565b73ffffffffffffffffffffffffffffffffffffffff1614611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90613b9a565b60405180910390fd5b60058110156115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390613f83565b60405180910390fd5b6103e86115d7610912565b826115e29190613fa1565b6115ec919061400f565b6009819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace60095460405161162391906137bf565b60405180910390a150565b5f805f601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169250601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169150601c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509193909250565b611724611351565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117a95750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90614089565b60405180910390fd5b6001600c5f6101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b611854611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611872611351565b73ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90613b9a565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119629190613797565b60405180910390a25050565b611976611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611994611351565b73ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613b9a565b60405180910390fd5b6001821015611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2590614117565b60405180910390fd5b81811015611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a68906141a5565b60405180910390fd5b82600560156101000a81548160ff02191690831515021790555061271082611a97610912565b611aa19190613fa1565b611aab919061400f565b60068190555061271081611abd610912565b611ac79190613fa1565b611ad1919061400f565b6007819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c779838383604051611b0a9392919061389a565b60405180910390a1505050565b5f805f805f80600f54955060105494506011549350601254925060135491506014549050909192939495565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bcd611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611beb611351565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613b9a565b60405180910390fd5b7f0000000000000000000000003201c55cb987c8561e7bde9f7390c2521763760573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc690614233565b60405180910390fd5b611cd98282612e55565b5050565b7f0000000000000000000000003201c55cb987c8561e7bde9f7390c2521763760581565b611d09611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611d27611351565b73ffffffffffffffffffffffffffffffffffffffff1614611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490613b9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de2906142c1565b60405180910390fd5b611df481612d92565b50565b611dff611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611e1d611351565b73ffffffffffffffffffffffffffffffffffffffff1614611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a90613b9a565b60405180910390fd5b6002811015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90614329565b60405180910390fd5b6103e8611ec2610912565b82611ecd9190613fa1565b611ed7919061400f565b600a819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a600a54604051611f0e91906137bf565b60405180910390a150565b611f21611fdd565b73ffffffffffffffffffffffffffffffffffffffff16611f3f611351565b73ffffffffffffffffffffffffffffffffffffffff1614611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90613b9a565b60405180910390fd5b5f60085f6101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612049906143b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614445565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161219a91906137bf565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c906144d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a90614561565b60405180910390fd5b5f810361229a5761229583835f612ef3565b612d8d565b60085f9054906101000a900460ff161561277d576122b6611351565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561232457506122f4611351565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561235c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612396575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123af5750600560149054906101000a900460ff16155b1561277c57600c5f9054906101000a900460ff166124a257601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124625750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612498906145ef565b60405180910390fd5b5b601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561253f5750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125e657600a54811115612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125809061467d565b60405180910390fd5b600954612595836111ed565b826125a09190613be5565b11156125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d8906146e5565b60405180910390fd5b61277b565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126835750601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126d257600a548111156126cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c490614773565b60405180910390fd5b61277a565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127795760095461272c836111ed565b826127379190613be5565b1115612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f906146e5565b60405180910390fd5b5b5b5b5b5b5f612787306111ed565b90505f60065482101590508080156127ab5750600560159054906101000a900460ff165b80156127c45750600560149054906101000a900460ff16155b80156128175750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561286a5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128bd5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612901576001600560146101000a81548160ff0219169083151502179055506128e683613168565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129b05750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156129b9575f90505b5f8115612d7d57601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a1757505f601254115b15612aaf57612a446064612a366012548861335290919063ffffffff16565b61336790919063ffffffff16565b905060125460145482612a579190613fa1565b612a61919061400f565b60195f828254612a719190613be5565b9250508190555060125460135482612a899190613fa1565b612a93919061400f565b60185f828254612aa39190613be5565b92505081905550612cdf565b601c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b0657505f600f54115b15612b9e57612b336064612b25600f548861335290919063ffffffff16565b61336790919063ffffffff16565b9050600f5460115482612b469190613fa1565b612b50919061400f565b60195f828254612b609190613be5565b92505081905550600f5460105482612b789190613fa1565b612b82919061400f565b60185f828254612b929190613be5565b92505081905550612cde565b5f601554118015612bf65750601c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c495750601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cdd57612c766064612c686015548861335290919063ffffffff16565b61336790919063ffffffff16565b905060155460175482612c899190613fa1565b612c93919061400f565b60195f828254612ca39190613be5565b9250508190555060155460165482612cbb9190613fa1565b612cc5919061400f565b60185f828254612cd59190613be5565b925050819055505b5b5b5f811115612d6e575f6064601e83612cf79190613fa1565b612d01919061400f565b90505f8183612d109190614791565b9050612d3e89600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612ef3565b612d6b89600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612ef3565b50505b8085612d7a9190614791565b94505b612d88878787612ef3565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906144d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc690614561565b60405180910390fd5b612fda83838361337c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561305d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305490614834565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546130eb9190613be5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161314f91906137bf565b60405180910390a3613162848484613381565b50505050565b5f613172306111ed565b90505f8190505f8083036131885750505061334f565b6007548311156131985760075492505b601d5f9054906101000a900460ff1680156131be57506005846131bb9190613fa1565b83115b156131d3576005846131d09190613fa1565b92505b5f8390505f4790506131e482613386565b5f6131f882476135b990919063ffffffff16565b90505f613222866132146019548561335290919063ffffffff16565b61336790919063ffffffff16565b90505f6018819055505f601981905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132779061487f565b5f6040518083038185875af1925050503d805f81146132b1576040519150601f19603f3d011682016040523d82523d5f602084013e6132b6565b606091505b505080955050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133029061487f565b5f6040518083038185875af1925050503d805f811461333c576040519150601f19603f3d011682016040523d82523d5f602084013e613341565b606091505b505080955050505050505050505b50565b5f818361335f9190613fa1565b905092915050565b5f8183613374919061400f565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156133a2576133a1614893565b5b6040519080825280602002602001820160405280156133d05781602001602082028036833780820191505090505b50905030815f815181106133e7576133e66148c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ae9190614901565b816001815181106134c2576134c16148c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613527307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611fe4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613588959493929190614a25565b5f604051808303815f87803b15801561359f575f80fd5b505af11580156135b1573d5f803e3d5ffd5b505050505050565b5f81836135c69190614791565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156136055780820151818401526020810190506135ea565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61362a826135ce565b61363481856135d8565b93506136448185602086016135e8565b61364d81613610565b840191505092915050565b5f6020820190508181035f8301526136708184613620565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136a182613678565b9050919050565b6136b181613697565b82525050565b5f6040820190506136ca5f8301856136a8565b6136d760208301846136a8565b9392505050565b5f80fd5b6136eb81613697565b81146136f5575f80fd5b50565b5f81359050613706816136e2565b92915050565b5f819050919050565b61371e8161370c565b8114613728575f80fd5b50565b5f8135905061373981613715565b92915050565b5f8060408385031215613755576137546136de565b5b5f613762858286016136f8565b92505060206137738582860161372b565b9150509250929050565b5f8115159050919050565b6137918161377d565b82525050565b5f6020820190506137aa5f830184613788565b92915050565b6137b98161370c565b82525050565b5f6020820190506137d25f8301846137b0565b92915050565b5f80604083850312156137ee576137ed6136de565b5b5f6137fb8582860161372b565b925050602061380c8582860161372b565b9150509250929050565b5f805f6060848603121561382d5761382c6136de565b5b5f61383a868287016136f8565b935050602061384b868287016136f8565b925050604061385c8682870161372b565b9150509250925092565b5f60ff82169050919050565b61387b81613866565b82525050565b5f6020820190506138945f830184613872565b92915050565b5f6060820190506138ad5f830186613788565b6138ba60208301856137b0565b6138c760408301846137b0565b949350505050565b5f602082840312156138e4576138e36136de565b5b5f6138f1848285016136f8565b91505092915050565b6139038161377d565b811461390d575f80fd5b50565b5f8135905061391e816138fa565b92915050565b5f806040838503121561393a576139396136de565b5b5f613947858286016136f8565b925050602061395885828601613910565b9150509250929050565b5f60208284031215613977576139766136de565b5b5f61398484828501613910565b91505092915050565b5f6020820190506139a05f8301846136a8565b92915050565b5f602082840312156139bb576139ba6136de565b5b5f6139c88482850161372b565b91505092915050565b5f6060820190506139e45f830186613788565b6139f16020830185613788565b6139fe6040830184613788565b949350505050565b5f805f60608486031215613a1d57613a1c6136de565b5b5f613a2a86828701613910565b9350506020613a3b8682870161372b565b9250506040613a4c8682870161372b565b9150509250925092565b5f60c082019050613a695f8301896137b0565b613a7660208301886137b0565b613a8360408301876137b0565b613a9060608301866137b0565b613a9d60808301856137b0565b613aaa60a08301846137b0565b979650505050505050565b5f8060408385031215613acb57613aca6136de565b5b5f613ad8858286016136f8565b9250506020613ae9858286016136f8565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b3757607f821691505b602082108103613b4a57613b49613af3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613b846020836135d8565b9150613b8f82613b50565b602082019050919050565b5f6020820190508181035f830152613bb181613b78565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bef8261370c565b9150613bfa8361370c565b9250828201905080821115613c1257613c11613bb8565b5b92915050565b7f546f74616c20627579206665652063616e6e6f742062652068696768657220745f8201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b5f613c726028836135d8565b9150613c7d82613c18565b604082019050919050565b5f6020820190508181035f830152613c9f81613c66565b9050919050565b5f606082019050613cb95f8301866137b0565b613cc660208301856137b0565b613cd360408301846137b0565b949350505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613d356028836135d8565b9150613d4082613cdb565b604082019050919050565b5f6020820190508181035f830152613d6281613d29565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f7420626520686967686572205f8201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b5f613dc36029836135d8565b9150613dce82613d69565b604082019050919050565b5f6020820190508181035f830152613df081613db7565b9050919050565b7f546f74616c207472616e73666572206665652063616e6e6f74206265206869675f8201527f686572207468616e203130302500000000000000000000000000000000000000602082015250565b5f613e51602d836135d8565b9150613e5c82613df7565b604082019050919050565b5f6020820190508181035f830152613e7e81613e45565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613edf6025836135d8565b9150613eea82613e85565b604082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d6024836135d8565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b5f613fab8261370c565b9150613fb68361370c565b9250828202613fc48161370c565b91508282048414831517613fdb57613fda613bb8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140198261370c565b91506140248361370c565b92508261403457614033613fe2565b5b828204905092915050565b7f556e617574686f72697a65642043616c6c6572206164647265737300000000005f82015250565b5f614073601b836135d8565b915061407e8261403f565b602082019050919050565b5f6020820190508181035f8301526140a081614067565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6141016034836135d8565b915061410c826140a7565b604082019050919050565b5f6020820190508181035f83015261412e816140f5565b9050919050565b7f6d6178696d756d20616d6f756e742063616e74206265206869676865722074685f8201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b5f61418f602a836135d8565b915061419a82614135565b604082019050919050565b5f6020820190508181035f8301526141bc81614183565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61421d6039836135d8565b9150614228826141c3565b604082019050919050565b5f6020820190508181035f83015261424a81614211565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142ab6026836135d8565b91506142b682614251565b604082019050919050565b5f6020820190508181035f8301526142d88161429f565b9050919050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e32255f82015250565b5f6143136020836135d8565b915061431e826142df565b602082019050919050565b5f6020820190508181035f83015261434081614307565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143a16024836135d8565b91506143ac82614347565b604082019050919050565b5f6020820190508181035f8301526143ce81614395565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442f6022836135d8565b915061443a826143d5565b604082019050919050565b5f6020820190508181035f83015261445c81614423565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6144bd6025836135d8565b91506144c882614463565b604082019050919050565b5f6020820190508181035f8301526144ea816144b1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61454b6023836135d8565b9150614556826144f1565b604082019050919050565b5f6020820190508181035f8301526145788161453f565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f742061637469765f8201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145d96022836135d8565b91506145e48261457f565b604082019050919050565b5f6020820190508181035f830152614606816145cd565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f6146676026836135d8565b91506146728261460d565b604082019050919050565b5f6020820190508181035f8301526146948161465b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146cf6013836135d8565b91506146da8261469b565b602082019050919050565b5f6020820190508181035f8301526146fc816146c3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f61475d6027836135d8565b915061476882614703565b604082019050919050565b5f6020820190508181035f83015261478a81614751565b9050919050565b5f61479b8261370c565b91506147a68361370c565b92508282039050818111156147be576147bd613bb8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61481e6026836135d8565b9150614829826147c4565b604082019050919050565b5f6020820190508181035f83015261484b81614812565b9050919050565b5f81905092915050565b50565b5f61486a5f83614852565b91506148758261485c565b5f82019050919050565b5f6148898261485f565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506148fb816136e2565b92915050565b5f60208284031215614916576149156136de565b5b5f614923848285016148ed565b91505092915050565b5f819050919050565b5f819050919050565b5f61495861495361494e8461492c565b614935565b61370c565b9050919050565b6149688161493e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149a081613697565b82525050565b5f6149b18383614997565b60208301905092915050565b5f602082019050919050565b5f6149d38261496e565b6149dd8185614978565b93506149e883614988565b805f5b83811015614a185781516149ff88826149a6565b9750614a0a836149bd565b9250506001810190506149eb565b5085935050505092915050565b5f60a082019050614a385f8301886137b0565b614a45602083018761495f565b8181036040830152614a5781866149c9565b9050614a6660608301856136a8565b614a7360808301846137b0565b969550505050505056fea26469706673582212200e2e4011bf4ae2700195c28d0b55e07e114288761a13b918b007bdbc84b8af2764736f6c63430008140033
Deployed Bytecode Sourcemap
25469:22049:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11067:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39288:193;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13300:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12187:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34298:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13972:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12029:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38810:246;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;37571:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34990:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14906:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33809:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26044:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37210:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38105:358;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;35453:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12358:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22406:103;;;;;;;;;;;;;:::i;:::-;;46333:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21755:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11286:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15695:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12714:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33249:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41002:453;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;30890:317;;;;;;;;;;;;;:::i;:::-;;36111:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31966:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39965:577;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;12977:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36617:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25590:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22664:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32764:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31362:140;;;;;;;;;;;;;:::i;:::-;;11067:100;11121:13;11154:5;11147:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11067:100;:::o;39288:193::-;39368:24;39394:22;39442:15;;;;;;;;;;;39459:13;;;;;;;;;;;39434:39;;;;39288:193;;:::o;13300:194::-;13408:4;13425:39;13434:12;:10;:12::i;:::-;13448:7;13457:6;13425:8;:39::i;:::-;13482:4;13475:11;;13300:194;;;;:::o;12187:108::-;12248:7;12275:12;;12268:19;;12187:108;:::o;34298:403::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34434:13:::1;34416:15;:31;;;;34474:7;34458:13;:23;;;;34524:13;;34506:15;;:31;;;;:::i;:::-;34492:11;:45;;;;34571:3;34556:11;;:18;;34548:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;34635:58;34649:11;;34662:15;;34679:13;;34635:58;;;;;;;;:::i;:::-;;;;;;;;34298:403:::0;;:::o;13972:529::-;14112:4;14129:36;14139:6;14147:9;14158:6;14129:9;:36::i;:::-;14178:24;14205:11;:19;14217:6;14205:19;;;;;;;;;;;;;;;:33;14225:12;:10;:12::i;:::-;14205:33;;;;;;;;;;;;;;;;14178:60;;14291:6;14271:16;:26;;14249:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;14401:57;14410:6;14418:12;:10;:12::i;:::-;14451:6;14432:16;:25;14401:8;:57::i;:::-;14489:4;14482:11;;;13972:529;;;;;:::o;12029:93::-;12087:5;12112:2;12105:9;;12029:93;:::o;38810:246::-;38887:19;38908:18;38928:14;38977:13;;;;;;;;;;;38960:30;;39014:9;;39001:22;;39043:5;;39034:14;;38810:246;;;:::o;37571:175::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37688:13:::1;;;;;;;;;;;37656:46;;37677:9;37656:46;;;;;;;;;;;;37729:9;37713:13;;:25;;;;;;;;;;;;;;;;;;37571:175:::0;:::o;34990:455::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35131:13:::1;35112:16;:32;;;;35172:7;35155:14;:24;;;;35224:14;;35205:16;;:33;;;;:::i;:::-;35190:12;:48;;;;35287:3;35271:12;;:19;;35249:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;35375:62;35390:12;;35404:16;;35422:14;;35375:62;;;;;;;;:::i;:::-;;;;;;;;34990:455:::0;;:::o;14906:290::-;15019:4;15036:130;15059:12;:10;:12::i;:::-;15086:7;15145:10;15108:11;:25;15120:12;:10;:12::i;:::-;15108:25;;;;;;;;;;;;;;;:34;15134:7;15108:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15036:8;:130::i;:::-;15184:4;15177:11;;14906:290;;;;:::o;33809:202::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33952:4:::1;33922:19;:27;33942:6;33922:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;33990:6;33972:31;;;33998:4;33972:31;;;;;;:::i;:::-;;;;;;;;33809:202:::0;;:::o;26044:34::-;;;;;;;;;;;;;:::o;37210:181::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37329:15:::1;;;;;;;;;;;37295:50;;37318:9;37295:50;;;;;;;;;;;;37374:9;37356:15;;:27;;;;;;;;;;;;;;;;;;37210:181:::0;:::o;38105:358::-;38198:21;38234:25;38274;38346:15;;;;;;;;;;;38327:34;;38392:16;;38372:36;;38439:16;;38419:36;;38105:358;;;:::o;35453:409::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35602:13:::1;35579:20;:36;;;;35647:7;35626:18;:28;;;;35707:18;;35684:20;;:41;;;;:::i;:::-;35665:16;:60;;;;35778:3;35758:16;;:23;;35736:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;35453:409:::0;;:::o;12358:143::-;12448:7;12475:9;:18;12485:7;12475:18;;;;;;;;;;;;;;;;12468:25;;12358:143;;;:::o;22406:103::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22471:30:::1;22498:1;22471:18;:30::i;:::-;22406:103::o:0;46333:79::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46399:5:::1;46392:4;;:12;;;;;;;;;;;;;;;;;;46333:79:::0;:::o;21755:87::-;21801:7;21828:6;;;;;;;;;;;21821:13;;21755:87;:::o;11286:104::-;11342:13;11375:7;11368:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11286:104;:::o;15695:475::-;15813:4;15830:24;15857:11;:25;15869:12;:10;:12::i;:::-;15857:25;;;;;;;;;;;;;;;:34;15883:7;15857:34;;;;;;;;;;;;;;;;15830:61;;15944:15;15924:16;:35;;15902:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;16060:67;16069:12;:10;:12::i;:::-;16083:7;16111:15;16092:16;:34;16060:8;:67::i;:::-;16158:4;16151:11;;;15695:475;;;;:::o;12714:200::-;12825:4;12842:42;12852:12;:10;:12::i;:::-;12866:9;12877:6;12842:9;:42::i;:::-;12902:4;12895:11;;12714:200;;;;:::o;33249:290::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33381:1:::1;33360:17;:22;;33352:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33484:4;33467:13;:11;:13::i;:::-;33447:17;:33;;;;:::i;:::-;33446:42;;;;:::i;:::-;33434:9;:54;;;;33504:27;33521:9;;33504:27;;;;;;:::i;:::-;;;;;;;;33249:290:::0;:::o;41002:453::-;41127:23;41165:25;41205:31;41285:17;:26;41303:7;41285:26;;;;;;;;;;;;;;;;;;;;;;;;;41264:47;;41345:19;:28;41365:7;41345:28;;;;;;;;;;;;;;;;;;;;;;;;;41322:51;;41413:25;:34;41439:7;41413:34;;;;;;;;;;;;;;;;;;;;;;;;;41384:63;;41002:453;;;;;:::o;30890:317::-;30996:7;:5;:7::i;:::-;30982:21;;:10;:21;;;:53;;;;31021:14;;;;;;;;;;;31007:28;;:10;:28;;;30982:53;30974:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;31095:4;31078:14;;:21;;;;;;;;;;;;;;;;;;31128:4;31110:15;;:22;;;;;;;;;;;;;;;;;;31163:15;31148:31;;;;;;;;;;30890:317::o;36111:212::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36257:8:::1;36228:17;:26;36246:7;36228:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;36297:7;36281:34;;;36306:8;36281:34;;;;;;:::i;:::-;;;;;;;;36111:212:::0;;:::o;31966:555::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32136:1:::1;32128:4;:9;;32106:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;32244:4;32236;:12;;32228:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32326:7;32308:15;;:25;;;;;;;;;;;;;;;;;;32388:5;32380:4;32364:13;:11;:13::i;:::-;:20;;;;:::i;:::-;32363:30;;;;:::i;:::-;32344:16;:49;;;;32448:5;32440:4;32424:13;:11;:13::i;:::-;:20;;;;:::i;:::-;32423:30;;;;:::i;:::-;32404:16;:49;;;;32469:44;32493:7;32502:4;32508;32469:44;;;;;;;;:::i;:::-;;;;;;;;31966:555:::0;;;:::o;39965:577::-;40055:20;40090:24;40129:22;40166:21;40202:25;40242:23;40308:11;;40293:26;;40349:15;;40330:34;;40392:13;;40375:30;;40432:12;;40416:28;;40475:16;;40455:36;;40520:14;;40502:32;;39965:577;;;;;;:::o;12977:176::-;13091:7;13118:11;:18;13130:5;13118:18;;;;;;;;;;;;;;;:27;13137:7;13118:27;;;;;;;;;;;;;;;;13111:34;;12977:176;;;;:::o;36617:241::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36721:7:::1;36713:15;;:4;:15;;::::0;36691:122:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36826:24;36838:4;36844:5;36826:11;:24::i;:::-;36617:241:::0;;:::o;25590:32::-;;;:::o;22664:238::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22787:1:::1;22767:22;;:8;:22;;::::0;22745:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22866:28;22885:8;22866:18;:28::i;:::-;22664:238:::0;:::o;32764:267::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32893:1:::1;32876:13;:18;;32868:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;32984:4;32967:13;:11;:13::i;:::-;32951;:29;;;;:::i;:::-;32950:38;;;;:::i;:::-;32942:5;:46;;;;33004:19;33017:5;;33004:19;;;;;;:::i;:::-;;;;;;;;32764:267:::0;:::o;31362:140::-;21986:12;:10;:12::i;:::-;21975:23;;:7;:5;:7::i;:::-;:23;;;21967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31443:5:::1;31427:13;;:21;;;;;;;;;;;;;;;;;;31478:15;31464:30;;;;;;;;;;31362:140::o:0;10073:98::-;10126:7;10153:10;10146:17;;10073:98;:::o;19478:380::-;19631:1;19614:19;;:5;:19;;;19606:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19712:1;19693:21;;:7;:21;;;19685:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19796:6;19766:11;:18;19778:5;19766:18;;;;;;;;;;;;;;;:27;19785:7;19766:27;;;;;;;;;;;;;;;:36;;;;19834:7;19818:32;;19827:5;19818:32;;;19843:6;19818:32;;;;;;:::i;:::-;;;;;;;;19478:380;;;:::o;41463:4258::-;41611:1;41595:18;;:4;:18;;;41587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41688:1;41674:16;;:2;:16;;;41666:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;41757:1;41747:6;:11;41743:93;;41775:28;41791:4;41797:2;41801:1;41775:15;:28::i;:::-;41818:7;;41743:93;41852:13;;;;;;;;;;;41848:1564;;;41912:7;:5;:7::i;:::-;41904:15;;:4;:15;;;;:49;;;;;41946:7;:5;:7::i;:::-;41940:13;;:2;:13;;;;41904:49;:86;;;;;41988:1;41974:16;;:2;:16;;;;41904:86;:128;;;;;42025:6;42011:21;;:2;:21;;;;41904:128;:158;;;;;42054:8;;;;;;;;;;;42053:9;41904:158;41882:1519;;;42102:14;;;;;;;;;;;42097:232;;42175:17;:23;42193:4;42175:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;42202:17;:21;42220:2;42202:21;;;;;;;;;;;;;;;;;;;;;;;;;42175:48;42141:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;42097:232;42403:25;:31;42429:4;42403:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;42439:19;:23;42459:2;42439:23;;;;;;;;;;;;;;;;;;;;;;;;;42438:24;42403:59;42377:1009;;;42549:5;;42539:6;:15;;42505:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;42727:9;;42710:13;42720:2;42710:9;:13::i;:::-;42701:6;:22;;;;:::i;:::-;:35;;42667:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;42377:1009;;;42905:25;:29;42931:2;42905:29;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;42939:19;:25;42959:4;42939:25;;;;;;;;;;;;;;;;;;;;;;;;;42938:26;42905:59;42879:507;;;43051:5;;43041:6;:15;;43007:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;42879:507;;;43178:19;:23;43198:2;43178:23;;;;;;;;;;;;;;;;;;;;;;;;;43173:213;;43286:9;;43269:13;43279:2;43269:9;:13::i;:::-;43260:6;:22;;;;:::i;:::-;:35;;43226:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;43173:213;42879:507;42377:1009;41882:1519;41848:1564;43424:28;43455:24;43473:4;43455:9;:24::i;:::-;43424:55;;43492:12;43531:16;;43507:20;:40;;43492:55;;43578:7;:39;;;;;43602:15;;;;;;;;;;;43578:39;:65;;;;;43635:8;;;;;;;;;;;43634:9;43578:65;:114;;;;;43661:25;:31;43687:4;43661:31;;;;;;;;;;;;;;;;;;;;;;;;;43660:32;43578:114;:155;;;;;43710:17;:23;43728:4;43710:23;;;;;;;;;;;;;;;;;;;;;;;;;43709:24;43578:155;:194;;;;;43751:17;:21;43769:2;43751:21;;;;;;;;;;;;;;;;;;;;;;;;;43750:22;43578:194;43560:332;;;43810:4;43799:8;;:15;;;;;;;;;;;;;;;;;;43831:16;43840:6;43831:8;:16::i;:::-;43875:5;43864:8;;:16;;;;;;;;;;;;;;;;;;43560:332;43904:12;43920:8;;;;;;;;;;;43919:9;43904:24;;44030:17;:23;44048:4;44030:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;44057:17;:21;44075:2;44057:21;;;;;;;;;;;;;;;;;;;;;;;;;44030:48;44026:96;;;44105:5;44095:15;;44026:96;44134:12;44239:7;44235:1433;;;44291:25;:29;44317:2;44291:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;44339:1;44324:12;;:16;44291:49;44287:1011;;;44368:33;44397:3;44368:24;44379:12;;44368:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;44361:40;;44466:12;;44448:14;;44441:4;:21;;;;:::i;:::-;44440:38;;;;:::i;:::-;44420:16;;:58;;;;;;;:::i;:::-;;;;;;;;44547:12;;44527:16;;44520:4;:23;;;;:::i;:::-;44519:40;;;;:::i;:::-;44497:18;;:62;;;;;;;:::i;:::-;;;;;;;;44287:1011;;;44621:25;:31;44647:4;44621:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;44670:1;44656:11;;:15;44621:50;44617:681;;;44699:32;44727:3;44699:23;44710:11;;44699:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;44692:39;;44795:11;;44778:13;;44771:4;:20;;;;:::i;:::-;44770:36;;;;:::i;:::-;44750:16;;:56;;;;;;;:::i;:::-;;;;;;;;44874:11;;44855:15;;44848:4;:22;;;;:::i;:::-;44847:38;;;;:::i;:::-;44825:18;;:60;;;;;;;:::i;:::-;;;;;;;;44617:681;;;44972:1;44953:16;;:20;:56;;;;;44978:25;:31;45004:4;44978:31;;;;;;;;;;;;;;;;;;;;;;;;;44977:32;44953:56;:90;;;;;45014:25;:29;45040:2;45014:29;;;;;;;;;;;;;;;;;;;;;;;;;45013:30;44953:90;44949:349;;;45071:37;45104:3;45071:28;45082:16;;45071:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;45064:44;;45177:16;;45155:18;;45148:4;:25;;;;:::i;:::-;45147:46;;;;:::i;:::-;45127:16;;:66;;;;;;;:::i;:::-;;;;;;;;45266:16;;45242:20;;45235:4;:27;;;;:::i;:::-;45234:48;;;;:::i;:::-;45212:18;;:70;;;;;;;:::i;:::-;;;;;;;;44949:349;44617:681;44287:1011;45327:1;45320:4;:8;45316:310;;;45349:18;45382:3;45377:2;45370:4;:9;;;;:::i;:::-;:15;;;;:::i;:::-;45349:36;;45404:20;45434:10;45427:4;:17;;;;:::i;:::-;45404:40;;45481:48;45497:4;45503:13;;;;;;;;;;;45518:10;45481:15;:48::i;:::-;45548:52;45564:4;45570:15;;;;;;;;;;;45587:12;45548:15;:52::i;:::-;45330:296;;45316:310;45652:4;45642:14;;;;;:::i;:::-;;;44235:1433;45680:33;45696:4;45702:2;45706:6;45680:15;:33::i;:::-;41576:4145;;;;41463:4258;;;;:::o;23062:191::-;23136:16;23155:6;;;;;;;;;;;23136:25;;23181:8;23172:6;;:17;;;;;;;;;;;;;;;;;;23236:8;23205:40;;23226:8;23205:40;;;;;;;;;;;;23125:128;23062:191;:::o;36866:154::-;36966:5;36932:25;:31;36958:4;36932:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37006:5;36989:23;;37000:4;36989:23;;;;;;;;;;;;36866:154;;:::o;16660:770::-;16818:1;16800:20;;:6;:20;;;16792:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16902:1;16881:23;;:9;:23;;;16873:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16957:47;16978:6;16986:9;16997:6;16957:20;:47::i;:::-;17017:21;17041:9;:17;17051:6;17041:17;;;;;;;;;;;;;;;;17017:41;;17108:6;17091:13;:23;;17069:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17252:6;17236:13;:22;17216:9;:17;17226:6;17216:17;;;;;;;;;;;;;;;:42;;;;17304:6;17280:9;:20;17290:9;17280:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17345:9;17328:35;;17337:6;17328:35;;;17356:6;17328:35;;;;;;:::i;:::-;;;;;;;;17376:46;17396:6;17404:9;17415:6;17376:19;:46::i;:::-;16781:649;16660:770;;;:::o;46420:1095::-;46473:23;46499:24;46517:4;46499:9;:24::i;:::-;46473:50;;46534:25;46562:15;46534:43;;46588:12;46636:1;46617:15;:20;46613:59;;46654:7;;;;;46613:59;46706:16;;46688:15;:34;46684:101;;;46757:16;;46739:34;;46684:101;46801:4;;;;;;;;;;;:36;;;;;46836:1;46827:6;:10;;;;:::i;:::-;46809:15;:28;46801:36;46797:97;;;46881:1;46872:6;:10;;;;:::i;:::-;46854:28;;46797:97;46906:26;46935:15;46906:44;;46963:25;46991:21;46963:49;;47025:36;47042:18;47025:16;:36::i;:::-;47074:18;47095:44;47121:17;47095:21;:25;;:44;;;;:::i;:::-;47074:65;;47152:17;47172:79;47223:17;47172:32;47187:16;;47172:10;:14;;:32;;;;:::i;:::-;:36;;:79;;;;:::i;:::-;47152:99;;47285:1;47264:18;:22;;;;47316:1;47297:16;:20;;;;47352:13;;;;;;;;;;;47344:27;;47379:9;47344:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47330:63;;;;;47428:15;;;;;;;;;;;47420:29;;47471:21;47420:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47406:101;;;;;46462:1053;;;;;;;46420:1095;;:::o;3432:98::-;3490:7;3521:1;3517;:5;;;;:::i;:::-;3510:12;;3432:98;;;;:::o;3831:::-;3889:7;3920:1;3916;:5;;;;:::i;:::-;3909:12;;3831:98;;;;:::o;20458:125::-;;;;:::o;21187:124::-;;;;:::o;45729:571::-;45855:21;45893:1;45879:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45855:40;;45924:4;45906;45911:1;45906:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;45950:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45940:4;45945:1;45940:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;45979:56;45996:4;46011:9;46023:11;45979:8;:56::i;:::-;46074:9;:60;;;46149:11;46175:1;46219:4;46246;46266:15;46074:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45784:516;45729:571;:::o;3075:98::-;3133:7;3164:1;3160;:5;;;;:::i;:::-;3153:12;;3075:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:96::-;1518:7;1547:24;1565:5;1547:24;:::i;:::-;1536:35;;1481:96;;;:::o;1583:118::-;1670:24;1688:5;1670:24;:::i;:::-;1665:3;1658:37;1583:118;;:::o;1707:332::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1960:72;2028:2;2017:9;2013:18;2004:6;1960:72;:::i;:::-;1707:332;;;;;:::o;2126:117::-;2235:1;2232;2225:12;2372:122;2445:24;2463:5;2445:24;:::i;:::-;2438:5;2435:35;2425:63;;2484:1;2481;2474:12;2425:63;2372:122;:::o;2500:139::-;2546:5;2584:6;2571:20;2562:29;;2600:33;2627:5;2600:33;:::i;:::-;2500:139;;;;:::o;2645:77::-;2682:7;2711:5;2700:16;;2645:77;;;:::o;2728:122::-;2801:24;2819:5;2801:24;:::i;:::-;2794:5;2791:35;2781:63;;2840:1;2837;2830:12;2781:63;2728:122;:::o;2856:139::-;2902:5;2940:6;2927:20;2918:29;;2956:33;2983:5;2956:33;:::i;:::-;2856:139;;;;:::o;3001:474::-;3069:6;3077;3126:2;3114:9;3105:7;3101:23;3097:32;3094:119;;;3132:79;;:::i;:::-;3094:119;3252:1;3277:53;3322:7;3313:6;3302:9;3298:22;3277:53;:::i;:::-;3267:63;;3223:117;3379:2;3405:53;3450:7;3441:6;3430:9;3426:22;3405:53;:::i;:::-;3395:63;;3350:118;3001:474;;;;;:::o;3481:90::-;3515:7;3558:5;3551:13;3544:21;3533:32;;3481:90;;;:::o;3577:109::-;3658:21;3673:5;3658:21;:::i;:::-;3653:3;3646:34;3577:109;;:::o;3692:210::-;3779:4;3817:2;3806:9;3802:18;3794:26;;3830:65;3892:1;3881:9;3877:17;3868:6;3830:65;:::i;:::-;3692:210;;;;:::o;3908:118::-;3995:24;4013:5;3995:24;:::i;:::-;3990:3;3983:37;3908:118;;:::o;4032:222::-;4125:4;4163:2;4152:9;4148:18;4140:26;;4176:71;4244:1;4233:9;4229:17;4220:6;4176:71;:::i;:::-;4032:222;;;;:::o;4260:474::-;4328:6;4336;4385:2;4373:9;4364:7;4360:23;4356:32;4353:119;;;4391:79;;:::i;:::-;4353:119;4511:1;4536:53;4581:7;4572:6;4561:9;4557:22;4536:53;:::i;:::-;4526:63;;4482:117;4638:2;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4609:118;4260:474;;;;;:::o;4740:619::-;4817:6;4825;4833;4882:2;4870:9;4861:7;4857:23;4853:32;4850:119;;;4888:79;;:::i;:::-;4850:119;5008:1;5033:53;5078:7;5069:6;5058:9;5054:22;5033:53;:::i;:::-;5023:63;;4979:117;5135:2;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5106:118;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;4740:619;;;;;:::o;5365:86::-;5400:7;5440:4;5433:5;5429:16;5418:27;;5365:86;;;:::o;5457:112::-;5540:22;5556:5;5540:22;:::i;:::-;5535:3;5528:35;5457:112;;:::o;5575:214::-;5664:4;5702:2;5691:9;5687:18;5679:26;;5715:67;5779:1;5768:9;5764:17;5755:6;5715:67;:::i;:::-;5575:214;;;;:::o;5795:430::-;5938:4;5976:2;5965:9;5961:18;5953:26;;5989:65;6051:1;6040:9;6036:17;6027:6;5989:65;:::i;:::-;6064:72;6132:2;6121:9;6117:18;6108:6;6064:72;:::i;:::-;6146;6214:2;6203:9;6199:18;6190:6;6146:72;:::i;:::-;5795:430;;;;;;:::o;6231:329::-;6290:6;6339:2;6327:9;6318:7;6314:23;6310:32;6307:119;;;6345:79;;:::i;:::-;6307:119;6465:1;6490:53;6535:7;6526:6;6515:9;6511:22;6490:53;:::i;:::-;6480:63;;6436:117;6231:329;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:468::-;6892:6;6900;6949:2;6937:9;6928:7;6924:23;6920:32;6917:119;;;6955:79;;:::i;:::-;6917:119;7075:1;7100:53;7145:7;7136:6;7125:9;7121:22;7100:53;:::i;:::-;7090:63;;7046:117;7202:2;7228:50;7270:7;7261:6;7250:9;7246:22;7228:50;:::i;:::-;7218:60;;7173:115;6827:468;;;;;:::o;7301:323::-;7357:6;7406:2;7394:9;7385:7;7381:23;7377:32;7374:119;;;7412:79;;:::i;:::-;7374:119;7532:1;7557:50;7599:7;7590:6;7579:9;7575:22;7557:50;:::i;:::-;7547:60;;7503:114;7301:323;;;;:::o;7630:222::-;7723:4;7761:2;7750:9;7746:18;7738:26;;7774:71;7842:1;7831:9;7827:17;7818:6;7774:71;:::i;:::-;7630:222;;;;:::o;7858:329::-;7917:6;7966:2;7954:9;7945:7;7941:23;7937:32;7934:119;;;7972:79;;:::i;:::-;7934:119;8092:1;8117:53;8162:7;8153:6;8142:9;8138:22;8117:53;:::i;:::-;8107:63;;8063:117;7858:329;;;;:::o;8193:406::-;8324:4;8362:2;8351:9;8347:18;8339:26;;8375:65;8437:1;8426:9;8422:17;8413:6;8375:65;:::i;:::-;8450:66;8512:2;8501:9;8497:18;8488:6;8450:66;:::i;:::-;8526;8588:2;8577:9;8573:18;8564:6;8526:66;:::i;:::-;8193:406;;;;;;:::o;8605:613::-;8679:6;8687;8695;8744:2;8732:9;8723:7;8719:23;8715:32;8712:119;;;8750:79;;:::i;:::-;8712:119;8870:1;8895:50;8937:7;8928:6;8917:9;8913:22;8895:50;:::i;:::-;8885:60;;8841:114;8994:2;9020:53;9065:7;9056:6;9045:9;9041:22;9020:53;:::i;:::-;9010:63;;8965:118;9122:2;9148:53;9193:7;9184:6;9173:9;9169:22;9148:53;:::i;:::-;9138:63;;9093:118;8605:613;;;;;:::o;9224:775::-;9457:4;9495:3;9484:9;9480:19;9472:27;;9509:71;9577:1;9566:9;9562:17;9553:6;9509:71;:::i;:::-;9590:72;9658:2;9647:9;9643:18;9634:6;9590:72;:::i;:::-;9672;9740:2;9729:9;9725:18;9716:6;9672:72;:::i;:::-;9754;9822:2;9811:9;9807:18;9798:6;9754:72;:::i;:::-;9836:73;9904:3;9893:9;9889:19;9880:6;9836:73;:::i;:::-;9919;9987:3;9976:9;9972:19;9963:6;9919:73;:::i;:::-;9224:775;;;;;;;;;:::o;10005:474::-;10073:6;10081;10130:2;10118:9;10109:7;10105:23;10101:32;10098:119;;;10136:79;;:::i;:::-;10098:119;10256:1;10281:53;10326:7;10317:6;10306:9;10302:22;10281:53;:::i;:::-;10271:63;;10227:117;10383:2;10409:53;10454:7;10445:6;10434:9;10430:22;10409:53;:::i;:::-;10399:63;;10354:118;10005:474;;;;;:::o;10485:180::-;10533:77;10530:1;10523:88;10630:4;10627:1;10620:15;10654:4;10651:1;10644:15;10671:320;10715:6;10752:1;10746:4;10742:12;10732:22;;10799:1;10793:4;10789:12;10820:18;10810:81;;10876:4;10868:6;10864:17;10854:27;;10810:81;10938:2;10930:6;10927:14;10907:18;10904:38;10901:84;;10957:18;;:::i;:::-;10901:84;10722:269;10671:320;;;:::o;10997:182::-;11137:34;11133:1;11125:6;11121:14;11114:58;10997:182;:::o;11185:366::-;11327:3;11348:67;11412:2;11407:3;11348:67;:::i;:::-;11341:74;;11424:93;11513:3;11424:93;:::i;:::-;11542:2;11537:3;11533:12;11526:19;;11185:366;;;:::o;11557:419::-;11723:4;11761:2;11750:9;11746:18;11738:26;;11810:9;11804:4;11800:20;11796:1;11785:9;11781:17;11774:47;11838:131;11964:4;11838:131;:::i;:::-;11830:139;;11557:419;;;:::o;11982:180::-;12030:77;12027:1;12020:88;12127:4;12124:1;12117:15;12151:4;12148:1;12141:15;12168:191;12208:3;12227:20;12245:1;12227:20;:::i;:::-;12222:25;;12261:20;12279:1;12261:20;:::i;:::-;12256:25;;12304:1;12301;12297:9;12290:16;;12325:3;12322:1;12319:10;12316:36;;;12332:18;;:::i;:::-;12316:36;12168:191;;;;:::o;12365:227::-;12505:34;12501:1;12493:6;12489:14;12482:58;12574:10;12569:2;12561:6;12557:15;12550:35;12365:227;:::o;12598:366::-;12740:3;12761:67;12825:2;12820:3;12761:67;:::i;:::-;12754:74;;12837:93;12926:3;12837:93;:::i;:::-;12955:2;12950:3;12946:12;12939:19;;12598:366;;;:::o;12970:419::-;13136:4;13174:2;13163:9;13159:18;13151:26;;13223:9;13217:4;13213:20;13209:1;13198:9;13194:17;13187:47;13251:131;13377:4;13251:131;:::i;:::-;13243:139;;12970:419;;;:::o;13395:442::-;13544:4;13582:2;13571:9;13567:18;13559:26;;13595:71;13663:1;13652:9;13648:17;13639:6;13595:71;:::i;:::-;13676:72;13744:2;13733:9;13729:18;13720:6;13676:72;:::i;:::-;13758;13826:2;13815:9;13811:18;13802:6;13758:72;:::i;:::-;13395:442;;;;;;:::o;13843:227::-;13983:34;13979:1;13971:6;13967:14;13960:58;14052:10;14047:2;14039:6;14035:15;14028:35;13843:227;:::o;14076:366::-;14218:3;14239:67;14303:2;14298:3;14239:67;:::i;:::-;14232:74;;14315:93;14404:3;14315:93;:::i;:::-;14433:2;14428:3;14424:12;14417:19;;14076:366;;;:::o;14448:419::-;14614:4;14652:2;14641:9;14637:18;14629:26;;14701:9;14695:4;14691:20;14687:1;14676:9;14672:17;14665:47;14729:131;14855:4;14729:131;:::i;:::-;14721:139;;14448:419;;;:::o;14873:228::-;15013:34;15009:1;15001:6;14997:14;14990:58;15082:11;15077:2;15069:6;15065:15;15058:36;14873:228;:::o;15107:366::-;15249:3;15270:67;15334:2;15329:3;15270:67;:::i;:::-;15263:74;;15346:93;15435:3;15346:93;:::i;:::-;15464:2;15459:3;15455:12;15448:19;;15107:366;;;:::o;15479:419::-;15645:4;15683:2;15672:9;15668:18;15660:26;;15732:9;15726:4;15722:20;15718:1;15707:9;15703:17;15696:47;15760:131;15886:4;15760:131;:::i;:::-;15752:139;;15479:419;;;:::o;15904:232::-;16044:34;16040:1;16032:6;16028:14;16021:58;16113:15;16108:2;16100:6;16096:15;16089:40;15904:232;:::o;16142:366::-;16284:3;16305:67;16369:2;16364:3;16305:67;:::i;:::-;16298:74;;16381:93;16470:3;16381:93;:::i;:::-;16499:2;16494:3;16490:12;16483:19;;16142:366;;;:::o;16514:419::-;16680:4;16718:2;16707:9;16703:18;16695:26;;16767:9;16761:4;16757:20;16753:1;16742:9;16738:17;16731:47;16795:131;16921:4;16795:131;:::i;:::-;16787:139;;16514:419;;;:::o;16939:224::-;17079:34;17075:1;17067:6;17063:14;17056:58;17148:7;17143:2;17135:6;17131:15;17124:32;16939:224;:::o;17169:366::-;17311:3;17332:67;17396:2;17391:3;17332:67;:::i;:::-;17325:74;;17408:93;17497:3;17408:93;:::i;:::-;17526:2;17521:3;17517:12;17510:19;;17169:366;;;:::o;17541:419::-;17707:4;17745:2;17734:9;17730:18;17722:26;;17794:9;17788:4;17784:20;17780:1;17769:9;17765:17;17758:47;17822:131;17948:4;17822:131;:::i;:::-;17814:139;;17541:419;;;:::o;17966:223::-;18106:34;18102:1;18094:6;18090:14;18083:58;18175:6;18170:2;18162:6;18158:15;18151:31;17966:223;:::o;18195:366::-;18337:3;18358:67;18422:2;18417:3;18358:67;:::i;:::-;18351:74;;18434:93;18523:3;18434:93;:::i;:::-;18552:2;18547:3;18543:12;18536:19;;18195:366;;;:::o;18567:419::-;18733:4;18771:2;18760:9;18756:18;18748:26;;18820:9;18814:4;18810:20;18806:1;18795:9;18791:17;18784:47;18848:131;18974:4;18848:131;:::i;:::-;18840:139;;18567:419;;;:::o;18992:410::-;19032:7;19055:20;19073:1;19055:20;:::i;:::-;19050:25;;19089:20;19107:1;19089:20;:::i;:::-;19084:25;;19144:1;19141;19137:9;19166:30;19184:11;19166:30;:::i;:::-;19155:41;;19345:1;19336:7;19332:15;19329:1;19326:22;19306:1;19299:9;19279:83;19256:139;;19375:18;;:::i;:::-;19256:139;19040:362;18992:410;;;;:::o;19408:180::-;19456:77;19453:1;19446:88;19553:4;19550:1;19543:15;19577:4;19574:1;19567:15;19594:185;19634:1;19651:20;19669:1;19651:20;:::i;:::-;19646:25;;19685:20;19703:1;19685:20;:::i;:::-;19680:25;;19724:1;19714:35;;19729:18;;:::i;:::-;19714:35;19771:1;19768;19764:9;19759:14;;19594:185;;;;:::o;19785:177::-;19925:29;19921:1;19913:6;19909:14;19902:53;19785:177;:::o;19968:366::-;20110:3;20131:67;20195:2;20190:3;20131:67;:::i;:::-;20124:74;;20207:93;20296:3;20207:93;:::i;:::-;20325:2;20320:3;20316:12;20309:19;;19968:366;;;:::o;20340:419::-;20506:4;20544:2;20533:9;20529:18;20521:26;;20593:9;20587:4;20583:20;20579:1;20568:9;20564:17;20557:47;20621:131;20747:4;20621:131;:::i;:::-;20613:139;;20340:419;;;:::o;20765:239::-;20905:34;20901:1;20893:6;20889:14;20882:58;20974:22;20969:2;20961:6;20957:15;20950:47;20765:239;:::o;21010:366::-;21152:3;21173:67;21237:2;21232:3;21173:67;:::i;:::-;21166:74;;21249:93;21338:3;21249:93;:::i;:::-;21367:2;21362:3;21358:12;21351:19;;21010:366;;;:::o;21382:419::-;21548:4;21586:2;21575:9;21571:18;21563:26;;21635:9;21629:4;21625:20;21621:1;21610:9;21606:17;21599:47;21663:131;21789:4;21663:131;:::i;:::-;21655:139;;21382:419;;;:::o;21807:229::-;21947:34;21943:1;21935:6;21931:14;21924:58;22016:12;22011:2;22003:6;21999:15;21992:37;21807:229;:::o;22042:366::-;22184:3;22205:67;22269:2;22264:3;22205:67;:::i;:::-;22198:74;;22281:93;22370:3;22281:93;:::i;:::-;22399:2;22394:3;22390:12;22383:19;;22042:366;;;:::o;22414:419::-;22580:4;22618:2;22607:9;22603:18;22595:26;;22667:9;22661:4;22657:20;22653:1;22642:9;22638:17;22631:47;22695:131;22821:4;22695:131;:::i;:::-;22687:139;;22414:419;;;:::o;22839:244::-;22979:34;22975:1;22967:6;22963:14;22956:58;23048:27;23043:2;23035:6;23031:15;23024:52;22839:244;:::o;23089:366::-;23231:3;23252:67;23316:2;23311:3;23252:67;:::i;:::-;23245:74;;23328:93;23417:3;23328:93;:::i;:::-;23446:2;23441:3;23437:12;23430:19;;23089:366;;;:::o;23461:419::-;23627:4;23665:2;23654:9;23650:18;23642:26;;23714:9;23708:4;23704:20;23700:1;23689:9;23685:17;23678:47;23742:131;23868:4;23742:131;:::i;:::-;23734:139;;23461:419;;;:::o;23886:225::-;24026:34;24022:1;24014:6;24010:14;24003:58;24095:8;24090:2;24082:6;24078:15;24071:33;23886:225;:::o;24117:366::-;24259:3;24280:67;24344:2;24339:3;24280:67;:::i;:::-;24273:74;;24356:93;24445:3;24356:93;:::i;:::-;24474:2;24469:3;24465:12;24458:19;;24117:366;;;:::o;24489:419::-;24655:4;24693:2;24682:9;24678:18;24670:26;;24742:9;24736:4;24732:20;24728:1;24717:9;24713:17;24706:47;24770:131;24896:4;24770:131;:::i;:::-;24762:139;;24489:419;;;:::o;24914:182::-;25054:34;25050:1;25042:6;25038:14;25031:58;24914:182;:::o;25102:366::-;25244:3;25265:67;25329:2;25324:3;25265:67;:::i;:::-;25258:74;;25341:93;25430:3;25341:93;:::i;:::-;25459:2;25454:3;25450:12;25443:19;;25102:366;;;:::o;25474:419::-;25640:4;25678:2;25667:9;25663:18;25655:26;;25727:9;25721:4;25717:20;25713:1;25702:9;25698:17;25691:47;25755:131;25881:4;25755:131;:::i;:::-;25747:139;;25474:419;;;:::o;25899:223::-;26039:34;26035:1;26027:6;26023:14;26016:58;26108:6;26103:2;26095:6;26091:15;26084:31;25899:223;:::o;26128:366::-;26270:3;26291:67;26355:2;26350:3;26291:67;:::i;:::-;26284:74;;26367:93;26456:3;26367:93;:::i;:::-;26485:2;26480:3;26476:12;26469:19;;26128:366;;;:::o;26500:419::-;26666:4;26704:2;26693:9;26689:18;26681:26;;26753:9;26747:4;26743:20;26739:1;26728:9;26724:17;26717:47;26781:131;26907:4;26781:131;:::i;:::-;26773:139;;26500:419;;;:::o;26925:221::-;27065:34;27061:1;27053:6;27049:14;27042:58;27134:4;27129:2;27121:6;27117:15;27110:29;26925:221;:::o;27152:366::-;27294:3;27315:67;27379:2;27374:3;27315:67;:::i;:::-;27308:74;;27391:93;27480:3;27391:93;:::i;:::-;27509:2;27504:3;27500:12;27493:19;;27152:366;;;:::o;27524:419::-;27690:4;27728:2;27717:9;27713:18;27705:26;;27777:9;27771:4;27767:20;27763:1;27752:9;27748:17;27741:47;27805:131;27931:4;27805:131;:::i;:::-;27797:139;;27524:419;;;:::o;27949:224::-;28089:34;28085:1;28077:6;28073:14;28066:58;28158:7;28153:2;28145:6;28141:15;28134:32;27949:224;:::o;28179:366::-;28321:3;28342:67;28406:2;28401:3;28342:67;:::i;:::-;28335:74;;28418:93;28507:3;28418:93;:::i;:::-;28536:2;28531:3;28527:12;28520:19;;28179:366;;;:::o;28551:419::-;28717:4;28755:2;28744:9;28740:18;28732:26;;28804:9;28798:4;28794:20;28790:1;28779:9;28775:17;28768:47;28832:131;28958:4;28832:131;:::i;:::-;28824:139;;28551:419;;;:::o;28976:222::-;29116:34;29112:1;29104:6;29100:14;29093:58;29185:5;29180:2;29172:6;29168:15;29161:30;28976:222;:::o;29204:366::-;29346:3;29367:67;29431:2;29426:3;29367:67;:::i;:::-;29360:74;;29443:93;29532:3;29443:93;:::i;:::-;29561:2;29556:3;29552:12;29545:19;;29204:366;;;:::o;29576:419::-;29742:4;29780:2;29769:9;29765:18;29757:26;;29829:9;29823:4;29819:20;29815:1;29804:9;29800:17;29793:47;29857:131;29983:4;29857:131;:::i;:::-;29849:139;;29576:419;;;:::o;30001:221::-;30141:34;30137:1;30129:6;30125:14;30118:58;30210:4;30205:2;30197:6;30193:15;30186:29;30001:221;:::o;30228:366::-;30370:3;30391:67;30455:2;30450:3;30391:67;:::i;:::-;30384:74;;30467:93;30556:3;30467:93;:::i;:::-;30585:2;30580:3;30576:12;30569:19;;30228:366;;;:::o;30600:419::-;30766:4;30804:2;30793:9;30789:18;30781:26;;30853:9;30847:4;30843:20;30839:1;30828:9;30824:17;30817:47;30881:131;31007:4;30881:131;:::i;:::-;30873:139;;30600:419;;;:::o;31025:225::-;31165:34;31161:1;31153:6;31149:14;31142:58;31234:8;31229:2;31221:6;31217:15;31210:33;31025:225;:::o;31256:366::-;31398:3;31419:67;31483:2;31478:3;31419:67;:::i;:::-;31412:74;;31495:93;31584:3;31495:93;:::i;:::-;31613:2;31608:3;31604:12;31597:19;;31256:366;;;:::o;31628:419::-;31794:4;31832:2;31821:9;31817:18;31809:26;;31881:9;31875:4;31871:20;31867:1;31856:9;31852:17;31845:47;31909:131;32035:4;31909:131;:::i;:::-;31901:139;;31628:419;;;:::o;32053:169::-;32193:21;32189:1;32181:6;32177:14;32170:45;32053:169;:::o;32228:366::-;32370:3;32391:67;32455:2;32450:3;32391:67;:::i;:::-;32384:74;;32467:93;32556:3;32467:93;:::i;:::-;32585:2;32580:3;32576:12;32569:19;;32228:366;;;:::o;32600:419::-;32766:4;32804:2;32793:9;32789:18;32781:26;;32853:9;32847:4;32843:20;32839:1;32828:9;32824:17;32817:47;32881:131;33007:4;32881:131;:::i;:::-;32873:139;;32600:419;;;:::o;33025:226::-;33165:34;33161:1;33153:6;33149:14;33142:58;33234:9;33229:2;33221:6;33217:15;33210:34;33025:226;:::o;33257:366::-;33399:3;33420:67;33484:2;33479:3;33420:67;:::i;:::-;33413:74;;33496:93;33585:3;33496:93;:::i;:::-;33614:2;33609:3;33605:12;33598:19;;33257:366;;;:::o;33629:419::-;33795:4;33833:2;33822:9;33818:18;33810:26;;33882:9;33876:4;33872:20;33868:1;33857:9;33853:17;33846:47;33910:131;34036:4;33910:131;:::i;:::-;33902:139;;33629:419;;;:::o;34054:194::-;34094:4;34114:20;34132:1;34114:20;:::i;:::-;34109:25;;34148:20;34166:1;34148:20;:::i;:::-;34143:25;;34192:1;34189;34185:9;34177:17;;34216:1;34210:4;34207:11;34204:37;;;34221:18;;:::i;:::-;34204:37;34054:194;;;;:::o;34254:225::-;34394:34;34390:1;34382:6;34378:14;34371:58;34463:8;34458:2;34450:6;34446:15;34439:33;34254:225;:::o;34485:366::-;34627:3;34648:67;34712:2;34707:3;34648:67;:::i;:::-;34641:74;;34724:93;34813:3;34724:93;:::i;:::-;34842:2;34837:3;34833:12;34826:19;;34485:366;;;:::o;34857:419::-;35023:4;35061:2;35050:9;35046:18;35038:26;;35110:9;35104:4;35100:20;35096:1;35085:9;35081:17;35074:47;35138:131;35264:4;35138:131;:::i;:::-;35130:139;;34857:419;;;:::o;35282:147::-;35383:11;35420:3;35405:18;;35282:147;;;;:::o;35435:114::-;;:::o;35555:398::-;35714:3;35735:83;35816:1;35811:3;35735:83;:::i;:::-;35728:90;;35827:93;35916:3;35827:93;:::i;:::-;35945:1;35940:3;35936:11;35929:18;;35555:398;;;:::o;35959:379::-;36143:3;36165:147;36308:3;36165:147;:::i;:::-;36158:154;;36329:3;36322:10;;35959:379;;;:::o;36344:180::-;36392:77;36389:1;36382:88;36489:4;36486:1;36479:15;36513:4;36510:1;36503:15;36530:180;36578:77;36575:1;36568:88;36675:4;36672:1;36665:15;36699:4;36696:1;36689:15;36716:143;36773:5;36804:6;36798:13;36789:22;;36820:33;36847:5;36820:33;:::i;:::-;36716:143;;;;:::o;36865:351::-;36935:6;36984:2;36972:9;36963:7;36959:23;36955:32;36952:119;;;36990:79;;:::i;:::-;36952:119;37110:1;37135:64;37191:7;37182:6;37171:9;37167:22;37135:64;:::i;:::-;37125:74;;37081:128;36865:351;;;;:::o;37222:85::-;37267:7;37296:5;37285:16;;37222:85;;;:::o;37313:60::-;37341:3;37362:5;37355:12;;37313:60;;;:::o;37379:158::-;37437:9;37470:61;37488:42;37497:32;37523:5;37497:32;:::i;:::-;37488:42;:::i;:::-;37470:61;:::i;:::-;37457:74;;37379:158;;;:::o;37543:147::-;37638:45;37677:5;37638:45;:::i;:::-;37633:3;37626:58;37543:147;;:::o;37696:114::-;37763:6;37797:5;37791:12;37781:22;;37696:114;;;:::o;37816:184::-;37915:11;37949:6;37944:3;37937:19;37989:4;37984:3;37980:14;37965:29;;37816:184;;;;:::o;38006:132::-;38073:4;38096:3;38088:11;;38126:4;38121:3;38117:14;38109:22;;38006:132;;;:::o;38144:108::-;38221:24;38239:5;38221:24;:::i;:::-;38216:3;38209:37;38144:108;;:::o;38258:179::-;38327:10;38348:46;38390:3;38382:6;38348:46;:::i;:::-;38426:4;38421:3;38417:14;38403:28;;38258:179;;;;:::o;38443:113::-;38513:4;38545;38540:3;38536:14;38528:22;;38443:113;;;:::o;38592:732::-;38711:3;38740:54;38788:5;38740:54;:::i;:::-;38810:86;38889:6;38884:3;38810:86;:::i;:::-;38803:93;;38920:56;38970:5;38920:56;:::i;:::-;38999:7;39030:1;39015:284;39040:6;39037:1;39034:13;39015:284;;;39116:6;39110:13;39143:63;39202:3;39187:13;39143:63;:::i;:::-;39136:70;;39229:60;39282:6;39229:60;:::i;:::-;39219:70;;39075:224;39062:1;39059;39055:9;39050:14;;39015:284;;;39019:14;39315:3;39308:10;;38716:608;;;38592:732;;;;:::o;39330:831::-;39593:4;39631:3;39620:9;39616:19;39608:27;;39645:71;39713:1;39702:9;39698:17;39689:6;39645:71;:::i;:::-;39726:80;39802:2;39791:9;39787:18;39778:6;39726:80;:::i;:::-;39853:9;39847:4;39843:20;39838:2;39827:9;39823:18;39816:48;39881:108;39984:4;39975:6;39881:108;:::i;:::-;39873:116;;39999:72;40067:2;40056:9;40052:18;40043:6;39999:72;:::i;:::-;40081:73;40149:3;40138:9;40134:19;40125:6;40081:73;:::i;:::-;39330:831;;;;;;;;:::o
Swarm Source
ipfs://0e2e4011bf4ae2700195c28d0b55e07e114288761a13b918b007bdbc84b8af27
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.