Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 384 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21416412 | 6 days ago | IN | 0 ETH | 0.00161739 | ||||
Approve | 21376518 | 12 days ago | IN | 0 ETH | 0.00072488 | ||||
Approve | 21374380 | 12 days ago | IN | 0 ETH | 0.00122177 | ||||
Transfer | 21338520 | 17 days ago | IN | 0 ETH | 0.00157114 | ||||
Approve | 21338265 | 17 days ago | IN | 0 ETH | 0.0015141 | ||||
Approve | 21211721 | 35 days ago | IN | 0 ETH | 0.00049486 | ||||
Approve | 21208698 | 35 days ago | IN | 0 ETH | 0.00077897 | ||||
Approve | 21208348 | 36 days ago | IN | 0 ETH | 0.00054585 | ||||
Approve | 21173816 | 40 days ago | IN | 0 ETH | 0.00208123 | ||||
Approve | 21082596 | 53 days ago | IN | 0 ETH | 0.00039689 | ||||
Approve | 21063543 | 56 days ago | IN | 0 ETH | 0.00045795 | ||||
Transfer | 21063523 | 56 days ago | IN | 0 ETH | 0.00059067 | ||||
Approve | 21057070 | 57 days ago | IN | 0 ETH | 0.00034588 | ||||
Transfer | 21049632 | 58 days ago | IN | 0 ETH | 0.00057665 | ||||
Approve | 21040397 | 59 days ago | IN | 0 ETH | 0.0002899 | ||||
Approve | 21000221 | 65 days ago | IN | 0 ETH | 0.00117068 | ||||
Transfer | 20947753 | 72 days ago | IN | 0 ETH | 0.00067019 | ||||
Approve | 20910442 | 77 days ago | IN | 0 ETH | 0.00065351 | ||||
Approve | 20872647 | 82 days ago | IN | 0 ETH | 0.00096299 | ||||
Approve | 20864561 | 84 days ago | IN | 0 ETH | 0.00135848 | ||||
Approve | 20864561 | 84 days ago | IN | 0 ETH | 0.00135848 | ||||
Approve | 20855898 | 85 days ago | IN | 0 ETH | 0.0002416 | ||||
Approve | 20841197 | 87 days ago | IN | 0 ETH | 0.0018298 | ||||
Approve | 20841166 | 87 days ago | IN | 0 ETH | 0.00148728 | ||||
Approve | 20840144 | 87 days ago | IN | 0 ETH | 0.00033109 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
19868595 | 223 days ago | 0.2947894 ETH | ||||
19868595 | 223 days ago | 0.2947894 ETH | ||||
19868590 | 223 days ago | 0.12942659 ETH | ||||
19868590 | 223 days ago | 0.12942659 ETH | ||||
19868586 | 223 days ago | 0.16577257 ETH | ||||
19868586 | 223 days ago | 0.16577257 ETH | ||||
19868563 | 223 days ago | 0.10428309 ETH | ||||
19868563 | 223 days ago | 0.10428309 ETH | ||||
19868552 | 223 days ago | 0.10142465 ETH | ||||
19868552 | 223 days ago | 0.10142465 ETH | ||||
19868546 | 223 days ago | 0.11250974 ETH | ||||
19868546 | 223 days ago | 0.11250974 ETH | ||||
19868545 | 223 days ago | 0.1280242 ETH | ||||
19868545 | 223 days ago | 0.1280242 ETH | ||||
19868544 | 223 days ago | 0.16816818 ETH | ||||
19868544 | 223 days ago | 0.16816818 ETH | ||||
19868543 | 223 days ago | 0.20413429 ETH | ||||
19868543 | 223 days ago | 0.20413429 ETH | ||||
19868540 | 223 days ago | 0.26775624 ETH | ||||
19868540 | 223 days ago | 0.26775624 ETH | ||||
19868529 | 223 days ago | 0.2362287 ETH | ||||
19868529 | 223 days ago | 0.2362287 ETH | ||||
19868528 | 223 days ago | 0.29597823 ETH | ||||
19868528 | 223 days ago | 0.29597823 ETH | ||||
19868517 | 223 days ago | 0.25258447 ETH |
Loading...
Loading
Contract Name:
KOSSCorp
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-14 */ /* * SPDX-License-Identifier: MIT * Website: https://www.kossoneth.com/ * Telegram:https://t.me/kossentry * Twitter: https://x.com/kosscoineth */ pragma solidity 0.8.19; 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 KOSSCorp is Context, ERC20, Ownable { using SafeMath for uint256; mapping(address => bool) private _isExcludedFromFee; address payable private _taxWallet; uint256 firstBlock; uint64 private lastLiquifyTime; uint256 private buyFee = 22; uint256 private sellFee = 22; uint256 private _preventSwapBefore = 1; uint256 private _buyCount = 0; uint256 private _txAmountLimit; uint256 private _walletAmountLimit; uint256 private _swapbackMin; uint256 private _swapbackMax; IDexRouter private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; mapping(address => bool) private _canTx; event MaxTxAmountUpdated(uint _txAmountLimit); event MaxWalletAmountUpdated(uint _walletAmountLimit); event FeesUpdated(uint buyFee, uint sellFee); event SwapbackUpdated(uint _swapbackMin, uint _swapbackMax); event FeeReceiverUpdated(address _taxWallet); event ExcludedFromFee(address account, bool status); event LimitsRemoved(); event TradingOpened(); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() ERC20(unicode"KOSS Corp", unicode"KOSS") { uint256 _totalSupply = 100_000_000 * 10 ** 18; _txAmountLimit = (_totalSupply * 20) / 1000; _walletAmountLimit = (_totalSupply * 20) / 1000; _swapbackMin = (_totalSupply * 5) / 10000; _swapbackMax = (_totalSupply * 190) / 10000; _canTx [address(this)] = true; _taxWallet = payable(0x13fA0405cF8Bd56B96465c460C9F49998cB3a023); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; _mint(_msgSender(), _totalSupply); } receive() external payable {} function open() external onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), totalSupply()); uniswapV2Pair = IDexFactory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; firstBlock = block.number; lastLiquifyTime = uint64(block.number); _isExcludedFromFee[address(this)] = true; buyFee = 15; sellFee = 40; emit TradingOpened(); } function setMkt(address payable marketingWallet) external onlyOwner { _taxWallet = marketingWallet; emit FeeReceiverUpdated(marketingWallet); } function setTx(uint256 newValue) external onlyOwner { require(newValue >= 1, "Max tx cant be lower than 0.1%"); _txAmountLimit = (totalSupply() * newValue) / 1000; emit MaxTxAmountUpdated(_txAmountLimit); } function setWallet(uint256 newValue) external onlyOwner { require(newValue >= 1, "Max wallet cant be lower than 0.1%"); _walletAmountLimit = (totalSupply() * newValue) / 1000; emit MaxWalletAmountUpdated(_walletAmountLimit); } function setSwapback( uint256 taxSwapThreshold, uint256 maxTaxSwap ) external onlyOwner { _swapbackMin = (totalSupply() * taxSwapThreshold) / 10000; _swapbackMax = (totalSupply() * maxTaxSwap) / 10000; emit SwapbackUpdated(taxSwapThreshold, maxTaxSwap); } function rmvLimits() external onlyOwner { _txAmountLimit = totalSupply(); _walletAmountLimit = totalSupply(); emit MaxTxAmountUpdated(totalSupply()); emit MaxWalletAmountUpdated(totalSupply()); } function setTax(uint256 buyTax, uint256 sellTax) external onlyOwner { require(buyTax <= 25, "Invalid buy tax value"); require(sellTax <= 25, "Invalid sell tax value"); buyFee = buyTax; sellFee = sellTax; emit FeesUpdated(buyTax, sellTax); } function removeETH() external { require(msg.sender == _taxWallet, "Only fee receiver can trigger"); _taxWallet.transfer(address(this).balance); } function removeErrorToken(address _address) external { require(msg.sender == _taxWallet, "Only fee receiver can trigger"); IERC20(_address).transfer(_taxWallet,IERC20(_address).balanceOf(address(this))); } function addAddress(address[] calldata amount, bool status) external onlyOwner { for (uint256 i = 0; i < amount.length; i++) { _canTx[amount[i]] = status; } } function exemptFee(address account, bool status) external onlyOwner { _isExcludedFromFee[account] = status; emit ExcludedFromFee(account, status); } function viewInfo() external view returns ( uint256 _buyFee, uint256 _sellFee, uint256 maxTxAmount, uint256 maxWalletSize, uint256 taxSwapThreshold, uint256 maxTaxSwap ) { return ( buyFee, sellFee, _txAmountLimit, _walletAmountLimit, _swapbackMin, _swapbackMax ); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; if (from != owner() && to != owner() && !inSwap) { taxAmount = amount.mul(buyFee).div(100); if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) { require(amount <= _txAmountLimit, "Exceeds the _txAmountLimit."); require( balanceOf(to) + amount <= _walletAmountLimit, "Exceeds the maxWalletSize." ); if (firstBlock + 3 > block.number) { // require(!isContract(to)); } _buyCount++; } if (to != uniswapV2Pair && !_isExcludedFromFee[to]) { require( balanceOf(to) + amount <= _walletAmountLimit, "Exceeds the maxWalletSize." ); } if (to == uniswapV2Pair && from != address(this)) { taxAmount = amount.mul(sellFee).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _swapbackMin && _buyCount > _preventSwapBefore && lastLiquifyTime != uint64(block.number) ) { swapTokensForEth(min(contractTokenBalance,_swapbackMax)); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(); } } } if (taxAmount > 0) { super._transfer(from, address(this), taxAmount); } super._transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function triggerSwap() external { require( msg.sender == _taxWallet || msg.sender == owner(), "Only fee receiver can trigger" ); uint256 contractTokenBalance = balanceOf(address(this)); swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(); } } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { lastLiquifyTime = uint64(block.number); address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee() private { bool success; (success, ) = address(_taxWallet).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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_taxWallet","type":"address"}],"name":"FeeReceiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_txAmountLimit","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_walletAmountLimit","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":false,"internalType":"uint256","name":"_swapbackMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_swapbackMax","type":"uint256"}],"name":"SwapbackUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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"},{"inputs":[{"internalType":"address[]","name":"amount","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"exemptFee","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeErrorToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rmvLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"}],"name":"setMkt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxSwapThreshold","type":"uint256"},{"internalType":"uint256","name":"maxTaxSwap","type":"uint256"}],"name":"setSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setWallet","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":[{"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":"triggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewInfo","outputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"uint256","name":"taxSwapThreshold","type":"uint256"},{"internalType":"uint256","name":"maxTaxSwap","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526016600a556016600b556001600c556000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200005b57600080fd5b506040518060400160405280600981526020017f4b4f535320436f727000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b4f5353000000000000000000000000000000000000000000000000000000008152508160039081620000d99190620008b0565b508060049081620000eb9190620008b0565b5050506200010e62000102620003bc60201b60201c565b620003c460201b60201c565b60006a52b7d2dcc80cd2e400000090506103e8601482620001309190620009c6565b6200013c919062000a40565b600e819055506103e8601482620001549190620009c6565b62000160919062000a40565b600f81905550612710600582620001789190620009c6565b62000184919062000a40565b60108190555061271060be826200019c9190620009c6565b620001a8919062000a40565b6011819055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507313fa0405cf8bd56b96465c460c9f49998cb3a023600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620002716200048a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003b5620003a8620003bc60201b60201c565b82620004b460201b60201c565b5062000b64565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000526576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051d9062000ad9565b60405180910390fd5b6200053a600083836200062c60201b60201c565b80600260008282546200054e919062000afb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005a5919062000afb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200060c919062000b47565b60405180910390a362000628600083836200063160201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006b857607f821691505b602082108103620006ce57620006cd62000670565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006f9565b620007448683620006f9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007916200078b62000785846200075c565b62000766565b6200075c565b9050919050565b6000819050919050565b620007ad8362000770565b620007c5620007bc8262000798565b84845462000706565b825550505050565b600090565b620007dc620007cd565b620007e9818484620007a2565b505050565b5b81811015620008115762000805600082620007d2565b600181019050620007ef565b5050565b601f82111562000860576200082a81620006d4565b6200083584620006e9565b8101602085101562000845578190505b6200085d6200085485620006e9565b830182620007ee565b50505b505050565b600082821c905092915050565b6000620008856000198460080262000865565b1980831691505092915050565b6000620008a0838362000872565b9150826002028217905092915050565b620008bb8262000636565b67ffffffffffffffff811115620008d757620008d662000641565b5b620008e382546200069f565b620008f082828562000815565b600060209050601f83116001811462000928576000841562000913578287015190505b6200091f858262000892565b8655506200098f565b601f1984166200093886620006d4565b60005b8281101562000962578489015182556001820191506020850194506020810190506200093b565b868310156200098257848901516200097e601f89168262000872565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009d3826200075c565b9150620009e0836200075c565b9250828202620009f0816200075c565b9150828204841483151762000a0a5762000a0962000997565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a4d826200075c565b915062000a5a836200075c565b92508262000a6d5762000a6c62000a11565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac1601f8362000a78565b915062000ace8262000a89565b602082019050919050565b6000602082019050818103600083015262000af48162000ab2565b9050919050565b600062000b08826200075c565b915062000b15836200075c565b925082820190508082111562000b305762000b2f62000997565b5b92915050565b62000b41816200075c565b82525050565b600060208201905062000b5e600083018462000b36565b92915050565b6143fe8062000b746000396000f3fe6080604052600436106101a05760003560e01c80636ed6a48d116100ec578063a9059cbb1161008a578063c8e0a45d11610064578063c8e0a45d1461059c578063dd62ed3e146105c5578063f2fde38b14610602578063fcfff16f1461062b576101a7565b8063a9059cbb14610506578063ae60148014610543578063b5973bd414610573576101a7565b80638da5cb5b116100c65780638da5cb5b1461045c5780638f937cc41461048757806395d89b411461049e578063a457c2d7146104c9576101a7565b80636ed6a48d146103f157806370a0823114610408578063715018a614610445576101a7565b8063217b6da611610159578063313ce56711610133578063313ce567146103375780633950935114610362578063620cc86c1461039f578063667f6526146103c8576101a7565b8063217b6da6146102ba57806323b872dd146102d15780632dc4f5e61461030e576101a7565b80630313fc4b146101ac57806306fdde03146101d5578063095ea7b31461020057806314d0c4341461023d57806318160ddd146102665780631c537de514610291576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101d360048036038101906101ce9190612ee0565b610642565b005b3480156101e157600080fd5b506101ea610747565b6040516101f79190612fb0565b60405180910390f35b34801561020c57600080fd5b5061022760048036038101906102229190613030565b6107d9565b604051610234919061308b565b60405180910390f35b34801561024957600080fd5b50610264600480360381019061025f91906130a6565b6107f7565b005b34801561027257600080fd5b5061027b610919565b60405161028891906130e2565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b3919061318e565b610923565b005b3480156102c657600080fd5b506102cf610a44565b005b3480156102dd57600080fd5b506102f860048036038101906102f391906131ee565b610b3f565b604051610305919061308b565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190613241565b610c37565b005b34801561034357600080fd5b5061034c610d47565b604051610359919061329d565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190613030565b610d50565b604051610396919061308b565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c191906130a6565b610dfc565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190612ee0565b610f1e565b005b3480156103fd57600080fd5b5061040661106d565b005b34801561041457600080fd5b5061042f600480360381019061042a91906132b8565b611183565b60405161043c91906130e2565b60405180910390f35b34801561045157600080fd5b5061045a6111cb565b005b34801561046857600080fd5b50610471611253565b60405161047e91906132f4565b60405180910390f35b34801561049357600080fd5b5061049c61127d565b005b3480156104aa57600080fd5b506104b361137b565b6040516104c09190612fb0565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190613030565b61140d565b6040516104fd919061308b565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613030565b6114f8565b60405161053a919061308b565b60405180910390f35b34801561054f57600080fd5b50610558611516565b60405161056a9695949392919061330f565b60405180910390f35b34801561057f57600080fd5b5061059a600480360381019061059591906133ae565b611545565b005b3480156105a857600080fd5b506105c360048036038101906105be91906132b8565b61163c565b005b3480156105d157600080fd5b506105ec60048036038101906105e791906133db565b6117e9565b6040516105f991906130e2565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906132b8565b611870565b005b34801561063757600080fd5b50610640611967565b005b61064a611f35565b73ffffffffffffffffffffffffffffffffffffffff16610668611253565b73ffffffffffffffffffffffffffffffffffffffff16146106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b590613467565b60405180910390fd5b612710826106ca610919565b6106d491906134b6565b6106de9190613527565b601081905550612710816106f0610919565b6106fa91906134b6565b6107049190613527565b6011819055507f2b3f4c022d9943b151090e389857495bb9d8493714259cc19a540f5a11475fb1828260405161073b929190613558565b60405180910390a15050565b606060038054610756906135b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610782906135b0565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b60006107ed6107e6611f35565b8484611f3d565b6001905092915050565b6107ff611f35565b73ffffffffffffffffffffffffffffffffffffffff1661081d611253565b73ffffffffffffffffffffffffffffffffffffffff1614610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90613467565b60405180910390fd5b60018110156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90613653565b60405180910390fd5b6103e8816108c3610919565b6108cd91906134b6565b6108d79190613527565b600f819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001600f5460405161090e91906130e2565b60405180910390a150565b6000600254905090565b61092b611f35565b73ffffffffffffffffffffffffffffffffffffffff16610949611253565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690613467565b60405180910390fd5b60005b83839050811015610a3e5781601460008686858181106109c5576109c4613673565b5b90506020020160208101906109da91906132b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a36906136a2565b9150506109a2565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90613736565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b3c573d6000803e3d6000fd5b50565b6000610b4c848484612106565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b97611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e906137c8565b60405180910390fd5b610c2b85610c23611f35565b858403611f3d565b60019150509392505050565b610c3f611f35565b73ffffffffffffffffffffffffffffffffffffffff16610c5d611253565b73ffffffffffffffffffffffffffffffffffffffff1614610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa90613467565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa98282604051610d3b9291906137e8565b60405180910390a15050565b60006012905090565b6000610df2610d5d611f35565b848460016000610d6b611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ded9190613811565b611f3d565b6001905092915050565b610e04611f35565b73ffffffffffffffffffffffffffffffffffffffff16610e22611253565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613467565b60405180910390fd5b6001811015610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613891565b60405180910390fd5b6103e881610ec8610919565b610ed291906134b6565b610edc9190613527565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600e54604051610f1391906130e2565b60405180910390a150565b610f26611f35565b73ffffffffffffffffffffffffffffffffffffffff16610f44611253565b73ffffffffffffffffffffffffffffffffffffffff1614610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613467565b60405180910390fd5b6019821115610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906138fd565b60405180910390fd5b6019811115611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990613969565b60405180910390fd5b81600a8190555080600b819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051611061929190613558565b60405180910390a15050565b611075611f35565b73ffffffffffffffffffffffffffffffffffffffff16611093611253565b73ffffffffffffffffffffffffffffffffffffffff16146110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090613467565b60405180910390fd5b6110f1610919565b600e819055506110ff610919565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61112e610919565b60405161113b91906130e2565b60405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e00161116c610919565b60405161117991906130e2565b60405180910390a1565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d3611f35565b73ffffffffffffffffffffffffffffffffffffffff166111f1611253565b73ffffffffffffffffffffffffffffffffffffffff1614611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e90613467565b60405180910390fd5b61125160006127c1565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061130b57506112dc611253565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134190613736565b60405180910390fd5b600061135530611183565b905061136081612887565b6000479050600081111561137757611376612b29565b5b5050565b60606004805461138a906135b0565b80601f01602080910402602001604051908101604052809291908181526020018280546113b6906135b0565b80156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905090565b6000806001600061141c611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906139fb565b60405180910390fd5b6114ed6114e4611f35565b85858403611f3d565b600191505092915050565b600061150c611505611f35565b8484612106565b6001905092915050565b600080600080600080600a54600b54600e54600f54601054601154955095509550955095509550909192939495565b61154d611f35565b73ffffffffffffffffffffffffffffffffffffffff1661156b611253565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613467565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee816040516116319190613a7a565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390613736565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161174491906132f4565b602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613aaa565b6040518363ffffffff1660e01b81526004016117a2929190613ad7565b6020604051808303816000875af11580156117c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e59190613b15565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611878611f35565b73ffffffffffffffffffffffffffffffffffffffff16611896611253565b73ffffffffffffffffffffffffffffffffffffffff16146118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e390613467565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195290613bb4565b60405180910390fd5b611964816127c1565b50565b61196f611f35565b73ffffffffffffffffffffffffffffffffffffffff1661198d611253565b73ffffffffffffffffffffffffffffffffffffffff16146119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613467565b60405180910390fd5b601360149054906101000a900460ff1615611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a90613c20565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611abc30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ab7610919565b611f3d565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4d9190613c55565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfa9190613c55565b6040518363ffffffff1660e01b8152600401611c17929190613c82565b6020604051808303816000875af1158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190613c55565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611ce330611183565b600080611cee611253565b426040518863ffffffff1660e01b8152600401611d1096959493929190613ce6565b60606040518083038185885af1158015611d2e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d539190613d47565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611df5929190613d9a565b6020604051808303816000875af1158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e389190613b15565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff0219169083151502179055504360088190555043600960006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f600a819055506028600b819055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613e35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290613ec7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120f991906130e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90613f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db90613feb565b60405180910390fd5b60008111612227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221e9061407d565b60405180910390fd5b6000612231611253565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561229f575061226f611253565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122b85750601360159054906101000a900460ff16155b15612789576122e560646122d7600a5485612bbc90919063ffffffff16565b612bd290919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123925750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123e85750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124b557600e54821115612432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612429906140e9565b60405180910390fd5b600f548261243f85611183565b6124499190613811565b111561248a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248190614155565b60405180910390fd5b43600360085461249a9190613811565b5050600d60008154809291906124af906136a2565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561255d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125bb57600f548261256f85611183565b6125799190613811565b11156125ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b190614155565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561264457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612674576126716064612663600b5485612bbc90919063ffffffff16565b612bd290919063ffffffff16565b90505b600061267f30611183565b9050601360159054906101000a900460ff161580156126eb5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156127035750601360169054906101000a900460ff165b8015612710575060105481115b801561271f5750600c54600d54115b801561275557504367ffffffffffffffff16600960009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b156127875761276e61276982601154612be8565b612887565b6000479050600081111561278557612784612b29565b5b505b505b600081111561279e5761279d843083612c01565b5b6127bb84846127b68486612e8090919063ffffffff16565b612c01565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601360156101000a81548160ff02191690831515021790555043600960006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600267ffffffffffffffff8111156128e8576128e7614175565b5b6040519080825280602002602001820160405280156129165781602001602082028036833780820191505090505b509050308160008151811061292e5761292d613673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f99190613c55565b81600181518110612a0d57612a0c613673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a7430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f3d565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ad8959493929190614262565b600060405180830381600087803b158015612af257600080fd5b505af1158015612b06573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b71906142ed565b60006040518083038185875af1925050503d8060008114612bae576040519150601f19603f3d011682016040523d82523d6000602084013e612bb3565b606091505b50508091505050565b60008183612bca91906134b6565b905092915050565b60008183612be09190613527565b905092915050565b6000818311612bf75782612bf9565b815b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6790613f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd690613feb565b60405180910390fd5b612cea838383612e96565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6790614374565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e039190613811565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e6791906130e2565b60405180910390a3612e7a848484612e9b565b50505050565b60008183612e8e9190614394565b905092915050565b505050565b505050565b600080fd5b600080fd5b6000819050919050565b612ebd81612eaa565b8114612ec857600080fd5b50565b600081359050612eda81612eb4565b92915050565b60008060408385031215612ef757612ef6612ea0565b5b6000612f0585828601612ecb565b9250506020612f1685828601612ecb565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f5a578082015181840152602081019050612f3f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8282612f20565b612f8c8185612f2b565b9350612f9c818560208601612f3c565b612fa581612f66565b840191505092915050565b60006020820190508181036000830152612fca8184612f77565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ffd82612fd2565b9050919050565b61300d81612ff2565b811461301857600080fd5b50565b60008135905061302a81613004565b92915050565b6000806040838503121561304757613046612ea0565b5b60006130558582860161301b565b925050602061306685828601612ecb565b9150509250929050565b60008115159050919050565b61308581613070565b82525050565b60006020820190506130a0600083018461307c565b92915050565b6000602082840312156130bc576130bb612ea0565b5b60006130ca84828501612ecb565b91505092915050565b6130dc81612eaa565b82525050565b60006020820190506130f760008301846130d3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613122576131216130fd565b5b8235905067ffffffffffffffff81111561313f5761313e613102565b5b60208301915083602082028301111561315b5761315a613107565b5b9250929050565b61316b81613070565b811461317657600080fd5b50565b60008135905061318881613162565b92915050565b6000806000604084860312156131a7576131a6612ea0565b5b600084013567ffffffffffffffff8111156131c5576131c4612ea5565b5b6131d18682870161310c565b935093505060206131e486828701613179565b9150509250925092565b60008060006060848603121561320757613206612ea0565b5b60006132158682870161301b565b93505060206132268682870161301b565b925050604061323786828701612ecb565b9150509250925092565b6000806040838503121561325857613257612ea0565b5b60006132668582860161301b565b925050602061327785828601613179565b9150509250929050565b600060ff82169050919050565b61329781613281565b82525050565b60006020820190506132b2600083018461328e565b92915050565b6000602082840312156132ce576132cd612ea0565b5b60006132dc8482850161301b565b91505092915050565b6132ee81612ff2565b82525050565b600060208201905061330960008301846132e5565b92915050565b600060c08201905061332460008301896130d3565b61333160208301886130d3565b61333e60408301876130d3565b61334b60608301866130d3565b61335860808301856130d3565b61336560a08301846130d3565b979650505050505050565b600061337b82612fd2565b9050919050565b61338b81613370565b811461339657600080fd5b50565b6000813590506133a881613382565b92915050565b6000602082840312156133c4576133c3612ea0565b5b60006133d284828501613399565b91505092915050565b600080604083850312156133f2576133f1612ea0565b5b60006134008582860161301b565b92505060206134118582860161301b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613451602083612f2b565b915061345c8261341b565b602082019050919050565b6000602082019050818103600083015261348081613444565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c182612eaa565b91506134cc83612eaa565b92508282026134da81612eaa565b915082820484148315176134f1576134f0613487565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353282612eaa565b915061353d83612eaa565b92508261354d5761354c6134f8565b5b828204905092915050565b600060408201905061356d60008301856130d3565b61357a60208301846130d3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135c857607f821691505b6020821081036135db576135da613581565b5b50919050565b7f4d61782077616c6c65742063616e74206265206c6f776572207468616e20302e60008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b600061363d602283612f2b565b9150613648826135e1565b604082019050919050565b6000602082019050818103600083015261366c81613630565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006136ad82612eaa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136df576136de613487565b5b600182019050919050565b7f4f6e6c79206665652072656365697665722063616e2074726967676572000000600082015250565b6000613720601d83612f2b565b915061372b826136ea565b602082019050919050565b6000602082019050818103600083015261374f81613713565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006137b2602883612f2b565b91506137bd82613756565b604082019050919050565b600060208201905081810360008301526137e1816137a5565b9050919050565b60006040820190506137fd60008301856132e5565b61380a602083018461307c565b9392505050565b600061381c82612eaa565b915061382783612eaa565b925082820190508082111561383f5761383e613487565b5b92915050565b7f4d61782074782063616e74206265206c6f776572207468616e20302e31250000600082015250565b600061387b601e83612f2b565b915061388682613845565b602082019050919050565b600060208201905081810360008301526138aa8161386e565b9050919050565b7f496e76616c696420627579207461782076616c75650000000000000000000000600082015250565b60006138e7601583612f2b565b91506138f2826138b1565b602082019050919050565b60006020820190508181036000830152613916816138da565b9050919050565b7f496e76616c69642073656c6c207461782076616c756500000000000000000000600082015250565b6000613953601683612f2b565b915061395e8261391d565b602082019050919050565b6000602082019050818103600083015261398281613946565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006139e5602583612f2b565b91506139f082613989565b604082019050919050565b60006020820190508181036000830152613a14816139d8565b9050919050565b6000819050919050565b6000613a40613a3b613a3684612fd2565b613a1b565b612fd2565b9050919050565b6000613a5282613a25565b9050919050565b6000613a6482613a47565b9050919050565b613a7481613a59565b82525050565b6000602082019050613a8f6000830184613a6b565b92915050565b600081519050613aa481612eb4565b92915050565b600060208284031215613ac057613abf612ea0565b5b6000613ace84828501613a95565b91505092915050565b6000604082019050613aec6000830185613a6b565b613af960208301846130d3565b9392505050565b600081519050613b0f81613162565b92915050565b600060208284031215613b2b57613b2a612ea0565b5b6000613b3984828501613b00565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9e602683612f2b565b9150613ba982613b42565b604082019050919050565b60006020820190508181036000830152613bcd81613b91565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613c0a601783612f2b565b9150613c1582613bd4565b602082019050919050565b60006020820190508181036000830152613c3981613bfd565b9050919050565b600081519050613c4f81613004565b92915050565b600060208284031215613c6b57613c6a612ea0565b5b6000613c7984828501613c40565b91505092915050565b6000604082019050613c9760008301856132e5565b613ca460208301846132e5565b9392505050565b6000819050919050565b6000613cd0613ccb613cc684613cab565b613a1b565b612eaa565b9050919050565b613ce081613cb5565b82525050565b600060c082019050613cfb60008301896132e5565b613d0860208301886130d3565b613d156040830187613cd7565b613d226060830186613cd7565b613d2f60808301856132e5565b613d3c60a08301846130d3565b979650505050505050565b600080600060608486031215613d6057613d5f612ea0565b5b6000613d6e86828701613a95565b9350506020613d7f86828701613a95565b9250506040613d9086828701613a95565b9150509250925092565b6000604082019050613daf60008301856132e5565b613dbc60208301846130d3565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e1f602483612f2b565b9150613e2a82613dc3565b604082019050919050565b60006020820190508181036000830152613e4e81613e12565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613eb1602283612f2b565b9150613ebc82613e55565b604082019050919050565b60006020820190508181036000830152613ee081613ea4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f43602583612f2b565b9150613f4e82613ee7565b604082019050919050565b60006020820190508181036000830152613f7281613f36565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd5602383612f2b565b9150613fe082613f79565b604082019050919050565b6000602082019050818103600083015261400481613fc8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614067602983612f2b565b91506140728261400b565b604082019050919050565b600060208201905081810360008301526140968161405a565b9050919050565b7f4578636565647320746865205f7478416d6f756e744c696d69742e0000000000600082015250565b60006140d3601b83612f2b565b91506140de8261409d565b602082019050919050565b60006020820190508181036000830152614102816140c6565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061413f601a83612f2b565b915061414a82614109565b602082019050919050565b6000602082019050818103600083015261416e81614132565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141d981612ff2565b82525050565b60006141eb83836141d0565b60208301905092915050565b6000602082019050919050565b600061420f826141a4565b61421981856141af565b9350614224836141c0565b8060005b8381101561425557815161423c88826141df565b9750614247836141f7565b925050600181019050614228565b5085935050505092915050565b600060a08201905061427760008301886130d3565b6142846020830187613cd7565b81810360408301526142968186614204565b90506142a560608301856132e5565b6142b260808301846130d3565b9695505050505050565b600081905092915050565b50565b60006142d76000836142bc565b91506142e2826142c7565b600082019050919050565b60006142f8826142ca565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061435e602683612f2b565b915061436982614302565b604082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b600061439f82612eaa565b91506143aa83612eaa565b92508282039050818111156143c2576143c1613487565b5b9291505056fea2646970667358221220a20bee1dfcf826b2ad9c1c80d7632cf4ee8fba5dd8d4eb5d8ab694b11660a1af64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c80636ed6a48d116100ec578063a9059cbb1161008a578063c8e0a45d11610064578063c8e0a45d1461059c578063dd62ed3e146105c5578063f2fde38b14610602578063fcfff16f1461062b576101a7565b8063a9059cbb14610506578063ae60148014610543578063b5973bd414610573576101a7565b80638da5cb5b116100c65780638da5cb5b1461045c5780638f937cc41461048757806395d89b411461049e578063a457c2d7146104c9576101a7565b80636ed6a48d146103f157806370a0823114610408578063715018a614610445576101a7565b8063217b6da611610159578063313ce56711610133578063313ce567146103375780633950935114610362578063620cc86c1461039f578063667f6526146103c8576101a7565b8063217b6da6146102ba57806323b872dd146102d15780632dc4f5e61461030e576101a7565b80630313fc4b146101ac57806306fdde03146101d5578063095ea7b31461020057806314d0c4341461023d57806318160ddd146102665780631c537de514610291576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101d360048036038101906101ce9190612ee0565b610642565b005b3480156101e157600080fd5b506101ea610747565b6040516101f79190612fb0565b60405180910390f35b34801561020c57600080fd5b5061022760048036038101906102229190613030565b6107d9565b604051610234919061308b565b60405180910390f35b34801561024957600080fd5b50610264600480360381019061025f91906130a6565b6107f7565b005b34801561027257600080fd5b5061027b610919565b60405161028891906130e2565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b3919061318e565b610923565b005b3480156102c657600080fd5b506102cf610a44565b005b3480156102dd57600080fd5b506102f860048036038101906102f391906131ee565b610b3f565b604051610305919061308b565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190613241565b610c37565b005b34801561034357600080fd5b5061034c610d47565b604051610359919061329d565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190613030565b610d50565b604051610396919061308b565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c191906130a6565b610dfc565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190612ee0565b610f1e565b005b3480156103fd57600080fd5b5061040661106d565b005b34801561041457600080fd5b5061042f600480360381019061042a91906132b8565b611183565b60405161043c91906130e2565b60405180910390f35b34801561045157600080fd5b5061045a6111cb565b005b34801561046857600080fd5b50610471611253565b60405161047e91906132f4565b60405180910390f35b34801561049357600080fd5b5061049c61127d565b005b3480156104aa57600080fd5b506104b361137b565b6040516104c09190612fb0565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190613030565b61140d565b6040516104fd919061308b565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613030565b6114f8565b60405161053a919061308b565b60405180910390f35b34801561054f57600080fd5b50610558611516565b60405161056a9695949392919061330f565b60405180910390f35b34801561057f57600080fd5b5061059a600480360381019061059591906133ae565b611545565b005b3480156105a857600080fd5b506105c360048036038101906105be91906132b8565b61163c565b005b3480156105d157600080fd5b506105ec60048036038101906105e791906133db565b6117e9565b6040516105f991906130e2565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906132b8565b611870565b005b34801561063757600080fd5b50610640611967565b005b61064a611f35565b73ffffffffffffffffffffffffffffffffffffffff16610668611253565b73ffffffffffffffffffffffffffffffffffffffff16146106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b590613467565b60405180910390fd5b612710826106ca610919565b6106d491906134b6565b6106de9190613527565b601081905550612710816106f0610919565b6106fa91906134b6565b6107049190613527565b6011819055507f2b3f4c022d9943b151090e389857495bb9d8493714259cc19a540f5a11475fb1828260405161073b929190613558565b60405180910390a15050565b606060038054610756906135b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610782906135b0565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b60006107ed6107e6611f35565b8484611f3d565b6001905092915050565b6107ff611f35565b73ffffffffffffffffffffffffffffffffffffffff1661081d611253565b73ffffffffffffffffffffffffffffffffffffffff1614610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90613467565b60405180910390fd5b60018110156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90613653565b60405180910390fd5b6103e8816108c3610919565b6108cd91906134b6565b6108d79190613527565b600f819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001600f5460405161090e91906130e2565b60405180910390a150565b6000600254905090565b61092b611f35565b73ffffffffffffffffffffffffffffffffffffffff16610949611253565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690613467565b60405180910390fd5b60005b83839050811015610a3e5781601460008686858181106109c5576109c4613673565b5b90506020020160208101906109da91906132b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a36906136a2565b9150506109a2565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90613736565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b3c573d6000803e3d6000fd5b50565b6000610b4c848484612106565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b97611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e906137c8565b60405180910390fd5b610c2b85610c23611f35565b858403611f3d565b60019150509392505050565b610c3f611f35565b73ffffffffffffffffffffffffffffffffffffffff16610c5d611253565b73ffffffffffffffffffffffffffffffffffffffff1614610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa90613467565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa98282604051610d3b9291906137e8565b60405180910390a15050565b60006012905090565b6000610df2610d5d611f35565b848460016000610d6b611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ded9190613811565b611f3d565b6001905092915050565b610e04611f35565b73ffffffffffffffffffffffffffffffffffffffff16610e22611253565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613467565b60405180910390fd5b6001811015610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613891565b60405180910390fd5b6103e881610ec8610919565b610ed291906134b6565b610edc9190613527565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600e54604051610f1391906130e2565b60405180910390a150565b610f26611f35565b73ffffffffffffffffffffffffffffffffffffffff16610f44611253565b73ffffffffffffffffffffffffffffffffffffffff1614610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613467565b60405180910390fd5b6019821115610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906138fd565b60405180910390fd5b6019811115611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990613969565b60405180910390fd5b81600a8190555080600b819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051611061929190613558565b60405180910390a15050565b611075611f35565b73ffffffffffffffffffffffffffffffffffffffff16611093611253565b73ffffffffffffffffffffffffffffffffffffffff16146110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090613467565b60405180910390fd5b6110f1610919565b600e819055506110ff610919565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61112e610919565b60405161113b91906130e2565b60405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e00161116c610919565b60405161117991906130e2565b60405180910390a1565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d3611f35565b73ffffffffffffffffffffffffffffffffffffffff166111f1611253565b73ffffffffffffffffffffffffffffffffffffffff1614611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e90613467565b60405180910390fd5b61125160006127c1565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061130b57506112dc611253565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134190613736565b60405180910390fd5b600061135530611183565b905061136081612887565b6000479050600081111561137757611376612b29565b5b5050565b60606004805461138a906135b0565b80601f01602080910402602001604051908101604052809291908181526020018280546113b6906135b0565b80156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905090565b6000806001600061141c611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906139fb565b60405180910390fd5b6114ed6114e4611f35565b85858403611f3d565b600191505092915050565b600061150c611505611f35565b8484612106565b6001905092915050565b600080600080600080600a54600b54600e54600f54601054601154955095509550955095509550909192939495565b61154d611f35565b73ffffffffffffffffffffffffffffffffffffffff1661156b611253565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613467565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee816040516116319190613a7a565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390613736565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161174491906132f4565b602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613aaa565b6040518363ffffffff1660e01b81526004016117a2929190613ad7565b6020604051808303816000875af11580156117c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e59190613b15565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611878611f35565b73ffffffffffffffffffffffffffffffffffffffff16611896611253565b73ffffffffffffffffffffffffffffffffffffffff16146118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e390613467565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195290613bb4565b60405180910390fd5b611964816127c1565b50565b61196f611f35565b73ffffffffffffffffffffffffffffffffffffffff1661198d611253565b73ffffffffffffffffffffffffffffffffffffffff16146119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613467565b60405180910390fd5b601360149054906101000a900460ff1615611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a90613c20565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611abc30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ab7610919565b611f3d565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4d9190613c55565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfa9190613c55565b6040518363ffffffff1660e01b8152600401611c17929190613c82565b6020604051808303816000875af1158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190613c55565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611ce330611183565b600080611cee611253565b426040518863ffffffff1660e01b8152600401611d1096959493929190613ce6565b60606040518083038185885af1158015611d2e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d539190613d47565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611df5929190613d9a565b6020604051808303816000875af1158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e389190613b15565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff0219169083151502179055504360088190555043600960006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f600a819055506028600b819055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613e35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290613ec7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120f991906130e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90613f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db90613feb565b60405180910390fd5b60008111612227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221e9061407d565b60405180910390fd5b6000612231611253565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561229f575061226f611253565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122b85750601360159054906101000a900460ff16155b15612789576122e560646122d7600a5485612bbc90919063ffffffff16565b612bd290919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123925750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123e85750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124b557600e54821115612432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612429906140e9565b60405180910390fd5b600f548261243f85611183565b6124499190613811565b111561248a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248190614155565b60405180910390fd5b43600360085461249a9190613811565b5050600d60008154809291906124af906136a2565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561255d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125bb57600f548261256f85611183565b6125799190613811565b11156125ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b190614155565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561264457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612674576126716064612663600b5485612bbc90919063ffffffff16565b612bd290919063ffffffff16565b90505b600061267f30611183565b9050601360159054906101000a900460ff161580156126eb5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156127035750601360169054906101000a900460ff165b8015612710575060105481115b801561271f5750600c54600d54115b801561275557504367ffffffffffffffff16600960009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b156127875761276e61276982601154612be8565b612887565b6000479050600081111561278557612784612b29565b5b505b505b600081111561279e5761279d843083612c01565b5b6127bb84846127b68486612e8090919063ffffffff16565b612c01565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601360156101000a81548160ff02191690831515021790555043600960006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600267ffffffffffffffff8111156128e8576128e7614175565b5b6040519080825280602002602001820160405280156129165781602001602082028036833780820191505090505b509050308160008151811061292e5761292d613673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f99190613c55565b81600181518110612a0d57612a0c613673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a7430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f3d565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ad8959493929190614262565b600060405180830381600087803b158015612af257600080fd5b505af1158015612b06573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b71906142ed565b60006040518083038185875af1925050503d8060008114612bae576040519150601f19603f3d011682016040523d82523d6000602084013e612bb3565b606091505b50508091505050565b60008183612bca91906134b6565b905092915050565b60008183612be09190613527565b905092915050565b6000818311612bf75782612bf9565b815b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6790613f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd690613feb565b60405180910390fd5b612cea838383612e96565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6790614374565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e039190613811565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e6791906130e2565b60405180910390a3612e7a848484612e9b565b50505050565b60008183612e8e9190614394565b905092915050565b505050565b505050565b600080fd5b600080fd5b6000819050919050565b612ebd81612eaa565b8114612ec857600080fd5b50565b600081359050612eda81612eb4565b92915050565b60008060408385031215612ef757612ef6612ea0565b5b6000612f0585828601612ecb565b9250506020612f1685828601612ecb565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f5a578082015181840152602081019050612f3f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8282612f20565b612f8c8185612f2b565b9350612f9c818560208601612f3c565b612fa581612f66565b840191505092915050565b60006020820190508181036000830152612fca8184612f77565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ffd82612fd2565b9050919050565b61300d81612ff2565b811461301857600080fd5b50565b60008135905061302a81613004565b92915050565b6000806040838503121561304757613046612ea0565b5b60006130558582860161301b565b925050602061306685828601612ecb565b9150509250929050565b60008115159050919050565b61308581613070565b82525050565b60006020820190506130a0600083018461307c565b92915050565b6000602082840312156130bc576130bb612ea0565b5b60006130ca84828501612ecb565b91505092915050565b6130dc81612eaa565b82525050565b60006020820190506130f760008301846130d3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613122576131216130fd565b5b8235905067ffffffffffffffff81111561313f5761313e613102565b5b60208301915083602082028301111561315b5761315a613107565b5b9250929050565b61316b81613070565b811461317657600080fd5b50565b60008135905061318881613162565b92915050565b6000806000604084860312156131a7576131a6612ea0565b5b600084013567ffffffffffffffff8111156131c5576131c4612ea5565b5b6131d18682870161310c565b935093505060206131e486828701613179565b9150509250925092565b60008060006060848603121561320757613206612ea0565b5b60006132158682870161301b565b93505060206132268682870161301b565b925050604061323786828701612ecb565b9150509250925092565b6000806040838503121561325857613257612ea0565b5b60006132668582860161301b565b925050602061327785828601613179565b9150509250929050565b600060ff82169050919050565b61329781613281565b82525050565b60006020820190506132b2600083018461328e565b92915050565b6000602082840312156132ce576132cd612ea0565b5b60006132dc8482850161301b565b91505092915050565b6132ee81612ff2565b82525050565b600060208201905061330960008301846132e5565b92915050565b600060c08201905061332460008301896130d3565b61333160208301886130d3565b61333e60408301876130d3565b61334b60608301866130d3565b61335860808301856130d3565b61336560a08301846130d3565b979650505050505050565b600061337b82612fd2565b9050919050565b61338b81613370565b811461339657600080fd5b50565b6000813590506133a881613382565b92915050565b6000602082840312156133c4576133c3612ea0565b5b60006133d284828501613399565b91505092915050565b600080604083850312156133f2576133f1612ea0565b5b60006134008582860161301b565b92505060206134118582860161301b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613451602083612f2b565b915061345c8261341b565b602082019050919050565b6000602082019050818103600083015261348081613444565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c182612eaa565b91506134cc83612eaa565b92508282026134da81612eaa565b915082820484148315176134f1576134f0613487565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353282612eaa565b915061353d83612eaa565b92508261354d5761354c6134f8565b5b828204905092915050565b600060408201905061356d60008301856130d3565b61357a60208301846130d3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135c857607f821691505b6020821081036135db576135da613581565b5b50919050565b7f4d61782077616c6c65742063616e74206265206c6f776572207468616e20302e60008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b600061363d602283612f2b565b9150613648826135e1565b604082019050919050565b6000602082019050818103600083015261366c81613630565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006136ad82612eaa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136df576136de613487565b5b600182019050919050565b7f4f6e6c79206665652072656365697665722063616e2074726967676572000000600082015250565b6000613720601d83612f2b565b915061372b826136ea565b602082019050919050565b6000602082019050818103600083015261374f81613713565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006137b2602883612f2b565b91506137bd82613756565b604082019050919050565b600060208201905081810360008301526137e1816137a5565b9050919050565b60006040820190506137fd60008301856132e5565b61380a602083018461307c565b9392505050565b600061381c82612eaa565b915061382783612eaa565b925082820190508082111561383f5761383e613487565b5b92915050565b7f4d61782074782063616e74206265206c6f776572207468616e20302e31250000600082015250565b600061387b601e83612f2b565b915061388682613845565b602082019050919050565b600060208201905081810360008301526138aa8161386e565b9050919050565b7f496e76616c696420627579207461782076616c75650000000000000000000000600082015250565b60006138e7601583612f2b565b91506138f2826138b1565b602082019050919050565b60006020820190508181036000830152613916816138da565b9050919050565b7f496e76616c69642073656c6c207461782076616c756500000000000000000000600082015250565b6000613953601683612f2b565b915061395e8261391d565b602082019050919050565b6000602082019050818103600083015261398281613946565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006139e5602583612f2b565b91506139f082613989565b604082019050919050565b60006020820190508181036000830152613a14816139d8565b9050919050565b6000819050919050565b6000613a40613a3b613a3684612fd2565b613a1b565b612fd2565b9050919050565b6000613a5282613a25565b9050919050565b6000613a6482613a47565b9050919050565b613a7481613a59565b82525050565b6000602082019050613a8f6000830184613a6b565b92915050565b600081519050613aa481612eb4565b92915050565b600060208284031215613ac057613abf612ea0565b5b6000613ace84828501613a95565b91505092915050565b6000604082019050613aec6000830185613a6b565b613af960208301846130d3565b9392505050565b600081519050613b0f81613162565b92915050565b600060208284031215613b2b57613b2a612ea0565b5b6000613b3984828501613b00565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9e602683612f2b565b9150613ba982613b42565b604082019050919050565b60006020820190508181036000830152613bcd81613b91565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613c0a601783612f2b565b9150613c1582613bd4565b602082019050919050565b60006020820190508181036000830152613c3981613bfd565b9050919050565b600081519050613c4f81613004565b92915050565b600060208284031215613c6b57613c6a612ea0565b5b6000613c7984828501613c40565b91505092915050565b6000604082019050613c9760008301856132e5565b613ca460208301846132e5565b9392505050565b6000819050919050565b6000613cd0613ccb613cc684613cab565b613a1b565b612eaa565b9050919050565b613ce081613cb5565b82525050565b600060c082019050613cfb60008301896132e5565b613d0860208301886130d3565b613d156040830187613cd7565b613d226060830186613cd7565b613d2f60808301856132e5565b613d3c60a08301846130d3565b979650505050505050565b600080600060608486031215613d6057613d5f612ea0565b5b6000613d6e86828701613a95565b9350506020613d7f86828701613a95565b9250506040613d9086828701613a95565b9150509250925092565b6000604082019050613daf60008301856132e5565b613dbc60208301846130d3565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e1f602483612f2b565b9150613e2a82613dc3565b604082019050919050565b60006020820190508181036000830152613e4e81613e12565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613eb1602283612f2b565b9150613ebc82613e55565b604082019050919050565b60006020820190508181036000830152613ee081613ea4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f43602583612f2b565b9150613f4e82613ee7565b604082019050919050565b60006020820190508181036000830152613f7281613f36565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd5602383612f2b565b9150613fe082613f79565b604082019050919050565b6000602082019050818103600083015261400481613fc8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614067602983612f2b565b91506140728261400b565b604082019050919050565b600060208201905081810360008301526140968161405a565b9050919050565b7f4578636565647320746865205f7478416d6f756e744c696d69742e0000000000600082015250565b60006140d3601b83612f2b565b91506140de8261409d565b602082019050919050565b60006020820190508181036000830152614102816140c6565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061413f601a83612f2b565b915061414a82614109565b602082019050919050565b6000602082019050818103600083015261416e81614132565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141d981612ff2565b82525050565b60006141eb83836141d0565b60208301905092915050565b6000602082019050919050565b600061420f826141a4565b61421981856141af565b9350614224836141c0565b8060005b8381101561425557815161423c88826141df565b9750614247836141f7565b925050600181019050614228565b5085935050505092915050565b600060a08201905061427760008301886130d3565b6142846020830187613cd7565b81810360408301526142968186614204565b90506142a560608301856132e5565b6142b260808301846130d3565b9695505050505050565b600081905092915050565b50565b60006142d76000836142bc565b91506142e2826142c7565b600082019050919050565b60006142f8826142ca565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061435e602683612f2b565b915061436982614302565b604082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b600061439f82612eaa565b91506143aa83612eaa565b92508282039050818111156143c2576143c1613487565b5b9291505056fea2646970667358221220a20bee1dfcf826b2ad9c1c80d7632cf4ee8fba5dd8d4eb5d8ab694b11660a1af64736f6c63430008130033
Deployed Bytecode Sourcemap
25443:9631:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29131:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11041:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13274:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28865:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12161:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30415:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29997:168;;;;;;;;;;;;;:::i;:::-;;13946:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30640:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12003:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14880:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28619:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29699:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29455:236;;;;;;;;;;;;;:::i;:::-;;12332:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22380:103;;;;;;;;;;;;;:::i;:::-;;21729:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33917:436;;;;;;;;;;;;;:::i;:::-;;11260:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15669:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12688:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30819:485;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;28443:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30175:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12951:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22638:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27411:1024;;;;;;;;;;;;;:::i;:::-;;29131:310;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29305:5:::1;29285:16;29269:13;:11;:13::i;:::-;:32;;;;:::i;:::-;29268:42;;;;:::i;:::-;29253:12;:57;;;;29367:5;29353:10;29337:13;:11;:13::i;:::-;:26;;;;:::i;:::-;29336:36;;;;:::i;:::-;29321:12;:51;;;;29388:45;29404:16;29422:10;29388:45;;;;;;;:::i;:::-;;;;;;;;29131:310:::0;;:::o;11041:100::-;11095:13;11128:5;11121:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11041:100;:::o;13274:194::-;13382:4;13399:39;13408:12;:10;:12::i;:::-;13422:7;13431:6;13399:8;:39::i;:::-;13456:4;13449:11;;13274:194;;;;:::o;28865:258::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28952:1:::1;28940:8;:13;;28932:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;29053:4;29041:8;29025:13;:11;:13::i;:::-;:24;;;;:::i;:::-;29024:33;;;;:::i;:::-;29003:18;:54;;;;29073:42;29096:18;;29073:42;;;;;;:::i;:::-;;;;;;;;28865:258:::0;:::o;12161:108::-;12222:7;12249:12;;12242:19;;12161:108;:::o;30415:217::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30533:9:::1;30528:97;30552:6;;:13;;30548:1;:17;30528:97;;;30607:6;30587;:17;30594:6;;30601:1;30594:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30587:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;30567:3;;;;;:::i;:::-;;;;30528:97;;;;30415:217:::0;;;:::o;29997:168::-;30060:10;;;;;;;;;;;30046:24;;:10;:24;;;30038:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30115:10;;;;;;;;;;;:19;;:42;30135:21;30115:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29997:168::o;13946:529::-;14086:4;14103:36;14113:6;14121:9;14132:6;14103:9;:36::i;:::-;14152:24;14179:11;:19;14191:6;14179:19;;;;;;;;;;;;;;;:33;14199:12;:10;:12::i;:::-;14179:33;;;;;;;;;;;;;;;;14152:60;;14265:6;14245:16;:26;;14223:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;14375:57;14384:6;14392:12;:10;:12::i;:::-;14425:6;14406:16;:25;14375:8;:57::i;:::-;14463:4;14456:11;;;13946:529;;;;;:::o;30640:171::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30749:6:::1;30719:18;:27;30738:7;30719:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;30771:32;30787:7;30796:6;30771:32;;;;;;;:::i;:::-;;;;;;;;30640:171:::0;;:::o;12003:93::-;12061:5;12086:2;12079:9;;12003:93;:::o;14880:290::-;14993:4;15010:130;15033:12;:10;:12::i;:::-;15060:7;15119:10;15082:11;:25;15094:12;:10;:12::i;:::-;15082:25;;;;;;;;;;;;;;;:34;15108:7;15082:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15010:8;:130::i;:::-;15158:4;15151:11;;14880:290;;;;:::o;28619:238::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28702:1:::1;28690:8;:13;;28682:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;28795:4;28783:8;28767:13;:11;:13::i;:::-;:24;;;;:::i;:::-;28766:33;;;;:::i;:::-;28749:14;:50;;;;28815:34;28834:14;;28815:34;;;;;;:::i;:::-;;;;;;;;28619:238:::0;:::o;29699:290::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29796:2:::1;29786:6;:12;;29778:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;29854:2;29843:7;:13;;29835:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;29903:6;29894;:15;;;;29930:7;29920;:17;;;;29953:28;29965:6;29973:7;29953:28;;;;;;;:::i;:::-;;;;;;;;29699:290:::0;;:::o;29455:236::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29523:13:::1;:11;:13::i;:::-;29506:14;:30;;;;29568:13;:11;:13::i;:::-;29547:18;:34;;;;29597:33;29616:13;:11;:13::i;:::-;29597:33;;;;;;:::i;:::-;;;;;;;;29646:37;29669:13;:11;:13::i;:::-;29646:37;;;;;;:::i;:::-;;;;;;;;29455:236::o:0;12332:143::-;12422:7;12449:9;:18;12459:7;12449:18;;;;;;;;;;;;;;;;12442:25;;12332:143;;;:::o;22380:103::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22445:30:::1;22472:1;22445:18;:30::i;:::-;22380:103::o:0;21729:87::-;21775:7;21802:6;;;;;;;;;;;21795:13;;21729:87;:::o;33917:436::-;33996:10;;;;;;;;;;;33982:24;;:10;:24;;;:49;;;;34024:7;:5;:7::i;:::-;34010:21;;:10;:21;;;33982:49;33960:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;34099:28;34130:24;34148:4;34130:9;:24::i;:::-;34099:55;;34167:38;34184:20;34167:16;:38::i;:::-;34216:26;34245:21;34216:50;;34302:1;34281:18;:22;34277:69;;;34320:14;:12;:14::i;:::-;34277:69;33949:404;;33917:436::o;11260:104::-;11316:13;11349:7;11342:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11260:104;:::o;15669:475::-;15787:4;15804:24;15831:11;:25;15843:12;:10;:12::i;:::-;15831:25;;;;;;;;;;;;;;;:34;15857:7;15831:34;;;;;;;;;;;;;;;;15804:61;;15918:15;15898:16;:35;;15876:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;16034:67;16043:12;:10;:12::i;:::-;16057:7;16085:15;16066:16;:34;16034:8;:67::i;:::-;16132:4;16125:11;;;15669:475;;;;:::o;12688:200::-;12799:4;12816:42;12826:12;:10;:12::i;:::-;12840:9;12851:6;12816:9;:42::i;:::-;12876:4;12869:11;;12688:200;;;;:::o;30819:485::-;30903:15;30933:16;30964:19;30998:21;31034:24;31073:18;31141:6;;31162:7;;31184:14;;31213:18;;31246:12;;31273;;31119:177;;;;;;;;;;;;30819:485;;;;;;:::o;28443:168::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28535:15:::1;28522:10;;:28;;;;;;;;;;;;;;;;;;28568:35;28587:15;28568:35;;;;;;:::i;:::-;;;;;;;;28443:168:::0;:::o;30175:232::-;30261:10;;;;;;;;;;;30247:24;;:10;:24;;;30239:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30323:8;30316:25;;;30342:10;;;;;;;;;;;30360:8;30353:26;;;30388:4;30353:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30316:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30175:232;:::o;12951:176::-;13065:7;13092:11;:18;13104:5;13092:18;;;;;;;;;;;;;;;:27;13111:7;13092:27;;;;;;;;;;;;;;;;13085:34;;12951:176;;;;:::o;22638:238::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22761:1:::1;22741:22;;:8;:22;;::::0;22719:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22840:28;22859:8;22840:18;:28::i;:::-;22638:238:::0;:::o;27411:1024::-;21960:12;:10;:12::i;:::-;21949:23;;:7;:5;:7::i;:::-;:23;;;21941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27466:11:::1;;;;;;;;;;;27465:12;27457:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27559:42;27516:15;;:96;;;;;;;;;;;;;;;;;;27623:64;27640:4;27655:15;;;;;;;;;;;27673:13;:11;:13::i;:::-;27623:8;:64::i;:::-;27726:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27714:49;;;27786:4;27806:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27714:125;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27698:13;;:141;;;;;;;;;;;;;;;;;;27850:15;;;;;;;;;;;:31;;;27889:21;27934:4;27954:24;27972:4;27954:9;:24::i;:::-;27993:1;28009::::0;28025:7:::1;:5;:7::i;:::-;28047:15;27850:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28091:13;;;;;;;;;;;28084:29;;;28122:15;;;;;;;;;;;28140:14;28084:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28180:4;28166:11;;:18;;;;;;;;;;;;;;;;;;28209:4;28195:11;;:18;;;;;;;;;;;;;;;;;;28237:12;28224:10;:25;;;;28285:12;28260:15;;:38;;;;;;;;;;;;;;;;;;28345:4;28309:18;:33;28336:4;28309:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;28369:2;28360:6;:11;;;;28392:2;28382:7;:12;;;;28412:15;;;;;;;;;;27411:1024::o:0;10047:98::-;10100:7;10127:10;10120:17;;10047:98;:::o;19452:380::-;19605:1;19588:19;;:5;:19;;;19580:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19686:1;19667:21;;:7;:21;;;19659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19770:6;19740:11;:18;19752:5;19740:18;;;;;;;;;;;;;;;:27;19759:7;19740:27;;;;;;;;;;;;;;;:36;;;;19808:7;19792:32;;19801:5;19792:32;;;19817:6;19792:32;;;;;;:::i;:::-;;;;;;;;19452:380;;;:::o;31312:2279::-;31460:1;31444:18;;:4;:18;;;31436:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31537:1;31523:16;;:2;:16;;;31515:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31607:1;31598:6;:10;31590:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31665:17;31709:7;:5;:7::i;:::-;31701:15;;:4;:15;;;;:32;;;;;31726:7;:5;:7::i;:::-;31720:13;;:2;:13;;;;31701:32;:43;;;;;31738:6;;;;;;;;;;;31737:7;31701:43;31697:1723;;;31773:27;31796:3;31773:18;31784:6;;31773;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;31761:39;;31847:13;;;;;;;;;;;31839:21;;:4;:21;;;:72;;;;;31895:15;;;;;;;;;;;31881:30;;:2;:30;;;;31839:72;:116;;;;;31933:18;:22;31952:2;31933:22;;;;;;;;;;;;;;;;;;;;;;;;;31932:23;31839:116;31817:571;;;32008:14;;31998:6;:24;;31990:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32129:18;;32119:6;32103:13;32113:2;32103:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;32073:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;32259:12;32255:1;32242:10;;:14;;;;:::i;:::-;:29;;32361:9;;:11;;;;;;;;;:::i;:::-;;;;;;31817:571;32414:13;;;;;;;;;;;32408:19;;:2;:19;;;;:46;;;;;32432:18;:22;32451:2;32432:22;;;;;;;;;;;;;;;;;;;;;;;;;32431:23;32408:46;32404:231;;;32531:18;;32521:6;32505:13;32515:2;32505:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;32475:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;32404:231;32661:13;;;;;;;;;;;32655:19;;:2;:19;;;:44;;;;;32694:4;32678:21;;:4;:21;;;;32655:44;32651:125;;;32732:28;32756:3;32732:19;32743:7;;32732:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;32720:40;;32651:125;32792:28;32823:24;32841:4;32823:9;:24::i;:::-;32792:55;;32885:6;;;;;;;;;;;32884:7;:47;;;;;32918:13;;;;;;;;;;;32912:19;;:2;:19;;;32884:47;:79;;;;;32952:11;;;;;;;;;;;32884:79;:135;;;;;33007:12;;32984:20;:35;32884:135;:186;;;;;33052:18;;33040:9;;:30;32884:186;:246;;;;;33117:12;33091:39;;:15;;;;;;;;;;;:39;;;;32884:246;32862:547;;;33165:56;33182:38;33186:20;33207:12;;33182:3;:38::i;:::-;33165:16;:56::i;:::-;33240:26;33269:21;33240:50;;33334:1;33313:18;:22;33309:85;;;33360:14;:12;:14::i;:::-;33309:85;33146:263;32862:547;31746:1674;31697:1723;33448:1;33436:9;:13;33432:93;;;33466:47;33482:4;33496;33503:9;33466:15;:47::i;:::-;33432:93;33535:48;33551:4;33557:2;33561:21;33572:9;33561:6;:10;;:21;;;;:::i;:::-;33535:15;:48::i;:::-;31425:2166;31312:2279;;;:::o;23036:191::-;23110:16;23129:6;;;;;;;;;;;23110:25;;23155:8;23146:6;;:17;;;;;;;;;;;;;;;;;;23210:8;23179:40;;23200:8;23179:40;;;;;;;;;;;;23099:128;23036:191;:::o;34361:532::-;26663:4;26654:6;;:13;;;;;;;;;;;;;;;;;;34464:12:::1;34439:15;;:38;;;;;;;;;;;;;;;;;;34488:21;34526:1;34512:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34488:40;;34557:4;34539;34544:1;34539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;34583:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34573:4;34578:1;34573:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;34616:62;34633:4;34648:15;;;;;;;;;;;34666:11;34616:8;:62::i;:::-;34689:15;;;;;;;;;;;:66;;;34770:11;34796:1;34812:4;34839;34859:15;34689:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34428:465;26699:5:::0;26690:6;;:14;;;;;;;;;;;;;;;;;;34361:532;:::o;34901:170::-;34944:12;34989:10;;;;;;;;;;;34981:24;;35013:21;34981:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34967:96;;;;;34933:138;34901:170::o;3406:98::-;3464:7;3495:1;3491;:5;;;;:::i;:::-;3484:12;;3406:98;;;;:::o;3805:::-;3863:7;3894:1;3890;:5;;;;:::i;:::-;3883:12;;3805:98;;;;:::o;33599:107::-;33656:7;33688:1;33684;:5;33683:15;;33697:1;33683:15;;;33693:1;33683:15;33676:22;;33599:107;;;;:::o;16634:770::-;16792:1;16774:20;;:6;:20;;;16766:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16876:1;16855:23;;:9;:23;;;16847:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16931:47;16952:6;16960:9;16971:6;16931:20;:47::i;:::-;16991:21;17015:9;:17;17025:6;17015:17;;;;;;;;;;;;;;;;16991:41;;17082:6;17065:13;:23;;17043:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17226:6;17210:13;:22;17190:9;:17;17200:6;17190:17;;;;;;;;;;;;;;;:42;;;;17278:6;17254:9;:20;17264:9;17254:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17319:9;17302:35;;17311:6;17302:35;;;17330:6;17302:35;;;;;;:::i;:::-;;;;;;;;17350:46;17370:6;17378:9;17389:6;17350:19;:46::i;:::-;16755:649;16634:770;;;:::o;3049:98::-;3107:7;3138:1;3134;:5;;;;:::i;:::-;3127:12;;3049:98;;;;:::o;20432:125::-;;;;:::o;21161:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:118::-;4348:24;4366:5;4348:24;:::i;:::-;4343:3;4336:37;4261:118;;:::o;4385:222::-;4478:4;4516:2;4505:9;4501:18;4493:26;;4529:71;4597:1;4586:9;4582:17;4573:6;4529:71;:::i;:::-;4385:222;;;;:::o;4613:117::-;4722:1;4719;4712:12;4736:117;4845:1;4842;4835:12;4859:117;4968:1;4965;4958:12;4999:568;5072:8;5082:6;5132:3;5125:4;5117:6;5113:17;5109:27;5099:122;;5140:79;;:::i;:::-;5099:122;5253:6;5240:20;5230:30;;5283:18;5275:6;5272:30;5269:117;;;5305:79;;:::i;:::-;5269:117;5419:4;5411:6;5407:17;5395:29;;5473:3;5465:4;5457:6;5453:17;5443:8;5439:32;5436:41;5433:128;;;5480:79;;:::i;:::-;5433:128;4999:568;;;;;:::o;5573:116::-;5643:21;5658:5;5643:21;:::i;:::-;5636:5;5633:32;5623:60;;5679:1;5676;5669:12;5623:60;5573:116;:::o;5695:133::-;5738:5;5776:6;5763:20;5754:29;;5792:30;5816:5;5792:30;:::i;:::-;5695:133;;;;:::o;5834:698::-;5926:6;5934;5942;5991:2;5979:9;5970:7;5966:23;5962:32;5959:119;;;5997:79;;:::i;:::-;5959:119;6145:1;6134:9;6130:17;6117:31;6175:18;6167:6;6164:30;6161:117;;;6197:79;;:::i;:::-;6161:117;6310:80;6382:7;6373:6;6362:9;6358:22;6310:80;:::i;:::-;6292:98;;;;6088:312;6439:2;6465:50;6507:7;6498:6;6487:9;6483:22;6465:50;:::i;:::-;6455:60;;6410:115;5834:698;;;;;:::o;6538:619::-;6615:6;6623;6631;6680:2;6668:9;6659:7;6655:23;6651:32;6648:119;;;6686:79;;:::i;:::-;6648:119;6806:1;6831:53;6876:7;6867:6;6856:9;6852:22;6831:53;:::i;:::-;6821:63;;6777:117;6933:2;6959:53;7004:7;6995:6;6984:9;6980:22;6959:53;:::i;:::-;6949:63;;6904:118;7061:2;7087:53;7132:7;7123:6;7112:9;7108:22;7087:53;:::i;:::-;7077:63;;7032:118;6538:619;;;;;:::o;7163:468::-;7228:6;7236;7285:2;7273:9;7264:7;7260:23;7256:32;7253:119;;;7291:79;;:::i;:::-;7253:119;7411:1;7436:53;7481:7;7472:6;7461:9;7457:22;7436:53;:::i;:::-;7426:63;;7382:117;7538:2;7564:50;7606:7;7597:6;7586:9;7582:22;7564:50;:::i;:::-;7554:60;;7509:115;7163:468;;;;;:::o;7637:86::-;7672:7;7712:4;7705:5;7701:16;7690:27;;7637:86;;;:::o;7729:112::-;7812:22;7828:5;7812:22;:::i;:::-;7807:3;7800:35;7729:112;;:::o;7847:214::-;7936:4;7974:2;7963:9;7959:18;7951:26;;7987:67;8051:1;8040:9;8036:17;8027:6;7987:67;:::i;:::-;7847:214;;;;:::o;8067:329::-;8126:6;8175:2;8163:9;8154:7;8150:23;8146:32;8143:119;;;8181:79;;:::i;:::-;8143:119;8301:1;8326:53;8371:7;8362:6;8351:9;8347:22;8326:53;:::i;:::-;8316:63;;8272:117;8067:329;;;;:::o;8402:118::-;8489:24;8507:5;8489:24;:::i;:::-;8484:3;8477:37;8402:118;;:::o;8526:222::-;8619:4;8657:2;8646:9;8642:18;8634:26;;8670:71;8738:1;8727:9;8723:17;8714:6;8670:71;:::i;:::-;8526:222;;;;:::o;8754:775::-;8987:4;9025:3;9014:9;9010:19;9002:27;;9039:71;9107:1;9096:9;9092:17;9083:6;9039:71;:::i;:::-;9120:72;9188:2;9177:9;9173:18;9164:6;9120:72;:::i;:::-;9202;9270:2;9259:9;9255:18;9246:6;9202:72;:::i;:::-;9284;9352:2;9341:9;9337:18;9328:6;9284:72;:::i;:::-;9366:73;9434:3;9423:9;9419:19;9410:6;9366:73;:::i;:::-;9449;9517:3;9506:9;9502:19;9493:6;9449:73;:::i;:::-;8754:775;;;;;;;;;:::o;9535:104::-;9580:7;9609:24;9627:5;9609:24;:::i;:::-;9598:35;;9535:104;;;:::o;9645:138::-;9726:32;9752:5;9726:32;:::i;:::-;9719:5;9716:43;9706:71;;9773:1;9770;9763:12;9706:71;9645:138;:::o;9789:155::-;9843:5;9881:6;9868:20;9859:29;;9897:41;9932:5;9897:41;:::i;:::-;9789:155;;;;:::o;9950:345::-;10017:6;10066:2;10054:9;10045:7;10041:23;10037:32;10034:119;;;10072:79;;:::i;:::-;10034:119;10192:1;10217:61;10270:7;10261:6;10250:9;10246:22;10217:61;:::i;:::-;10207:71;;10163:125;9950:345;;;;:::o;10301:474::-;10369:6;10377;10426:2;10414:9;10405:7;10401:23;10397:32;10394:119;;;10432:79;;:::i;:::-;10394:119;10552:1;10577:53;10622:7;10613:6;10602:9;10598:22;10577:53;:::i;:::-;10567:63;;10523:117;10679:2;10705:53;10750:7;10741:6;10730:9;10726:22;10705:53;:::i;:::-;10695:63;;10650:118;10301:474;;;;;:::o;10781:182::-;10921:34;10917:1;10909:6;10905:14;10898:58;10781:182;:::o;10969:366::-;11111:3;11132:67;11196:2;11191:3;11132:67;:::i;:::-;11125:74;;11208:93;11297:3;11208:93;:::i;:::-;11326:2;11321:3;11317:12;11310:19;;10969:366;;;:::o;11341:419::-;11507:4;11545:2;11534:9;11530:18;11522:26;;11594:9;11588:4;11584:20;11580:1;11569:9;11565:17;11558:47;11622:131;11748:4;11622:131;:::i;:::-;11614:139;;11341:419;;;:::o;11766:180::-;11814:77;11811:1;11804:88;11911:4;11908:1;11901:15;11935:4;11932:1;11925:15;11952:410;11992:7;12015:20;12033:1;12015:20;:::i;:::-;12010:25;;12049:20;12067:1;12049:20;:::i;:::-;12044:25;;12104:1;12101;12097:9;12126:30;12144:11;12126:30;:::i;:::-;12115:41;;12305:1;12296:7;12292:15;12289:1;12286:22;12266:1;12259:9;12239:83;12216:139;;12335:18;;:::i;:::-;12216:139;12000:362;11952:410;;;;:::o;12368:180::-;12416:77;12413:1;12406:88;12513:4;12510:1;12503:15;12537:4;12534:1;12527:15;12554:185;12594:1;12611:20;12629:1;12611:20;:::i;:::-;12606:25;;12645:20;12663:1;12645:20;:::i;:::-;12640:25;;12684:1;12674:35;;12689:18;;:::i;:::-;12674:35;12731:1;12728;12724:9;12719:14;;12554:185;;;;:::o;12745:332::-;12866:4;12904:2;12893:9;12889:18;12881:26;;12917:71;12985:1;12974:9;12970:17;12961:6;12917:71;:::i;:::-;12998:72;13066:2;13055:9;13051:18;13042:6;12998:72;:::i;:::-;12745:332;;;;;:::o;13083:180::-;13131:77;13128:1;13121:88;13228:4;13225:1;13218:15;13252:4;13249:1;13242:15;13269:320;13313:6;13350:1;13344:4;13340:12;13330:22;;13397:1;13391:4;13387:12;13418:18;13408:81;;13474:4;13466:6;13462:17;13452:27;;13408:81;13536:2;13528:6;13525:14;13505:18;13502:38;13499:84;;13555:18;;:::i;:::-;13499:84;13320:269;13269:320;;;:::o;13595:221::-;13735:34;13731:1;13723:6;13719:14;13712:58;13804:4;13799:2;13791:6;13787:15;13780:29;13595:221;:::o;13822:366::-;13964:3;13985:67;14049:2;14044:3;13985:67;:::i;:::-;13978:74;;14061:93;14150:3;14061:93;:::i;:::-;14179:2;14174:3;14170:12;14163:19;;13822:366;;;:::o;14194:419::-;14360:4;14398:2;14387:9;14383:18;14375:26;;14447:9;14441:4;14437:20;14433:1;14422:9;14418:17;14411:47;14475:131;14601:4;14475:131;:::i;:::-;14467:139;;14194:419;;;:::o;14619:180::-;14667:77;14664:1;14657:88;14764:4;14761:1;14754:15;14788:4;14785:1;14778:15;14805:233;14844:3;14867:24;14885:5;14867:24;:::i;:::-;14858:33;;14913:66;14906:5;14903:77;14900:103;;14983:18;;:::i;:::-;14900:103;15030:1;15023:5;15019:13;15012:20;;14805:233;;;:::o;15044:179::-;15184:31;15180:1;15172:6;15168:14;15161:55;15044:179;:::o;15229:366::-;15371:3;15392:67;15456:2;15451:3;15392:67;:::i;:::-;15385:74;;15468:93;15557:3;15468:93;:::i;:::-;15586:2;15581:3;15577:12;15570:19;;15229:366;;;:::o;15601:419::-;15767:4;15805:2;15794:9;15790:18;15782:26;;15854:9;15848:4;15844:20;15840:1;15829:9;15825:17;15818:47;15882:131;16008:4;15882:131;:::i;:::-;15874:139;;15601:419;;;:::o;16026:227::-;16166:34;16162:1;16154:6;16150:14;16143:58;16235:10;16230:2;16222:6;16218:15;16211:35;16026:227;:::o;16259:366::-;16401:3;16422:67;16486:2;16481:3;16422:67;:::i;:::-;16415:74;;16498:93;16587:3;16498:93;:::i;:::-;16616:2;16611:3;16607:12;16600:19;;16259:366;;;:::o;16631:419::-;16797:4;16835:2;16824:9;16820:18;16812:26;;16884:9;16878:4;16874:20;16870:1;16859:9;16855:17;16848:47;16912:131;17038:4;16912:131;:::i;:::-;16904:139;;16631:419;;;:::o;17056:320::-;17171:4;17209:2;17198:9;17194:18;17186:26;;17222:71;17290:1;17279:9;17275:17;17266:6;17222:71;:::i;:::-;17303:66;17365:2;17354:9;17350:18;17341:6;17303:66;:::i;:::-;17056:320;;;;;:::o;17382:191::-;17422:3;17441:20;17459:1;17441:20;:::i;:::-;17436:25;;17475:20;17493:1;17475:20;:::i;:::-;17470:25;;17518:1;17515;17511:9;17504:16;;17539:3;17536:1;17533:10;17530:36;;;17546:18;;:::i;:::-;17530:36;17382:191;;;;:::o;17579:180::-;17719:32;17715:1;17707:6;17703:14;17696:56;17579:180;:::o;17765:366::-;17907:3;17928:67;17992:2;17987:3;17928:67;:::i;:::-;17921:74;;18004:93;18093:3;18004:93;:::i;:::-;18122:2;18117:3;18113:12;18106:19;;17765:366;;;:::o;18137:419::-;18303:4;18341:2;18330:9;18326:18;18318:26;;18390:9;18384:4;18380:20;18376:1;18365:9;18361:17;18354:47;18418:131;18544:4;18418:131;:::i;:::-;18410:139;;18137:419;;;:::o;18562:171::-;18702:23;18698:1;18690:6;18686:14;18679:47;18562:171;:::o;18739:366::-;18881:3;18902:67;18966:2;18961:3;18902:67;:::i;:::-;18895:74;;18978:93;19067:3;18978:93;:::i;:::-;19096:2;19091:3;19087:12;19080:19;;18739:366;;;:::o;19111:419::-;19277:4;19315:2;19304:9;19300:18;19292:26;;19364:9;19358:4;19354:20;19350:1;19339:9;19335:17;19328:47;19392:131;19518:4;19392:131;:::i;:::-;19384:139;;19111:419;;;:::o;19536:172::-;19676:24;19672:1;19664:6;19660:14;19653:48;19536:172;:::o;19714:366::-;19856:3;19877:67;19941:2;19936:3;19877:67;:::i;:::-;19870:74;;19953:93;20042:3;19953:93;:::i;:::-;20071:2;20066:3;20062:12;20055:19;;19714:366;;;:::o;20086:419::-;20252:4;20290:2;20279:9;20275:18;20267:26;;20339:9;20333:4;20329:20;20325:1;20314:9;20310:17;20303:47;20367:131;20493:4;20367:131;:::i;:::-;20359:139;;20086:419;;;:::o;20511:224::-;20651:34;20647:1;20639:6;20635:14;20628:58;20720:7;20715:2;20707:6;20703:15;20696:32;20511:224;:::o;20741:366::-;20883:3;20904:67;20968:2;20963:3;20904:67;:::i;:::-;20897:74;;20980:93;21069:3;20980:93;:::i;:::-;21098:2;21093:3;21089:12;21082:19;;20741:366;;;:::o;21113:419::-;21279:4;21317:2;21306:9;21302:18;21294:26;;21366:9;21360:4;21356:20;21352:1;21341:9;21337:17;21330:47;21394:131;21520:4;21394:131;:::i;:::-;21386:139;;21113:419;;;:::o;21538:60::-;21566:3;21587:5;21580:12;;21538:60;;;:::o;21604:142::-;21654:9;21687:53;21705:34;21714:24;21732:5;21714:24;:::i;:::-;21705:34;:::i;:::-;21687:53;:::i;:::-;21674:66;;21604:142;;;:::o;21752:126::-;21802:9;21835:37;21866:5;21835:37;:::i;:::-;21822:50;;21752:126;;;:::o;21884:134::-;21942:9;21975:37;22006:5;21975:37;:::i;:::-;21962:50;;21884:134;;;:::o;22024:147::-;22119:45;22158:5;22119:45;:::i;:::-;22114:3;22107:58;22024:147;;:::o;22177:238::-;22278:4;22316:2;22305:9;22301:18;22293:26;;22329:79;22405:1;22394:9;22390:17;22381:6;22329:79;:::i;:::-;22177:238;;;;:::o;22421:143::-;22478:5;22509:6;22503:13;22494:22;;22525:33;22552:5;22525:33;:::i;:::-;22421:143;;;;:::o;22570:351::-;22640:6;22689:2;22677:9;22668:7;22664:23;22660:32;22657:119;;;22695:79;;:::i;:::-;22657:119;22815:1;22840:64;22896:7;22887:6;22876:9;22872:22;22840:64;:::i;:::-;22830:74;;22786:128;22570:351;;;;:::o;22927:348::-;23056:4;23094:2;23083:9;23079:18;23071:26;;23107:79;23183:1;23172:9;23168:17;23159:6;23107:79;:::i;:::-;23196:72;23264:2;23253:9;23249:18;23240:6;23196:72;:::i;:::-;22927:348;;;;;:::o;23281:137::-;23335:5;23366:6;23360:13;23351:22;;23382:30;23406:5;23382:30;:::i;:::-;23281:137;;;;:::o;23424:345::-;23491:6;23540:2;23528:9;23519:7;23515:23;23511:32;23508:119;;;23546:79;;:::i;:::-;23508:119;23666:1;23691:61;23744:7;23735:6;23724:9;23720:22;23691:61;:::i;:::-;23681:71;;23637:125;23424:345;;;;:::o;23775:225::-;23915:34;23911:1;23903:6;23899:14;23892:58;23984:8;23979:2;23971:6;23967:15;23960:33;23775:225;:::o;24006:366::-;24148:3;24169:67;24233:2;24228:3;24169:67;:::i;:::-;24162:74;;24245:93;24334:3;24245:93;:::i;:::-;24363:2;24358:3;24354:12;24347:19;;24006:366;;;:::o;24378:419::-;24544:4;24582:2;24571:9;24567:18;24559:26;;24631:9;24625:4;24621:20;24617:1;24606:9;24602:17;24595:47;24659:131;24785:4;24659:131;:::i;:::-;24651:139;;24378:419;;;:::o;24803:173::-;24943:25;24939:1;24931:6;24927:14;24920:49;24803:173;:::o;24982:366::-;25124:3;25145:67;25209:2;25204:3;25145:67;:::i;:::-;25138:74;;25221:93;25310:3;25221:93;:::i;:::-;25339:2;25334:3;25330:12;25323:19;;24982:366;;;:::o;25354:419::-;25520:4;25558:2;25547:9;25543:18;25535:26;;25607:9;25601:4;25597:20;25593:1;25582:9;25578:17;25571:47;25635:131;25761:4;25635:131;:::i;:::-;25627:139;;25354:419;;;:::o;25779:143::-;25836:5;25867:6;25861:13;25852:22;;25883:33;25910:5;25883:33;:::i;:::-;25779:143;;;;:::o;25928:351::-;25998:6;26047:2;26035:9;26026:7;26022:23;26018:32;26015:119;;;26053:79;;:::i;:::-;26015:119;26173:1;26198:64;26254:7;26245:6;26234:9;26230:22;26198:64;:::i;:::-;26188:74;;26144:128;25928:351;;;;:::o;26285:332::-;26406:4;26444:2;26433:9;26429:18;26421:26;;26457:71;26525:1;26514:9;26510:17;26501:6;26457:71;:::i;:::-;26538:72;26606:2;26595:9;26591:18;26582:6;26538:72;:::i;:::-;26285:332;;;;;:::o;26623:85::-;26668:7;26697:5;26686:16;;26623:85;;;:::o;26714:158::-;26772:9;26805:61;26823:42;26832:32;26858:5;26832:32;:::i;:::-;26823:42;:::i;:::-;26805:61;:::i;:::-;26792:74;;26714:158;;;:::o;26878:147::-;26973:45;27012:5;26973:45;:::i;:::-;26968:3;26961:58;26878:147;;:::o;27031:807::-;27280:4;27318:3;27307:9;27303:19;27295:27;;27332:71;27400:1;27389:9;27385:17;27376:6;27332:71;:::i;:::-;27413:72;27481:2;27470:9;27466:18;27457:6;27413:72;:::i;:::-;27495:80;27571:2;27560:9;27556:18;27547:6;27495:80;:::i;:::-;27585;27661:2;27650:9;27646:18;27637:6;27585:80;:::i;:::-;27675:73;27743:3;27732:9;27728:19;27719:6;27675:73;:::i;:::-;27758;27826:3;27815:9;27811:19;27802:6;27758:73;:::i;:::-;27031:807;;;;;;;;;:::o;27844:663::-;27932:6;27940;27948;27997:2;27985:9;27976:7;27972:23;27968:32;27965:119;;;28003:79;;:::i;:::-;27965:119;28123:1;28148:64;28204:7;28195:6;28184:9;28180:22;28148:64;:::i;:::-;28138:74;;28094:128;28261:2;28287:64;28343:7;28334:6;28323:9;28319:22;28287:64;:::i;:::-;28277:74;;28232:129;28400:2;28426:64;28482:7;28473:6;28462:9;28458:22;28426:64;:::i;:::-;28416:74;;28371:129;27844:663;;;;;:::o;28513:332::-;28634:4;28672:2;28661:9;28657:18;28649:26;;28685:71;28753:1;28742:9;28738:17;28729:6;28685:71;:::i;:::-;28766:72;28834:2;28823:9;28819:18;28810:6;28766:72;:::i;:::-;28513:332;;;;;:::o;28851:223::-;28991:34;28987:1;28979:6;28975:14;28968:58;29060:6;29055:2;29047:6;29043:15;29036:31;28851:223;:::o;29080:366::-;29222:3;29243:67;29307:2;29302:3;29243:67;:::i;:::-;29236:74;;29319:93;29408:3;29319:93;:::i;:::-;29437:2;29432:3;29428:12;29421:19;;29080:366;;;:::o;29452:419::-;29618:4;29656:2;29645:9;29641:18;29633:26;;29705:9;29699:4;29695:20;29691:1;29680:9;29676:17;29669:47;29733:131;29859:4;29733:131;:::i;:::-;29725:139;;29452:419;;;:::o;29877:221::-;30017:34;30013:1;30005:6;30001:14;29994:58;30086:4;30081:2;30073:6;30069:15;30062:29;29877:221;:::o;30104:366::-;30246:3;30267:67;30331:2;30326:3;30267:67;:::i;:::-;30260:74;;30343:93;30432:3;30343:93;:::i;:::-;30461:2;30456:3;30452:12;30445:19;;30104:366;;;:::o;30476:419::-;30642:4;30680:2;30669:9;30665:18;30657:26;;30729:9;30723:4;30719:20;30715:1;30704:9;30700:17;30693:47;30757:131;30883:4;30757:131;:::i;:::-;30749:139;;30476:419;;;:::o;30901:224::-;31041:34;31037:1;31029:6;31025:14;31018:58;31110:7;31105:2;31097:6;31093:15;31086:32;30901:224;:::o;31131:366::-;31273:3;31294:67;31358:2;31353:3;31294:67;:::i;:::-;31287:74;;31370:93;31459:3;31370:93;:::i;:::-;31488:2;31483:3;31479:12;31472:19;;31131:366;;;:::o;31503:419::-;31669:4;31707:2;31696:9;31692:18;31684:26;;31756:9;31750:4;31746:20;31742:1;31731:9;31727:17;31720:47;31784:131;31910:4;31784:131;:::i;:::-;31776:139;;31503:419;;;:::o;31928:222::-;32068:34;32064:1;32056:6;32052:14;32045:58;32137:5;32132:2;32124:6;32120:15;32113:30;31928:222;:::o;32156:366::-;32298:3;32319:67;32383:2;32378:3;32319:67;:::i;:::-;32312:74;;32395:93;32484:3;32395:93;:::i;:::-;32513:2;32508:3;32504:12;32497:19;;32156:366;;;:::o;32528:419::-;32694:4;32732:2;32721:9;32717:18;32709:26;;32781:9;32775:4;32771:20;32767:1;32756:9;32752:17;32745:47;32809:131;32935:4;32809:131;:::i;:::-;32801:139;;32528:419;;;:::o;32953:228::-;33093:34;33089:1;33081:6;33077:14;33070:58;33162:11;33157:2;33149:6;33145:15;33138:36;32953:228;:::o;33187:366::-;33329:3;33350:67;33414:2;33409:3;33350:67;:::i;:::-;33343:74;;33426:93;33515:3;33426:93;:::i;:::-;33544:2;33539:3;33535:12;33528:19;;33187:366;;;:::o;33559:419::-;33725:4;33763:2;33752:9;33748:18;33740:26;;33812:9;33806:4;33802:20;33798:1;33787:9;33783:17;33776:47;33840:131;33966:4;33840:131;:::i;:::-;33832:139;;33559:419;;;:::o;33984:177::-;34124:29;34120:1;34112:6;34108:14;34101:53;33984:177;:::o;34167:366::-;34309:3;34330:67;34394:2;34389:3;34330:67;:::i;:::-;34323:74;;34406:93;34495:3;34406:93;:::i;:::-;34524:2;34519:3;34515:12;34508:19;;34167:366;;;:::o;34539:419::-;34705:4;34743:2;34732:9;34728:18;34720:26;;34792:9;34786:4;34782:20;34778:1;34767:9;34763:17;34756:47;34820:131;34946:4;34820:131;:::i;:::-;34812:139;;34539:419;;;:::o;34964:176::-;35104:28;35100:1;35092:6;35088:14;35081:52;34964:176;:::o;35146:366::-;35288:3;35309:67;35373:2;35368:3;35309:67;:::i;:::-;35302:74;;35385:93;35474:3;35385:93;:::i;:::-;35503:2;35498:3;35494:12;35487:19;;35146:366;;;:::o;35518:419::-;35684:4;35722:2;35711:9;35707:18;35699:26;;35771:9;35765:4;35761:20;35757:1;35746:9;35742:17;35735:47;35799:131;35925:4;35799:131;:::i;:::-;35791:139;;35518:419;;;:::o;35943:180::-;35991:77;35988:1;35981:88;36088:4;36085:1;36078:15;36112:4;36109:1;36102:15;36129:114;36196:6;36230:5;36224:12;36214:22;;36129:114;;;:::o;36249:184::-;36348:11;36382:6;36377:3;36370:19;36422:4;36417:3;36413:14;36398:29;;36249:184;;;;:::o;36439:132::-;36506:4;36529:3;36521:11;;36559:4;36554:3;36550:14;36542:22;;36439:132;;;:::o;36577:108::-;36654:24;36672:5;36654:24;:::i;:::-;36649:3;36642:37;36577:108;;:::o;36691:179::-;36760:10;36781:46;36823:3;36815:6;36781:46;:::i;:::-;36859:4;36854:3;36850:14;36836:28;;36691:179;;;;:::o;36876:113::-;36946:4;36978;36973:3;36969:14;36961:22;;36876:113;;;:::o;37025:732::-;37144:3;37173:54;37221:5;37173:54;:::i;:::-;37243:86;37322:6;37317:3;37243:86;:::i;:::-;37236:93;;37353:56;37403:5;37353:56;:::i;:::-;37432:7;37463:1;37448:284;37473:6;37470:1;37467:13;37448:284;;;37549:6;37543:13;37576:63;37635:3;37620:13;37576:63;:::i;:::-;37569:70;;37662:60;37715:6;37662:60;:::i;:::-;37652:70;;37508:224;37495:1;37492;37488:9;37483:14;;37448:284;;;37452:14;37748:3;37741:10;;37149:608;;;37025:732;;;;:::o;37763:831::-;38026:4;38064:3;38053:9;38049:19;38041:27;;38078:71;38146:1;38135:9;38131:17;38122:6;38078:71;:::i;:::-;38159:80;38235:2;38224:9;38220:18;38211:6;38159:80;:::i;:::-;38286:9;38280:4;38276:20;38271:2;38260:9;38256:18;38249:48;38314:108;38417:4;38408:6;38314:108;:::i;:::-;38306:116;;38432:72;38500:2;38489:9;38485:18;38476:6;38432:72;:::i;:::-;38514:73;38582:3;38571:9;38567:19;38558:6;38514:73;:::i;:::-;37763:831;;;;;;;;:::o;38600:147::-;38701:11;38738:3;38723:18;;38600:147;;;;:::o;38753:114::-;;:::o;38873:398::-;39032:3;39053:83;39134:1;39129:3;39053:83;:::i;:::-;39046:90;;39145:93;39234:3;39145:93;:::i;:::-;39263:1;39258:3;39254:11;39247:18;;38873:398;;;:::o;39277:379::-;39461:3;39483:147;39626:3;39483:147;:::i;:::-;39476:154;;39647:3;39640:10;;39277:379;;;:::o;39662:225::-;39802:34;39798:1;39790:6;39786:14;39779:58;39871:8;39866:2;39858:6;39854:15;39847:33;39662:225;:::o;39893:366::-;40035:3;40056:67;40120:2;40115:3;40056:67;:::i;:::-;40049:74;;40132:93;40221:3;40132:93;:::i;:::-;40250:2;40245:3;40241:12;40234:19;;39893:366;;;:::o;40265:419::-;40431:4;40469:2;40458:9;40454:18;40446:26;;40518:9;40512:4;40508:20;40504:1;40493:9;40489:17;40482:47;40546:131;40672:4;40546:131;:::i;:::-;40538:139;;40265:419;;;:::o;40690:194::-;40730:4;40750:20;40768:1;40750:20;:::i;:::-;40745:25;;40784:20;40802:1;40784:20;:::i;:::-;40779:25;;40828:1;40825;40821:9;40813:17;;40852:1;40846:4;40843:11;40840:37;;;40857:18;;:::i;:::-;40840:37;40690:194;;;;:::o
Swarm Source
ipfs://a20bee1dfcf826b2ad9c1c80d7632cf4ee8fba5dd8d4eb5d8ab694b11660a1af
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.