Latest 25 from a total of 2,324 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 23513798 | 35 hrs ago | IN | 0 ETH | 0.00003202 | ||||
Approve | 23512796 | 38 hrs ago | IN | 0 ETH | 0.00002882 | ||||
Approve | 23510175 | 47 hrs ago | IN | 0 ETH | 0.00000602 | ||||
Approve | 23504746 | 2 days ago | IN | 0 ETH | 0.00003012 | ||||
Approve | 23494537 | 4 days ago | IN | 0 ETH | 0.00000754 | ||||
Transfer | 23490953 | 4 days ago | IN | 0 ETH | 0.00027598 | ||||
Approve | 23489642 | 4 days ago | IN | 0 ETH | 0.00001965 | ||||
Approve | 23486549 | 5 days ago | IN | 0 ETH | 0.00001568 | ||||
Approve | 23484936 | 5 days ago | IN | 0 ETH | 0.00001623 | ||||
Approve | 23484936 | 5 days ago | IN | 0 ETH | 0.00002833 | ||||
Approve | 23469229 | 7 days ago | IN | 0 ETH | 0.00069112 | ||||
Approve | 23434610 | 12 days ago | IN | 0 ETH | 0.00005691 | ||||
Approve | 23426133 | 13 days ago | IN | 0 ETH | 0.00006779 | ||||
Approve | 23421255 | 14 days ago | IN | 0 ETH | 0.00001263 | ||||
Approve | 23419235 | 14 days ago | IN | 0 ETH | 0.00010241 | ||||
Approve | 23418924 | 14 days ago | IN | 0 ETH | 0.00003242 | ||||
Approve | 23418918 | 14 days ago | IN | 0 ETH | 0.00003115 | ||||
Transfer | 23411082 | 15 days ago | IN | 0 ETH | 0.00003592 | ||||
Approve | 23403016 | 16 days ago | IN | 0 ETH | 0.00001342 | ||||
Transfer | 23399454 | 17 days ago | IN | 0 ETH | 0.00037147 | ||||
Approve | 23389639 | 18 days ago | IN | 0 ETH | 0.00030059 | ||||
Transfer | 23385869 | 19 days ago | IN | 0 ETH | 0.0000675 | ||||
Approve | 23383705 | 19 days ago | IN | 0 ETH | 0.00009241 | ||||
Approve | 23382692 | 19 days ago | IN | 0 ETH | 0.00002067 | ||||
Approve | 23382689 | 19 days ago | IN | 0 ETH | 0.00002221 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 23513799 | 35 hrs ago | 0.00472725 ETH | ||||
Transfer | 23513799 | 35 hrs ago | 0.00472725 ETH | ||||
Transfer | 23512823 | 38 hrs ago | 0.00473362 ETH | ||||
Transfer | 23512823 | 38 hrs ago | 0.00473362 ETH | ||||
Transfer | 23510175 | 47 hrs ago | 0.00473362 ETH | ||||
Transfer | 23510175 | 47 hrs ago | 0.00473362 ETH | ||||
Transfer | 23490953 | 4 days ago | 0.00473932 ETH | ||||
Transfer | 23490953 | 4 days ago | 0.00473932 ETH | ||||
Transfer | 23489645 | 4 days ago | 0.00474796 ETH | ||||
Transfer | 23489645 | 4 days ago | 0.00474796 ETH | ||||
Transfer | 23489642 | 4 days ago | 0.00475663 ETH | ||||
Transfer | 23489642 | 4 days ago | 0.00475663 ETH | ||||
Transfer | 23469229 | 7 days ago | 0.00476642 ETH | ||||
Transfer | 23469229 | 7 days ago | 0.00476642 ETH | ||||
Transfer | 23427893 | 13 days ago | 0.00475576 ETH | ||||
Transfer | 23427893 | 13 days ago | 0.00475576 ETH | ||||
Transfer | 23426135 | 13 days ago | 0.00476789 ETH | ||||
Transfer | 23426135 | 13 days ago | 0.00476789 ETH | ||||
Transfer | 23425690 | 13 days ago | 0.00478376 ETH | ||||
Transfer | 23425690 | 13 days ago | 0.00478376 ETH | ||||
Transfer | 23421255 | 14 days ago | 0.00478376 ETH | ||||
Transfer | 23421255 | 14 days ago | 0.00478376 ETH | ||||
Transfer | 23419235 | 14 days ago | 0.0047959 ETH | ||||
Transfer | 23419235 | 14 days ago | 0.0047959 ETH | ||||
Transfer | 23418924 | 14 days ago | 0.00501134 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
YieldStone
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-05-27 */ // SPDX-License-Identifier: MIT /** YieldStone: AI-Powered Real Estate & Decentralized Compute YieldStone merges AI-driven analytics, decentralized GPU compute, and tokenized real-world assets into one unified ecosystem—delivering the world’s first AI-powered Real-World Asset (RWA) fund. Our mission is straightforward: combine tangible asset stability with innovative Web3 tech and scalable AI infrastructure. https://www.yieldstone.ai/ https://t.me/Yieldstoneai https://x.com/yieldstone */ pragma solidity ^0.8.30; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a abi mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); 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 updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { 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 {} } interface IUniswapV2Factory { 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 IUniswapV2Router02 { 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 YieldStone is ERC20, Ownable { IUniswapV2Router02 private immutable _uniswapV2Router; IUniswapV2Factory private immutable _uniswapV2Factory; address public uniswapV2Pair; bool private _swapping = false; uint256 private _swapLastTimestamp = 0; uint256 public swapAmount; uint256 public swapEveryBlock; uint256 public maxTransaction; uint256 public maxWallet; uint256 public buyFee; uint256 public sellFee; address public taxWallet; bool public swapEnabled = false; bool public limitsEnabled = true; bool public tradingEnabled = false; mapping(address => bool) public blacklist; mapping(address => bool) public isExcludedFromFees; mapping(address => bool) public isExcludedMaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; event TradingEnabled(uint256 blockNumber); event LimitsRemoved(uint256 blockNumber); event SetAutomatedMarketMakerPair(address indexed pair, bool value); event SwapUpdated(bool swapEnabled, uint256 swapAmount, uint256 swapEveryBlock); event MaxTransactionUpdated(uint256 maxTransaction); event MaxWalletUpdated(uint256 maxWallet); event BuyFeeUpdated(uint256 buyFee); event SellFeeUpdated(uint256 sellFee); event TaxWalletUpdated(address indexed wallet); event MaxWalletExcluded(address indexed wallet, bool excluded); event FeeExcluded(address indexed wallet, bool excluded); event AddedToBlacklist(address indexed wallet); event RemoveFromBlacklist(address indexed wallet); constructor() ERC20("YieldStone", "YIELD") { _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _uniswapV2Factory = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); excludeFromMaxTransaction(address(_uniswapV2Router), true); maxTransaction = 1_000_000 * 10 ** decimals(); maxWallet = 1_000_000 * 10 ** decimals(); swapAmount = 100_000 * 10 ** decimals(); swapEveryBlock = 1; buyFee = 30; sellFee = 30; taxWallet = address(0x821030317dcc9E766FBfE3DDd4785d83E688206d); excludeFromFees(owner(), true); excludeFromFees(taxWallet, true); excludeFromFees(address(this), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(taxWallet, true); excludeFromMaxTransaction(address(this), true); _mint(msg.sender, 100_000_000 * 10 ** decimals()); } receive() external payable {} /** * @notice Open Trading for the token * @dev onlyOwner, emit TradingEnabled event */ function openTrading() external onlyOwner { require( !tradingEnabled, "YieldStone: Trading is active" ); address pair = _uniswapV2Factory.getPair(_uniswapV2Router.WETH(), address(this)); setAutomatedMarketMakerPair(pair, true); excludeFromMaxTransaction(pair, true); uniswapV2Pair = pair; tradingEnabled = true; swapEnabled = true; emit TradingEnabled(block.number); } /** * @notice Set AMM pair for token * @dev onlyOwner, emit TradingEnabled event * @param _pair address of the pair * @param _value If the pair is AMM pair or not */ function setAutomatedMarketMakerPair( address _pair, bool _value ) public onlyOwner { require( _pair != address(0), "YieldStone: Cannot set zero address" ); require( _pair != uniswapV2Pair, "YieldStone: Cannot delete AMM pair" ); require( !blacklist[_pair], "YieldStone: Cannot add pair which exist in the blacklist" ); automatedMarketMakerPairs[_pair] = _value; emit SetAutomatedMarketMakerPair(_pair, _value); } /** * @notice Remove the max wallet and max transaction limits * @dev onlyOwner, emit LimitsRemoved event */ function disableLimits() external onlyOwner { limitsEnabled = false; emit LimitsRemoved(block.number); } /** * @notice Update Swap enable and amount * @dev onlyOwner, emit SwapUpdated event * @param _swapEnabled Swap enabled or not * @param _swapAmount Swap amount * @param _swapEveryBlock Swap every X blocks */ function updateSwap( bool _swapEnabled, uint256 _swapAmount, uint256 _swapEveryBlock ) external onlyOwner { require( _swapAmount >= (totalSupply() * 1) / 100000 / 1e18, "YieldStone: Cannot swap amount be lower than 0.001% total supply" ); require( _swapAmount <= (totalSupply() * 5) / 1000 / 1e18, "YieldStone: Cannot swap amount be higher than 0.5% total supply" ); swapEnabled = _swapEnabled; swapAmount = _swapAmount * (10 ** 18); swapEveryBlock = _swapEveryBlock; emit SwapUpdated(swapEnabled, swapAmount, swapEveryBlock); } /** * @notice Update max transaction limits * @param _maxTransaction amount of tokens max transfer per transaction */ function updateMaxTransaction( uint256 _maxTransaction ) external onlyOwner { require( _maxTransaction >= ((totalSupply() * 15) / 1000) / 1e18, "YieldStone: Cannot max transaction be lower than 1.5%" ); maxTransaction = _maxTransaction * (10 ** 18); emit MaxTransactionUpdated(maxTransaction); } /** * @notice Update max wallet limits * @dev onlyOwner, emit MaxWalletUpdated event * @param _maxWallet amount of tokens max hold on wallet */ function updateMaxWallet( uint256 _maxWallet ) external onlyOwner { require( _maxWallet >= ((totalSupply() * 15) / 1000) / 1e18, "YieldStone: Cannot max wallet be lower than 1.5%" ); maxWallet = _maxWallet * (10 ** 18); emit MaxWalletUpdated(maxWallet); } /** * @notice Update buy fee * @dev onlyOwner, emit BuyFeeUpdated event * @param _buyFee buy fee in percent */ function updateBuyFee( uint256 _buyFee ) external onlyOwner { require( _buyFee <= 30, "YieldStone: Cannot buy fee be higher than 30%" ); buyFee = _buyFee; emit BuyFeeUpdated(buyFee); } /** * @notice Update sell token fee * @dev onlyOwner, emit SellFeeUpdated event * @param _sellFee sell fee in percent */ function updateSellFee( uint256 _sellFee ) external onlyOwner { require( _sellFee <= 30, "YieldStone: Cannot sell fee be higher than 30%" ); sellFee = _sellFee; emit SellFeeUpdated(sellFee); } /** * @notice Update tax wallet * @dev onlyOwner, emit TaxWalletUpdated event * @param _taxWallet address of tax wallet */ function updateTaxWallet( address _taxWallet ) external onlyOwner { require( _taxWallet != address(0), "YieldStone: Cannot set zero address" ); taxWallet = _taxWallet; emit TaxWalletUpdated(taxWallet); } /** * @notice Add wallets to blacklist * @dev onlyOwner, emit AddedToBlacklist event * @param _wallets addresses of wallet */ function addToBlackList( address[] calldata _wallets ) external onlyOwner { for (uint i = 0; i < _wallets.length; i++) { require( _wallets[i] != address(0), "YieldStone: Cannot set zero address" ); require( !automatedMarketMakerPairs[_wallets[i]], "YieldStone: Cannot add to AMM pair to blacklist" ); blacklist[_wallets[i]] = true; emit AddedToBlacklist(_wallets[i]); } } /** * @notice Remove wallets from blacklist * @dev onlyOwner, emit RemoveFromBlacklist event * @param _wallets addresses of wallet */ function removeFromBlackList( address[] calldata _wallets ) external onlyOwner { for (uint i = 0; i < _wallets.length; i++) { require( _wallets[i] != address(0), "YieldStone: Cannot set zero address" ); blacklist[_wallets[i]] = false; emit RemoveFromBlacklist(_wallets[i]); } } /** * @notice Exclude wallet from max transaction * @dev onlyOwner, emits MaxWalletExcluded event * @param _wallet address of the wallet * @param _excluded exclude address or not */ function excludeFromMaxTransaction( address _wallet, bool _excluded ) public onlyOwner { require( _wallet != address(0), "YieldStone: Cannot set zero address" ); isExcludedMaxTransaction[_wallet] = _excluded; emit MaxWalletExcluded(_wallet, _excluded); } /** * @notice Exclude wallet from fees * @dev onlyOwner, emit FeeExcluded event * @param _wallet address of the wallet * @param _excluded exclude address or not */ function excludeFromFees( address _wallet, bool _excluded ) public onlyOwner { require( _wallet != address(0), "YieldStone: Cannot set zero address" ); isExcludedFromFees[_wallet] = _excluded; emit FeeExcluded(_wallet, _excluded); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "YieldStone: Cannot set zero address"); require(to != address(0), "YieldStone: Cannot set zero address"); require(!blacklist[from] && !blacklist[to], "YieldStone: Wallet in the blacklisted"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 feeAmount = 0; if (!_swapping && !isExcludedFromFees[from] && !isExcludedFromFees[to]) { if (automatedMarketMakerPairs[to] && sellFee > 0) { feeAmount = (amount * sellFee) / 100; } else if (automatedMarketMakerPairs[from] && buyFee > 0) { feeAmount = (amount * buyFee) / 100; } amount -= feeAmount; } if (limitsEnabled) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_swapping ) { if (!tradingEnabled) { require( isExcludedFromFees[from] || isExcludedFromFees[to], "YieldStone: Trading is disabled" ); } if (automatedMarketMakerPairs[from] && !isExcludedMaxTransaction[to]) { require( amount <= maxTransaction, "YieldStone: Buy transfer amount exceeds the max tx" ); require( amount + balanceOf(to) <= maxWallet, "YieldStone: Max wallet is exceeded" ); } else if (automatedMarketMakerPairs[to] && !isExcludedMaxTransaction[from]) { require( amount <= maxTransaction, "YieldStone: Sell transfer amount exceeds the max tx" ); } else if (!isExcludedMaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "YieldStone: Max wallet is exceeded" ); } } } uint256 contractBalance = balanceOf(address(this)); uint256 nextSwapTimestamp = _swapLastTimestamp + (swapEveryBlock * 12); bool canSwap = swapEnabled && contractBalance >= swapAmount && block.timestamp >= nextSwapTimestamp; if ( canSwap && !_swapping && !automatedMarketMakerPairs[from] && !isExcludedFromFees[from] && !isExcludedFromFees[to] ) { _swapping = true; swapBack(swapAmount); _swapping = false; } if (feeAmount > 0) { super._transfer(from, address(this), feeAmount); } super._transfer(from, to, amount); } function swapBack(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); _swapLastTimestamp = block.timestamp; bool success; (success,) = address(taxWallet).call{value : address(this).balance}(""); } function withdraw(address _to) external onlyOwner { payable(_to).transfer(address(this).balance); } function withdrawToken(address _token, address _to) external onlyOwner { uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); IERC20(_token).transfer(_to, _contractBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"}],"name":"AddedToBlacklist","type":"event"},{"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":"buyFee","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"FeeExcluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransaction","type":"uint256"}],"name":"MaxTransactionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxWalletExcluded","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":"wallet","type":"address"}],"name":"RemoveFromBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapEnabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapEveryBlock","type":"uint256"}],"name":"SwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"}],"name":"TaxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockNumber","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"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"addToBlackList","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEveryBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransaction","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"},{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapEveryBlock","type":"uint256"}],"name":"updateSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526006805460ff60a01b191690555f600755600e805462ffffff60a01b1916600160a81b179055348015610035575f5ffd5b506040518060400160405280600a8152602001695969656c6453746f6e6560b01b81525060405180604001604052806005815260200164165251531160da1b815250816003908161008691906105cb565b50600461009382826105cb565b5050506100ac6100a761021760201b60201c565b61021b565b737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f60a0526100e990600161026c565b6100f56012600a61077e565b61010290620f4240610793565b600a55601261011290600a61077e565b61011f90620f4240610793565b600b5561012e6012600a61077e565b61013b90620186a0610793565b6008556001600955601e600c819055600d55600e80546001600160a01b03191673821030317dcc9e766fbfe3ddd4785d83e688206d17905561018f6101886005546001600160a01b031690565b6001610366565b600e546101a6906001600160a01b03166001610366565b6101b1306001610366565b6101cd6101c66005546001600160a01b031690565b600161026c565b600e546101e4906001600160a01b0316600161026c565b6101ef30600161026c565b610212336101ff6012600a61077e565b61020d906305f5e100610793565b610453565b6107bd565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b031633146102b85760405162461bcd60e51b815260206004820181905260248201525f5160206133705f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b0382166103075760405162461bcd60e51b815260206004820152602360248201525f5160206133905f395f51905f5260448201526265737360e81b60648201526084016102af565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f6bad460a4857213327743a019dab27190e04974d74986f8d2a9d2777c064ef8091015b60405180910390a25050565b6005546001600160a01b031633146103ad5760405162461bcd60e51b815260206004820181905260248201525f5160206133705f395f51905f5260448201526064016102af565b6001600160a01b0382166103fc5760405162461bcd60e51b815260206004820152602360248201525f5160206133905f395f51905f5260448201526265737360e81b60648201526084016102af565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f37e25ecab1e1c056f6f2b60cdfff33e280e2205b5febdf36421391b32cf95fc0910161035a565b6001600160a01b0382166104a95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016102af565b8060025f8282546104ba91906107aa565b90915550506001600160a01b0382165f90815260208190526040812080548392906104e69084906107aa565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061055c57607f821691505b60208210810361057a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561052f57805f5260205f20601f840160051c810160208510156105a55750805b601f840160051c820191505b818110156105c4575f81556001016105b1565b5050505050565b81516001600160401b038111156105e4576105e4610534565b6105f8816105f28454610548565b84610580565b6020601f82116001811461062a575f83156106135750848201515b5f19600385901b1c1916600184901b1784556105c4565b5f84815260208120601f198516915b828110156106595787850151825560209485019460019092019101610639565b508482101561067657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156106d4578085048111156106b8576106b8610685565b60018416156106c657908102905b60019390931c92800261069d565b935093915050565b5f826106ea57506001610778565b816106f657505f610778565b816001811461070c576002811461071657610732565b6001915050610778565b60ff84111561072757610727610685565b50506001821b610778565b5060208310610133831016604e8410600b8410161715610755575081810a610778565b6107615f198484610699565b805f190482111561077457610774610685565b0290505b92915050565b5f61078c60ff8416836106dc565b9392505050565b808202811582820484141761077857610778610685565b8082018082111561077857610778610685565b60805160a051612b7d6107f35f395f6114ea01525f81816115190152818161255f0152818161261601526126520152612b7d5ff3fe608060405260043610610262575f3560e01c80636ddd17131161013f578063c0246668116100b3578063ddc8cb4e11610078578063ddc8cb4e1461074c578063f2fde38b1461076b578063f8b45b051461078a578063f928364c1461079f578063f9f92be4146107b3578063ff897570146107e1575f5ffd5b8063c0246668146106ab578063c3f70b52146106ca578063c9567bf9146106df578063d3a0c81d146106f3578063dd62ed3e14610708575f5ffd5b80638da5cb5b116101045780638da5cb5b146105ef57806395d89b411461060c5780639a7a23d614610620578063a457c2d71461063f578063a9059cbb1461065e578063b62496f51461067d575f5ffd5b80636ddd17131461054957806370a0823114610569578063715018a61461059d57806374c9f603146105b15780637571336a146105d0575f5ffd5b8063313ce567116101d6578063467abe0a1161019b578063467abe0a1461048957806347062402146104a857806349bd5a5e146104bd5780634ada218b146104dc5780634fbee193146104fc57806351cff8d91461052a575f5ffd5b8063313ce567146103e257806331f4ee03146103fd5780633582ad231461042b578063395093511461044b5780633aeac4e11461046a575f5ffd5b80631d933a4a116102275780631d933a4a1461032457806323b872dd146103435780632926e227146103625780632b14ca56146103815780632dc0562d146103965780632e8fa821146103cd575f5ffd5b80630517d13d1461026d57806306fdde031461028e578063095ea7b3146102b857806318160ddd146102e75780631c499ab014610305575f5ffd5b3661026957005b5f5ffd5b348015610278575f5ffd5b5061028c610287366004612717565b610800565b005b348015610299575f5ffd5b506102a2610922565b6040516102af919061272e565b60405180910390f35b3480156102c3575f5ffd5b506102d76102d2366004612777565b6109b2565b60405190151581526020016102af565b3480156102f2575f5ffd5b506002545b6040519081526020016102af565b348015610310575f5ffd5b5061028c61031f366004612717565b6109c8565b34801561032f575f5ffd5b5061028c61033e366004612717565b610ad5565b34801561034e575f5ffd5b506102d761035d3660046127a1565b610b9c565b34801561036d575f5ffd5b5061028c61037c3660046127df565b610c44565b34801561038c575f5ffd5b506102f7600d5481565b3480156103a1575f5ffd5b50600e546103b5906001600160a01b031681565b6040516001600160a01b0390911681526020016102af565b3480156103d8575f5ffd5b506102f760085481565b3480156103ed575f5ffd5b50604051601281526020016102af565b348015610408575f5ffd5b506102d7610417366004612850565b60116020525f908152604090205460ff1681565b348015610436575f5ffd5b50600e546102d790600160a81b900460ff1681565b348015610456575f5ffd5b506102d7610465366004612777565b610d81565b348015610475575f5ffd5b5061028c610484366004612872565b610dbc565b348015610494575f5ffd5b5061028c6104a3366004612717565b610ec8565b3480156104b3575f5ffd5b506102f7600c5481565b3480156104c8575f5ffd5b506006546103b5906001600160a01b031681565b3480156104e7575f5ffd5b50600e546102d790600160b01b900460ff1681565b348015610507575f5ffd5b506102d7610516366004612850565b60106020525f908152604090205460ff1681565b348015610535575f5ffd5b5061028c610544366004612850565b610f8e565b348015610554575f5ffd5b50600e546102d790600160a01b900460ff1681565b348015610574575f5ffd5b506102f7610583366004612850565b6001600160a01b03165f9081526020819052604090205490565b3480156105a8575f5ffd5b5061028c610fee565b3480156105bc575f5ffd5b5061028c6105cb366004612850565b611023565b3480156105db575f5ffd5b5061028c6105ea3660046128b6565b6110bc565b3480156105fa575f5ffd5b506005546001600160a01b03166103b5565b348015610617575f5ffd5b506102a261116b565b34801561062b575f5ffd5b5061028c61063a3660046128b6565b61117a565b34801561064a575f5ffd5b506102d7610659366004612777565b611318565b348015610669575f5ffd5b506102d7610678366004612777565b6113b0565b348015610688575f5ffd5b506102d7610697366004612850565b60126020525f908152604090205460ff1681565b3480156106b6575f5ffd5b5061028c6106c53660046128b6565b6113bc565b3480156106d5575f5ffd5b506102f7600a5481565b3480156106ea575f5ffd5b5061028c611463565b3480156106fe575f5ffd5b506102f760095481565b348015610713575f5ffd5b506102f7610722366004612872565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610757575f5ffd5b5061028c6107663660046128e2565b61167d565b348015610776575f5ffd5b5061028c610785366004612850565b611885565b348015610795575f5ffd5b506102f7600b5481565b3480156107aa575f5ffd5b5061028c611920565b3480156107be575f5ffd5b506102d76107cd366004612850565b600f6020525f908152604090205460ff1681565b3480156107ec575f5ffd5b5061028c6107fb3660046127df565b61198c565b6005546001600160a01b031633146108335760405162461bcd60e51b815260040161082a90612914565b60405180910390fd5b670de0b6b3a76400006103e861084860025490565b61085390600f61295d565b61085d9190612974565b6108679190612974565b8110156108d45760405162461bcd60e51b815260206004820152603560248201527f5969656c6453746f6e653a2043616e6e6f74206d6178207472616e73616374696044820152746f6e206265206c6f776572207468616e20312e352560581b606482015260840161082a565b6108e681670de0b6b3a764000061295d565b600a8190556040519081527fcc18a23b5455befc64930dd79aa26a968e67d6953c8c9b683acf16d4c26fff5c906020015b60405180910390a150565b60606003805461093190612993565b80601f016020809104026020016040519081016040528092919081815260200182805461095d90612993565b80156109a85780601f1061097f576101008083540402835291602001916109a8565b820191905f5260205f20905b81548152906001019060200180831161098b57829003601f168201915b5050505050905090565b5f6109be338484611b70565b5060015b92915050565b6005546001600160a01b031633146109f25760405162461bcd60e51b815260040161082a90612914565b670de0b6b3a76400006103e8610a0760025490565b610a1290600f61295d565b610a1c9190612974565b610a269190612974565b811015610a8e5760405162461bcd60e51b815260206004820152603060248201527f5969656c6453746f6e653a2043616e6e6f74206d61782077616c6c657420626560448201526f206c6f776572207468616e20312e352560801b606482015260840161082a565b610aa081670de0b6b3a764000061295d565b600b8190556040519081527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace90602001610917565b6005546001600160a01b03163314610aff5760405162461bcd60e51b815260040161082a90612914565b601e811115610b675760405162461bcd60e51b815260206004820152602e60248201527f5969656c6453746f6e653a2043616e6e6f742073656c6c20666565206265206860448201526d6967686572207468616e2033302560901b606482015260840161082a565b600d8190556040518181527f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e78090602001610917565b5f610ba8848484611c93565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c2c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161082a565b610c398533858403611b70565b506001949350505050565b6005546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161082a90612914565b5f5b81811015610d7c575f838383818110610c8b57610c8b6129cb565b9050602002016020810190610ca09190612850565b6001600160a01b031603610cc65760405162461bcd60e51b815260040161082a906129df565b5f600f5f858585818110610cdc57610cdc6129cb565b9050602002016020810190610cf19190612850565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055828282818110610d2a57610d2a6129cb565b9050602002016020810190610d3f9190612850565b6001600160a01b03167f3afada3900b4909463d8a846fbdc12d6b5c4e8030bd6bc1215822ecee62357ba60405160405180910390a2600101610c70565b505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109be918590610db7908690612a22565b611b70565b6005546001600160a01b03163314610de65760405162461bcd60e51b815260040161082a90612914565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e2a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4e9190612a35565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec29190612a4c565b50505050565b6005546001600160a01b03163314610ef25760405162461bcd60e51b815260040161082a90612914565b601e811115610f595760405162461bcd60e51b815260206004820152602d60248201527f5969656c6453746f6e653a2043616e6e6f74206275792066656520626520686960448201526c67686572207468616e2033302560981b606482015260840161082a565b600c8190556040518181527f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca390602001610917565b6005546001600160a01b03163314610fb85760405162461bcd60e51b815260040161082a90612914565b6040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610fea573d5f5f3e3d5ffd5b5050565b6005546001600160a01b031633146110185760405162461bcd60e51b815260040161082a90612914565b6110215f6122ed565b565b6005546001600160a01b0316331461104d5760405162461bcd60e51b815260040161082a90612914565b6001600160a01b0381166110735760405162461bcd60e51b815260040161082a906129df565b600e80546001600160a01b0319166001600160a01b0383169081179091556040517f1797049ec5d8ec17fdce2660fb55e33695fd7ebbdb65726cc6d171c0e1c312c7905f90a250565b6005546001600160a01b031633146110e65760405162461bcd60e51b815260040161082a90612914565b6001600160a01b03821661110c5760405162461bcd60e51b815260040161082a906129df565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f6bad460a4857213327743a019dab27190e04974d74986f8d2a9d2777c064ef8091015b60405180910390a25050565b60606004805461093190612993565b6005546001600160a01b031633146111a45760405162461bcd60e51b815260040161082a90612914565b6001600160a01b0382166111ca5760405162461bcd60e51b815260040161082a906129df565b6006546001600160a01b03908116908316036112335760405162461bcd60e51b815260206004820152602260248201527f5969656c6453746f6e653a2043616e6e6f742064656c65746520414d4d20706160448201526134b960f11b606482015260840161082a565b6001600160a01b0382165f908152600f602052604090205460ff16156112c15760405162461bcd60e51b815260206004820152603860248201527f5969656c6453746f6e653a2043616e6e6f74206164642070616972207768696360448201527f6820657869737420696e2074686520626c61636b6c6973740000000000000000606482015260840161082a565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab910161115f565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161082a565b6113a63385858403611b70565b5060019392505050565b5f6109be338484611c93565b6005546001600160a01b031633146113e65760405162461bcd60e51b815260040161082a90612914565b6001600160a01b03821661140c5760405162461bcd60e51b815260040161082a906129df565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f37e25ecab1e1c056f6f2b60cdfff33e280e2205b5febdf36421391b32cf95fc0910161115f565b6005546001600160a01b0316331461148d5760405162461bcd60e51b815260040161082a90612914565b600e54600160b01b900460ff16156114e75760405162461bcd60e51b815260206004820152601d60248201527f5969656c6453746f6e653a2054726164696e6720697320616374697665000000604482015260640161082a565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439057f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611573573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115979190612a67565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa1580156115df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116039190612a67565b905061161081600161117a565b61161b8160016110bc565b600680546001600160a01b0319166001600160a01b038316179055600e805462ff00ff60a01b19166201000160a01b1790556040514381527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92390602001610917565b6005546001600160a01b031633146116a75760405162461bcd60e51b815260040161082a90612914565b670de0b6b3a7640000620186a06116bd60025490565b6116c890600161295d565b6116d29190612974565b6116dc9190612974565b821015611753576040805162461bcd60e51b81526020600482015260248101919091527f5969656c6453746f6e653a2043616e6e6f74207377617020616d6f756e74206260448201527f65206c6f776572207468616e20302e3030312520746f74616c20737570706c79606482015260840161082a565b670de0b6b3a76400006103e861176860025490565b61177390600561295d565b61177d9190612974565b6117879190612974565b8211156117fc5760405162461bcd60e51b815260206004820152603f60248201527f5969656c6453746f6e653a2043616e6e6f74207377617020616d6f756e74206260448201527f6520686967686572207468616e20302e352520746f74616c20737570706c7900606482015260840161082a565b600e805460ff60a01b1916600160a01b8515150217905561182582670de0b6b3a764000061295d565b60088190556009829055600e5460408051600160a01b90920460ff161515825260208201929092529081018290527f4b677a46e316406a6ed1cb54240e50dba1584ab6991dd9dbc716e78273c9dcf09060600160405180910390a1505050565b6005546001600160a01b031633146118af5760405162461bcd60e51b815260040161082a90612914565b6001600160a01b0381166119145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b61191d816122ed565b50565b6005546001600160a01b0316331461194a5760405162461bcd60e51b815260040161082a90612914565b600e805460ff60a81b191690556040514381527ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e5026169060200160405180910390a1565b6005546001600160a01b031633146119b65760405162461bcd60e51b815260040161082a90612914565b5f5b81811015610d7c575f8383838181106119d3576119d36129cb565b90506020020160208101906119e89190612850565b6001600160a01b031603611a0e5760405162461bcd60e51b815260040161082a906129df565b60125f848484818110611a2357611a236129cb565b9050602002016020810190611a389190612850565b6001600160a01b0316815260208101919091526040015f205460ff1615611ab95760405162461bcd60e51b815260206004820152602f60248201527f5969656c6453746f6e653a2043616e6e6f742061646420746f20414d4d20706160448201526e1a5c881d1bc8189b1858dadb1a5cdd608a1b606482015260840161082a565b6001600f5f858585818110611ad057611ad06129cb565b9050602002016020810190611ae59190612850565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055828282818110611b1e57611b1e6129cb565b9050602002016020810190611b339190612850565b6001600160a01b03167ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed62760405160405180910390a26001016119b8565b6001600160a01b038316611bd25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b038216611c335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cb95760405162461bcd60e51b815260040161082a906129df565b6001600160a01b038216611cdf5760405162461bcd60e51b815260040161082a906129df565b6001600160a01b0383165f908152600f602052604090205460ff16158015611d1f57506001600160a01b0382165f908152600f602052604090205460ff16155b611d795760405162461bcd60e51b815260206004820152602560248201527f5969656c6453746f6e653a2057616c6c657420696e2074686520626c61636b6c6044820152641a5cdd195960da1b606482015260840161082a565b805f03611d8b57610d7c83835f61233e565b6006545f90600160a01b900460ff16158015611dbf57506001600160a01b0384165f9081526010602052604090205460ff16155b8015611de357506001600160a01b0383165f9081526010602052604090205460ff16155b15611e8d576001600160a01b0383165f9081526012602052604090205460ff168015611e1057505f600d54115b15611e36576064600d5483611e25919061295d565b611e2f9190612974565b9050611e80565b6001600160a01b0384165f9081526012602052604090205460ff168015611e5e57505f600c54115b15611e80576064600c5483611e73919061295d565b611e7d9190612974565b90505b611e8a8183612a82565b91505b600e54600160a81b900460ff16156121b8576005546001600160a01b03858116911614801590611ecb57506005546001600160a01b03848116911614155b8015611edf57506001600160a01b03831615155b8015611ef657506001600160a01b03831661dead14155b8015611f0c5750600654600160a01b900460ff16155b156121b857600e54600160b01b900460ff16611fab576001600160a01b0384165f9081526010602052604090205460ff1680611f5f57506001600160a01b0383165f9081526010602052604090205460ff165b611fab5760405162461bcd60e51b815260206004820152601f60248201527f5969656c6453746f6e653a2054726164696e672069732064697361626c656400604482015260640161082a565b6001600160a01b0384165f9081526012602052604090205460ff168015611fea57506001600160a01b0383165f9081526011602052604090205460ff16155b156120a457600a5482111561205c5760405162461bcd60e51b815260206004820152603260248201527f5969656c6453746f6e653a20427579207472616e7366657220616d6f756e74206044820152710caf0c6cacac8e640e8d0ca40dac2f040e8f60731b606482015260840161082a565b600b546001600160a01b0384165f908152602081905260409020546120819084612a22565b111561209f5760405162461bcd60e51b815260040161082a90612a95565b6121b8565b6001600160a01b0383165f9081526012602052604090205460ff1680156120e357506001600160a01b0384165f9081526011602052604090205460ff16155b1561215657600a5482111561209f5760405162461bcd60e51b815260206004820152603360248201527f5969656c6453746f6e653a2053656c6c207472616e7366657220616d6f756e74604482015272040caf0c6cacac8e640e8d0ca40dac2f040e8f606b1b606482015260840161082a565b6001600160a01b0383165f9081526011602052604090205460ff166121b857600b546001600160a01b0384165f9081526020819052604090205461219a9084612a22565b11156121b85760405162461bcd60e51b815260040161082a90612a95565b305f908152602081905260408120546009549091906121d890600c61295d565b6007546121e59190612a22565b600e549091505f90600160a01b900460ff16801561220557506008548310155b80156122115750814210155b905080801561222a5750600654600160a01b900460ff16155b801561224e57506001600160a01b0387165f9081526012602052604090205460ff16155b801561227257506001600160a01b0387165f9081526010602052604090205460ff16155b801561229657506001600160a01b0386165f9081526010602052604090205460ff16155b156122c8576006805460ff60a01b1916600160a01b1790556008546122ba9061250a565b6006805460ff60a01b191690555b83156122d9576122d987308661233e565b6122e487878761233e565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166123a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b0382166124045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b6001600160a01b0383165f908152602081905260409020548181101561247b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161082a565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906124b1908490612a22565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124fd91815260200190565b60405180910390a3610ec2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061253d5761253d6129cb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd9190612a67565b816001815181106125f0576125f06129cb565b60200260200101906001600160a01b031690816001600160a01b03168152505061263b307f000000000000000000000000000000000000000000000000000000000000000084611b70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061268f9085905f90869030904290600401612ad7565b5f604051808303815f87803b1580156126a6575f5ffd5b505af11580156126b8573d5f5f3e3d5ffd5b5050426007555050600e546040515f916001600160a01b03169047908381818185875af1925050503d805f811461270a576040519150601f19603f3d011682016040523d82523d5f602084013e61270f565b606091505b505050505050565b5f60208284031215612727575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461191d575f5ffd5b5f5f60408385031215612788575f5ffd5b823561279381612763565b946020939093013593505050565b5f5f5f606084860312156127b3575f5ffd5b83356127be81612763565b925060208401356127ce81612763565b929592945050506040919091013590565b5f5f602083850312156127f0575f5ffd5b823567ffffffffffffffff811115612806575f5ffd5b8301601f81018513612816575f5ffd5b803567ffffffffffffffff81111561282c575f5ffd5b8560208260051b8401011115612840575f5ffd5b6020919091019590945092505050565b5f60208284031215612860575f5ffd5b813561286b81612763565b9392505050565b5f5f60408385031215612883575f5ffd5b823561288e81612763565b9150602083013561289e81612763565b809150509250929050565b801515811461191d575f5ffd5b5f5f604083850312156128c7575f5ffd5b82356128d281612763565b9150602083013561289e816128a9565b5f5f5f606084860312156128f4575f5ffd5b83356128ff816128a9565b95602085013595506040909401359392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109c2576109c2612949565b5f8261298e57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806129a757607f821691505b6020821081036129c557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526023908201527f5969656c6453746f6e653a2043616e6e6f7420736574207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156109c2576109c2612949565b5f60208284031215612a45575f5ffd5b5051919050565b5f60208284031215612a5c575f5ffd5b815161286b816128a9565b5f60208284031215612a77575f5ffd5b815161286b81612763565b818103818111156109c2576109c2612949565b60208082526022908201527f5969656c6453746f6e653a204d61782077616c6c657420697320657863656564604082015261195960f21b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612b275783516001600160a01b0316835260209384019390920191600101612b00565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212204d7e76fde4f144be70919a64d6d83eab9e9b522450846fea53ef195ba450158564736f6c634300081e00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725969656c6453746f6e653a2043616e6e6f7420736574207a65726f2061646472
Deployed Bytecode
0x608060405260043610610262575f3560e01c80636ddd17131161013f578063c0246668116100b3578063ddc8cb4e11610078578063ddc8cb4e1461074c578063f2fde38b1461076b578063f8b45b051461078a578063f928364c1461079f578063f9f92be4146107b3578063ff897570146107e1575f5ffd5b8063c0246668146106ab578063c3f70b52146106ca578063c9567bf9146106df578063d3a0c81d146106f3578063dd62ed3e14610708575f5ffd5b80638da5cb5b116101045780638da5cb5b146105ef57806395d89b411461060c5780639a7a23d614610620578063a457c2d71461063f578063a9059cbb1461065e578063b62496f51461067d575f5ffd5b80636ddd17131461054957806370a0823114610569578063715018a61461059d57806374c9f603146105b15780637571336a146105d0575f5ffd5b8063313ce567116101d6578063467abe0a1161019b578063467abe0a1461048957806347062402146104a857806349bd5a5e146104bd5780634ada218b146104dc5780634fbee193146104fc57806351cff8d91461052a575f5ffd5b8063313ce567146103e257806331f4ee03146103fd5780633582ad231461042b578063395093511461044b5780633aeac4e11461046a575f5ffd5b80631d933a4a116102275780631d933a4a1461032457806323b872dd146103435780632926e227146103625780632b14ca56146103815780632dc0562d146103965780632e8fa821146103cd575f5ffd5b80630517d13d1461026d57806306fdde031461028e578063095ea7b3146102b857806318160ddd146102e75780631c499ab014610305575f5ffd5b3661026957005b5f5ffd5b348015610278575f5ffd5b5061028c610287366004612717565b610800565b005b348015610299575f5ffd5b506102a2610922565b6040516102af919061272e565b60405180910390f35b3480156102c3575f5ffd5b506102d76102d2366004612777565b6109b2565b60405190151581526020016102af565b3480156102f2575f5ffd5b506002545b6040519081526020016102af565b348015610310575f5ffd5b5061028c61031f366004612717565b6109c8565b34801561032f575f5ffd5b5061028c61033e366004612717565b610ad5565b34801561034e575f5ffd5b506102d761035d3660046127a1565b610b9c565b34801561036d575f5ffd5b5061028c61037c3660046127df565b610c44565b34801561038c575f5ffd5b506102f7600d5481565b3480156103a1575f5ffd5b50600e546103b5906001600160a01b031681565b6040516001600160a01b0390911681526020016102af565b3480156103d8575f5ffd5b506102f760085481565b3480156103ed575f5ffd5b50604051601281526020016102af565b348015610408575f5ffd5b506102d7610417366004612850565b60116020525f908152604090205460ff1681565b348015610436575f5ffd5b50600e546102d790600160a81b900460ff1681565b348015610456575f5ffd5b506102d7610465366004612777565b610d81565b348015610475575f5ffd5b5061028c610484366004612872565b610dbc565b348015610494575f5ffd5b5061028c6104a3366004612717565b610ec8565b3480156104b3575f5ffd5b506102f7600c5481565b3480156104c8575f5ffd5b506006546103b5906001600160a01b031681565b3480156104e7575f5ffd5b50600e546102d790600160b01b900460ff1681565b348015610507575f5ffd5b506102d7610516366004612850565b60106020525f908152604090205460ff1681565b348015610535575f5ffd5b5061028c610544366004612850565b610f8e565b348015610554575f5ffd5b50600e546102d790600160a01b900460ff1681565b348015610574575f5ffd5b506102f7610583366004612850565b6001600160a01b03165f9081526020819052604090205490565b3480156105a8575f5ffd5b5061028c610fee565b3480156105bc575f5ffd5b5061028c6105cb366004612850565b611023565b3480156105db575f5ffd5b5061028c6105ea3660046128b6565b6110bc565b3480156105fa575f5ffd5b506005546001600160a01b03166103b5565b348015610617575f5ffd5b506102a261116b565b34801561062b575f5ffd5b5061028c61063a3660046128b6565b61117a565b34801561064a575f5ffd5b506102d7610659366004612777565b611318565b348015610669575f5ffd5b506102d7610678366004612777565b6113b0565b348015610688575f5ffd5b506102d7610697366004612850565b60126020525f908152604090205460ff1681565b3480156106b6575f5ffd5b5061028c6106c53660046128b6565b6113bc565b3480156106d5575f5ffd5b506102f7600a5481565b3480156106ea575f5ffd5b5061028c611463565b3480156106fe575f5ffd5b506102f760095481565b348015610713575f5ffd5b506102f7610722366004612872565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610757575f5ffd5b5061028c6107663660046128e2565b61167d565b348015610776575f5ffd5b5061028c610785366004612850565b611885565b348015610795575f5ffd5b506102f7600b5481565b3480156107aa575f5ffd5b5061028c611920565b3480156107be575f5ffd5b506102d76107cd366004612850565b600f6020525f908152604090205460ff1681565b3480156107ec575f5ffd5b5061028c6107fb3660046127df565b61198c565b6005546001600160a01b031633146108335760405162461bcd60e51b815260040161082a90612914565b60405180910390fd5b670de0b6b3a76400006103e861084860025490565b61085390600f61295d565b61085d9190612974565b6108679190612974565b8110156108d45760405162461bcd60e51b815260206004820152603560248201527f5969656c6453746f6e653a2043616e6e6f74206d6178207472616e73616374696044820152746f6e206265206c6f776572207468616e20312e352560581b606482015260840161082a565b6108e681670de0b6b3a764000061295d565b600a8190556040519081527fcc18a23b5455befc64930dd79aa26a968e67d6953c8c9b683acf16d4c26fff5c906020015b60405180910390a150565b60606003805461093190612993565b80601f016020809104026020016040519081016040528092919081815260200182805461095d90612993565b80156109a85780601f1061097f576101008083540402835291602001916109a8565b820191905f5260205f20905b81548152906001019060200180831161098b57829003601f168201915b5050505050905090565b5f6109be338484611b70565b5060015b92915050565b6005546001600160a01b031633146109f25760405162461bcd60e51b815260040161082a90612914565b670de0b6b3a76400006103e8610a0760025490565b610a1290600f61295d565b610a1c9190612974565b610a269190612974565b811015610a8e5760405162461bcd60e51b815260206004820152603060248201527f5969656c6453746f6e653a2043616e6e6f74206d61782077616c6c657420626560448201526f206c6f776572207468616e20312e352560801b606482015260840161082a565b610aa081670de0b6b3a764000061295d565b600b8190556040519081527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace90602001610917565b6005546001600160a01b03163314610aff5760405162461bcd60e51b815260040161082a90612914565b601e811115610b675760405162461bcd60e51b815260206004820152602e60248201527f5969656c6453746f6e653a2043616e6e6f742073656c6c20666565206265206860448201526d6967686572207468616e2033302560901b606482015260840161082a565b600d8190556040518181527f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e78090602001610917565b5f610ba8848484611c93565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c2c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161082a565b610c398533858403611b70565b506001949350505050565b6005546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161082a90612914565b5f5b81811015610d7c575f838383818110610c8b57610c8b6129cb565b9050602002016020810190610ca09190612850565b6001600160a01b031603610cc65760405162461bcd60e51b815260040161082a906129df565b5f600f5f858585818110610cdc57610cdc6129cb565b9050602002016020810190610cf19190612850565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055828282818110610d2a57610d2a6129cb565b9050602002016020810190610d3f9190612850565b6001600160a01b03167f3afada3900b4909463d8a846fbdc12d6b5c4e8030bd6bc1215822ecee62357ba60405160405180910390a2600101610c70565b505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109be918590610db7908690612a22565b611b70565b6005546001600160a01b03163314610de65760405162461bcd60e51b815260040161082a90612914565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e2a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4e9190612a35565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec29190612a4c565b50505050565b6005546001600160a01b03163314610ef25760405162461bcd60e51b815260040161082a90612914565b601e811115610f595760405162461bcd60e51b815260206004820152602d60248201527f5969656c6453746f6e653a2043616e6e6f74206275792066656520626520686960448201526c67686572207468616e2033302560981b606482015260840161082a565b600c8190556040518181527f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca390602001610917565b6005546001600160a01b03163314610fb85760405162461bcd60e51b815260040161082a90612914565b6040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610fea573d5f5f3e3d5ffd5b5050565b6005546001600160a01b031633146110185760405162461bcd60e51b815260040161082a90612914565b6110215f6122ed565b565b6005546001600160a01b0316331461104d5760405162461bcd60e51b815260040161082a90612914565b6001600160a01b0381166110735760405162461bcd60e51b815260040161082a906129df565b600e80546001600160a01b0319166001600160a01b0383169081179091556040517f1797049ec5d8ec17fdce2660fb55e33695fd7ebbdb65726cc6d171c0e1c312c7905f90a250565b6005546001600160a01b031633146110e65760405162461bcd60e51b815260040161082a90612914565b6001600160a01b03821661110c5760405162461bcd60e51b815260040161082a906129df565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f6bad460a4857213327743a019dab27190e04974d74986f8d2a9d2777c064ef8091015b60405180910390a25050565b60606004805461093190612993565b6005546001600160a01b031633146111a45760405162461bcd60e51b815260040161082a90612914565b6001600160a01b0382166111ca5760405162461bcd60e51b815260040161082a906129df565b6006546001600160a01b03908116908316036112335760405162461bcd60e51b815260206004820152602260248201527f5969656c6453746f6e653a2043616e6e6f742064656c65746520414d4d20706160448201526134b960f11b606482015260840161082a565b6001600160a01b0382165f908152600f602052604090205460ff16156112c15760405162461bcd60e51b815260206004820152603860248201527f5969656c6453746f6e653a2043616e6e6f74206164642070616972207768696360448201527f6820657869737420696e2074686520626c61636b6c6973740000000000000000606482015260840161082a565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab910161115f565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161082a565b6113a63385858403611b70565b5060019392505050565b5f6109be338484611c93565b6005546001600160a01b031633146113e65760405162461bcd60e51b815260040161082a90612914565b6001600160a01b03821661140c5760405162461bcd60e51b815260040161082a906129df565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f37e25ecab1e1c056f6f2b60cdfff33e280e2205b5febdf36421391b32cf95fc0910161115f565b6005546001600160a01b0316331461148d5760405162461bcd60e51b815260040161082a90612914565b600e54600160b01b900460ff16156114e75760405162461bcd60e51b815260206004820152601d60248201527f5969656c6453746f6e653a2054726164696e6720697320616374697665000000604482015260640161082a565b5f7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6001600160a01b031663e6a439057f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611573573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115979190612a67565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa1580156115df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116039190612a67565b905061161081600161117a565b61161b8160016110bc565b600680546001600160a01b0319166001600160a01b038316179055600e805462ff00ff60a01b19166201000160a01b1790556040514381527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92390602001610917565b6005546001600160a01b031633146116a75760405162461bcd60e51b815260040161082a90612914565b670de0b6b3a7640000620186a06116bd60025490565b6116c890600161295d565b6116d29190612974565b6116dc9190612974565b821015611753576040805162461bcd60e51b81526020600482015260248101919091527f5969656c6453746f6e653a2043616e6e6f74207377617020616d6f756e74206260448201527f65206c6f776572207468616e20302e3030312520746f74616c20737570706c79606482015260840161082a565b670de0b6b3a76400006103e861176860025490565b61177390600561295d565b61177d9190612974565b6117879190612974565b8211156117fc5760405162461bcd60e51b815260206004820152603f60248201527f5969656c6453746f6e653a2043616e6e6f74207377617020616d6f756e74206260448201527f6520686967686572207468616e20302e352520746f74616c20737570706c7900606482015260840161082a565b600e805460ff60a01b1916600160a01b8515150217905561182582670de0b6b3a764000061295d565b60088190556009829055600e5460408051600160a01b90920460ff161515825260208201929092529081018290527f4b677a46e316406a6ed1cb54240e50dba1584ab6991dd9dbc716e78273c9dcf09060600160405180910390a1505050565b6005546001600160a01b031633146118af5760405162461bcd60e51b815260040161082a90612914565b6001600160a01b0381166119145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b61191d816122ed565b50565b6005546001600160a01b0316331461194a5760405162461bcd60e51b815260040161082a90612914565b600e805460ff60a81b191690556040514381527ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e5026169060200160405180910390a1565b6005546001600160a01b031633146119b65760405162461bcd60e51b815260040161082a90612914565b5f5b81811015610d7c575f8383838181106119d3576119d36129cb565b90506020020160208101906119e89190612850565b6001600160a01b031603611a0e5760405162461bcd60e51b815260040161082a906129df565b60125f848484818110611a2357611a236129cb565b9050602002016020810190611a389190612850565b6001600160a01b0316815260208101919091526040015f205460ff1615611ab95760405162461bcd60e51b815260206004820152602f60248201527f5969656c6453746f6e653a2043616e6e6f742061646420746f20414d4d20706160448201526e1a5c881d1bc8189b1858dadb1a5cdd608a1b606482015260840161082a565b6001600f5f858585818110611ad057611ad06129cb565b9050602002016020810190611ae59190612850565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055828282818110611b1e57611b1e6129cb565b9050602002016020810190611b339190612850565b6001600160a01b03167ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed62760405160405180910390a26001016119b8565b6001600160a01b038316611bd25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b038216611c335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cb95760405162461bcd60e51b815260040161082a906129df565b6001600160a01b038216611cdf5760405162461bcd60e51b815260040161082a906129df565b6001600160a01b0383165f908152600f602052604090205460ff16158015611d1f57506001600160a01b0382165f908152600f602052604090205460ff16155b611d795760405162461bcd60e51b815260206004820152602560248201527f5969656c6453746f6e653a2057616c6c657420696e2074686520626c61636b6c6044820152641a5cdd195960da1b606482015260840161082a565b805f03611d8b57610d7c83835f61233e565b6006545f90600160a01b900460ff16158015611dbf57506001600160a01b0384165f9081526010602052604090205460ff16155b8015611de357506001600160a01b0383165f9081526010602052604090205460ff16155b15611e8d576001600160a01b0383165f9081526012602052604090205460ff168015611e1057505f600d54115b15611e36576064600d5483611e25919061295d565b611e2f9190612974565b9050611e80565b6001600160a01b0384165f9081526012602052604090205460ff168015611e5e57505f600c54115b15611e80576064600c5483611e73919061295d565b611e7d9190612974565b90505b611e8a8183612a82565b91505b600e54600160a81b900460ff16156121b8576005546001600160a01b03858116911614801590611ecb57506005546001600160a01b03848116911614155b8015611edf57506001600160a01b03831615155b8015611ef657506001600160a01b03831661dead14155b8015611f0c5750600654600160a01b900460ff16155b156121b857600e54600160b01b900460ff16611fab576001600160a01b0384165f9081526010602052604090205460ff1680611f5f57506001600160a01b0383165f9081526010602052604090205460ff165b611fab5760405162461bcd60e51b815260206004820152601f60248201527f5969656c6453746f6e653a2054726164696e672069732064697361626c656400604482015260640161082a565b6001600160a01b0384165f9081526012602052604090205460ff168015611fea57506001600160a01b0383165f9081526011602052604090205460ff16155b156120a457600a5482111561205c5760405162461bcd60e51b815260206004820152603260248201527f5969656c6453746f6e653a20427579207472616e7366657220616d6f756e74206044820152710caf0c6cacac8e640e8d0ca40dac2f040e8f60731b606482015260840161082a565b600b546001600160a01b0384165f908152602081905260409020546120819084612a22565b111561209f5760405162461bcd60e51b815260040161082a90612a95565b6121b8565b6001600160a01b0383165f9081526012602052604090205460ff1680156120e357506001600160a01b0384165f9081526011602052604090205460ff16155b1561215657600a5482111561209f5760405162461bcd60e51b815260206004820152603360248201527f5969656c6453746f6e653a2053656c6c207472616e7366657220616d6f756e74604482015272040caf0c6cacac8e640e8d0ca40dac2f040e8f606b1b606482015260840161082a565b6001600160a01b0383165f9081526011602052604090205460ff166121b857600b546001600160a01b0384165f9081526020819052604090205461219a9084612a22565b11156121b85760405162461bcd60e51b815260040161082a90612a95565b305f908152602081905260408120546009549091906121d890600c61295d565b6007546121e59190612a22565b600e549091505f90600160a01b900460ff16801561220557506008548310155b80156122115750814210155b905080801561222a5750600654600160a01b900460ff16155b801561224e57506001600160a01b0387165f9081526012602052604090205460ff16155b801561227257506001600160a01b0387165f9081526010602052604090205460ff16155b801561229657506001600160a01b0386165f9081526010602052604090205460ff16155b156122c8576006805460ff60a01b1916600160a01b1790556008546122ba9061250a565b6006805460ff60a01b191690555b83156122d9576122d987308661233e565b6122e487878761233e565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166123a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b0382166124045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b6001600160a01b0383165f908152602081905260409020548181101561247b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161082a565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906124b1908490612a22565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124fd91815260200190565b60405180910390a3610ec2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061253d5761253d6129cb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dd9190612a67565b816001815181106125f0576125f06129cb565b60200260200101906001600160a01b031690816001600160a01b03168152505061263b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061268f9085905f90869030904290600401612ad7565b5f604051808303815f87803b1580156126a6575f5ffd5b505af11580156126b8573d5f5f3e3d5ffd5b5050426007555050600e546040515f916001600160a01b03169047908381818185875af1925050503d805f811461270a576040519150601f19603f3d011682016040523d82523d5f602084013e61270f565b606091505b505050505050565b5f60208284031215612727575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461191d575f5ffd5b5f5f60408385031215612788575f5ffd5b823561279381612763565b946020939093013593505050565b5f5f5f606084860312156127b3575f5ffd5b83356127be81612763565b925060208401356127ce81612763565b929592945050506040919091013590565b5f5f602083850312156127f0575f5ffd5b823567ffffffffffffffff811115612806575f5ffd5b8301601f81018513612816575f5ffd5b803567ffffffffffffffff81111561282c575f5ffd5b8560208260051b8401011115612840575f5ffd5b6020919091019590945092505050565b5f60208284031215612860575f5ffd5b813561286b81612763565b9392505050565b5f5f60408385031215612883575f5ffd5b823561288e81612763565b9150602083013561289e81612763565b809150509250929050565b801515811461191d575f5ffd5b5f5f604083850312156128c7575f5ffd5b82356128d281612763565b9150602083013561289e816128a9565b5f5f5f606084860312156128f4575f5ffd5b83356128ff816128a9565b95602085013595506040909401359392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109c2576109c2612949565b5f8261298e57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806129a757607f821691505b6020821081036129c557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526023908201527f5969656c6453746f6e653a2043616e6e6f7420736574207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156109c2576109c2612949565b5f60208284031215612a45575f5ffd5b5051919050565b5f60208284031215612a5c575f5ffd5b815161286b816128a9565b5f60208284031215612a77575f5ffd5b815161286b81612763565b818103818111156109c2576109c2612949565b60208082526022908201527f5969656c6453746f6e653a204d61782077616c6c657420697320657863656564604082015261195960f21b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612b275783516001600160a01b0316835260209384019390920191600101612b00565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212204d7e76fde4f144be70919a64d6d83eab9e9b522450846fea53ef195ba450158564736f6c634300081e0033
Deployed Bytecode Sourcemap
21126:14169:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26536:378;;;;;;;;;;-1:-1:-1;26536:378:0;;;;;:::i;:::-;;:::i;:::-;;8949:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11116:169;;;;;;;;;;-1:-1:-1;11116:169:0;;;;;:::i;:::-;;:::i;:::-;;;1341:14:1;;1334:22;1316:41;;1304:2;1289:18;11116:169:0;1176:187:1;10069:108:0;;;;;;;;;;-1:-1:-1;10157:12:0;;10069:108;;;1514:25:1;;;1502:2;1487:18;10069:108:0;1368:177:1;27099:336:0;;;;;;;;;;-1:-1:-1;27099:336:0;;;;;:::i;:::-;;:::i;28014:273::-;;;;;;;;;;-1:-1:-1;28014:273:0;;;;;:::i;:::-;;:::i;11767:480::-;;;;;;;;;;-1:-1:-1;11767:480:0;;;;;:::i;:::-;;:::i;29631:400::-;;;;;;;;;;-1:-1:-1;29631:400:0;;;;;:::i;:::-;;:::i;21579:22::-;;;;;;;;;;;;;;;;21608:24;;;;;;;;;;-1:-1:-1;21608:24:0;;;;-1:-1:-1;;;;;21608:24:0;;;;;;-1:-1:-1;;;;;2842:32:1;;;2824:51;;2812:2;2797:18;21608:24:0;2678:203:1;21412:25:0;;;;;;;;;;;;;;;;9911:93;;;;;;;;;;-1:-1:-1;9911:93:0;;9994:2;3028:36:1;;3016:2;3001:18;9911:93:0;2886:184:1;21866:56:0;;;;;;;;;;-1:-1:-1;21866:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21679:32;;;;;;;;;;-1:-1:-1;21679:32:0;;;;-1:-1:-1;;;21679:32:0;;;;;;12656:215;;;;;;;;;;-1:-1:-1;12656:215:0;;;;;:::i;:::-;;:::i;35079:213::-;;;;;;;;;;-1:-1:-1;35079:213:0;;;;;:::i;:::-;;:::i;27587:265::-;;;;;;;;;;-1:-1:-1;27587:265:0;;;;;:::i;:::-;;:::i;21551:21::-;;;;;;;;;;;;;;;;21291:28;;;;;;;;;;-1:-1:-1;21291:28:0;;;;-1:-1:-1;;;;;21291:28:0;;;21718:34;;;;;;;;;;-1:-1:-1;21718:34:0;;;;-1:-1:-1;;;21718:34:0;;;;;;21809:50;;;;;;;;;;-1:-1:-1;21809:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;34958:113;;;;;;;;;;-1:-1:-1;34958:113:0;;;;;:::i;:::-;;:::i;21641:31::-;;;;;;;;;;-1:-1:-1;21641:31:0;;;;-1:-1:-1;;;21641:31:0;;;;;;10240:127;;;;;;;;;;-1:-1:-1;10240:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10341:18:0;10314:7;10341:18;;;;;;;;;;;;10240:127;2865:103;;;;;;;;;;;;;:::i;28451:284::-;;;;;;;;;;-1:-1:-1;28451:284:0;;;;;:::i;:::-;;:::i;30261:344::-;;;;;;;;;;-1:-1:-1;30261:344:0;;;;;:::i;:::-;;:::i;2214:87::-;;;;;;;;;;-1:-1:-1;2287:6:0;;-1:-1:-1;;;;;2287:6:0;2214:87;;9168:104;;;;;;;;;;;;;:::i;24571:591::-;;;;;;;;;;-1:-1:-1;24571:591:0;;;;;:::i;:::-;;:::i;13374:401::-;;;;;;;;;;-1:-1:-1;13374:401:0;;;;;:::i;:::-;;:::i;10580:175::-;;;;;;;;;;-1:-1:-1;10580:175:0;;;;;:::i;:::-;;:::i;21929:57::-;;;;;;;;;;-1:-1:-1;21929:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30817:322;;;;;;;;;;-1:-1:-1;30817:322:0;;;;;:::i;:::-;;:::i;21482:29::-;;;;;;;;;;;;;;;;23877:480;;;;;;;;;;;;;:::i;21444:29::-;;;;;;;;;;;;;;;;10818:151;;;;;;;;;;-1:-1:-1;10818:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10934:18:0;;;10907:7;10934:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10818:151;25695:689;;;;;;;;;;-1:-1:-1;25695:689:0;;;;;:::i;:::-;;:::i;3123:201::-;;;;;;;;;;-1:-1:-1;3123:201:0;;;;;:::i;:::-;;:::i;21518:24::-;;;;;;;;;;;;;;;;25305:127;;;;;;;;;;;;;:::i;21761:41::-;;;;;;;;;;-1:-1:-1;21761:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28902:554;;;;;;;;;;-1:-1:-1;28902:554:0;;;;;:::i;:::-;;:::i;26536:378::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;;;;;;;;;26710:4:::1;26702;26680:13;10157:12:::0;;;10069:108;26680:13:::1;:18;::::0;26696:2:::1;26680:18;:::i;:::-;26679:27;;;;:::i;:::-;26678:36;;;;:::i;:::-;26659:15;:55;;26637:158;;;::::0;-1:-1:-1;;;26637:158:0;;5806:2:1;26637:158:0::1;::::0;::::1;5788:21:1::0;5845:2;5825:18;;;5818:30;5884:34;5864:18;;;5857:62;-1:-1:-1;;;5935:18:1;;;5928:51;5996:19;;26637:158:0::1;5604:417:1::0;26637:158:0::1;26825:28;:15:::0;26844:8:::1;26825:28;:::i;:::-;26808:14;:45:::0;;;26869:37:::1;::::0;1514:25:1;;;26869:37:0::1;::::0;1502:2:1;1487:18;26869:37:0::1;;;;;;;;26536:378:::0;:::o;8949:100::-;9003:13;9036:5;9029:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8949:100;:::o;11116:169::-;11199:4;11216:39;1161:10;11239:7;11248:6;11216:8;:39::i;:::-;-1:-1:-1;11273:4:0;11116:169;;;;;:::o;27099:336::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;27258:4:::1;27250;27228:13;10157:12:::0;;;10069:108;27228:13:::1;:18;::::0;27244:2:::1;27228:18;:::i;:::-;27227:27;;;;:::i;:::-;27226:36;;;;:::i;:::-;27212:10;:50;;27190:148;;;::::0;-1:-1:-1;;;27190:148:0;;6613:2:1;27190:148:0::1;::::0;::::1;6595:21:1::0;6652:2;6632:18;;;6625:30;6691:34;6671:18;;;6664:62;-1:-1:-1;;;6742:18:1;;;6735:46;6798:19;;27190:148:0::1;6411:412:1::0;27190:148:0::1;27361:23;:10:::0;27375:8:::1;27361:23;:::i;:::-;27349:9;:35:::0;;;27400:27:::1;::::0;1514:25:1;;;27400:27:0::1;::::0;1502:2:1;1487:18;27400:27:0::1;1368:177:1::0;28014:273:0;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;28135:2:::1;28123:8;:14;;28101:110;;;::::0;-1:-1:-1;;;28101:110:0;;7030:2:1;28101:110:0::1;::::0;::::1;7012:21:1::0;7069:2;7049:18;;;7042:30;7108:34;7088:18;;;7081:62;-1:-1:-1;;;7159:18:1;;;7152:44;7213:19;;28101:110:0::1;6828:410:1::0;28101:110:0::1;28222:7;:18:::0;;;28256:23:::1;::::0;1514:25:1;;;28256:23:0::1;::::0;1502:2:1;1487:18;28256:23:0::1;1368:177:1::0;11767:480:0;11907:4;11924:36;11934:6;11942:9;11953:6;11924:9;:36::i;:::-;-1:-1:-1;;;;;12000:19:0;;11973:24;12000:19;;;:11;:19;;;;;;;;1161:10;12000:33;;;;;;;;12052:26;;;;12044:79;;;;-1:-1:-1;;;12044:79:0;;7445:2:1;12044:79:0;;;7427:21:1;7484:2;7464:18;;;7457:30;7523:34;7503:18;;;7496:62;-1:-1:-1;;;7574:18:1;;;7567:38;7622:19;;12044:79:0;7243:404:1;12044:79:0;12151:57;12160:6;1161:10;12201:6;12182:16;:25;12151:8;:57::i;:::-;-1:-1:-1;12235:4:0;;11767:480;-1:-1:-1;;;;11767:480:0:o;29631:400::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;29740:6:::1;29735:289;29752:19:::0;;::::1;29735:289;;;29842:1;29819:8:::0;;29828:1;29819:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29819:25:0::1;::::0;29793:122:::1;;;;-1:-1:-1::0;;;29793:122:0::1;;;;;;;:::i;:::-;29955:5;29930:9;:22;29940:8;;29949:1;29940:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29930:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;29930:22:0;:30;;-1:-1:-1;;29930:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30000:8;;30009:1;30000:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29980:32:0::1;;;;;;;;;;;29773:3;;29735:289;;;;29631:400:::0;;:::o;12656:215::-;1161:10;12744:4;12793:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12793:34:0;;;;;;;;;;12744:4;;12761:80;;12784:7;;12793:47;;12830:10;;12793:47;:::i;:::-;12761:8;:80::i;35079:213::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;35188:39:::1;::::0;-1:-1:-1;;;35188:39:0;;35221:4:::1;35188:39;::::0;::::1;2824:51:1::0;35161:24:0::1;::::0;-1:-1:-1;;;;;35188:24:0;::::1;::::0;::::1;::::0;2797:18:1;;35188:39:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35238:46;::::0;-1:-1:-1;;;35238:46:0;;-1:-1:-1;;;;;8699:32:1;;;35238:46:0::1;::::0;::::1;8681:51:1::0;8748:18;;;8741:34;;;35161:66:0;;-1:-1:-1;35238:23:0;;::::1;::::0;::::1;::::0;8654:18:1;;35238:46:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35150:142;35079:213:::0;;:::o;27587:265::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;27705:2:::1;27694:7;:13;;27672:108;;;::::0;-1:-1:-1;;;27672:108:0;;9238:2:1;27672:108:0::1;::::0;::::1;9220:21:1::0;9277:2;9257:18;;;9250:30;9316:34;9296:18;;;9289:62;-1:-1:-1;;;9367:18:1;;;9360:43;9420:19;;27672:108:0::1;9036:409:1::0;27672:108:0::1;27791:6;:16:::0;;;27823:21:::1;::::0;1514:25:1;;;27823:21:0::1;::::0;1502:2:1;1487:18;27823:21:0::1;1368:177:1::0;34958:113:0;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;35019:44:::1;::::0;-1:-1:-1;;;;;35019:21:0;::::1;::::0;35041::::1;35019:44:::0;::::1;;;::::0;::::1;::::0;;;35041:21;35019;:44;::::1;;;;;;;;;;;;;;;;;;;;34958:113:::0;:::o;2865:103::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;2930:30:::1;2957:1;2930:18;:30::i;:::-;2865:103::o:0;28451:284::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28564:24:0;::::1;28542:109;;;;-1:-1:-1::0;;;28542:109:0::1;;;;;;;:::i;:::-;28662:9;:22:::0;;-1:-1:-1;;;;;;28662:22:0::1;-1:-1:-1::0;;;;;28662:22:0;::::1;::::0;;::::1;::::0;;;28700:27:::1;::::0;::::1;::::0;-1:-1:-1;;28700:27:0::1;28451:284:::0;:::o;30261:344::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30404:21:0;::::1;30382:106;;;;-1:-1:-1::0;;;30382:106:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30499:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;;;;:45;;-1:-1:-1;;30499:45:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30560:37;;1316:41:1;;;30560:37:0::1;::::0;1289:18:1;30560:37:0::1;;;;;;;;30261:344:::0;;:::o;9168:104::-;9224:13;9257:7;9250:14;;;;;:::i;24571:591::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24711:19:0;::::1;24689:104;;;;-1:-1:-1::0;;;24689:104:0::1;;;;;;;:::i;:::-;24835:13;::::0;-1:-1:-1;;;;;24835:13:0;;::::1;24826:22:::0;;::::1;::::0;24804:106:::1;;;::::0;-1:-1:-1;;;24804:106:0;;9652:2:1;24804:106:0::1;::::0;::::1;9634:21:1::0;9691:2;9671:18;;;9664:30;9730:34;9710:18;;;9703:62;-1:-1:-1;;;9781:18:1;;;9774:32;9823:19;;24804:106:0::1;9450:398:1::0;24804:106:0::1;-1:-1:-1::0;;;;;24944:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;;::::1;;24943:17;24921:123;;;::::0;-1:-1:-1;;;24921:123:0;;10055:2:1;24921:123:0::1;::::0;::::1;10037:21:1::0;10094:2;10074:18;;;10067:30;10133:34;10113:18;;;10106:62;10204:26;10184:18;;;10177:54;10248:19;;24921:123:0::1;9853:420:1::0;24921:123:0::1;-1:-1:-1::0;;;;;25055:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;;;;;:41;;-1:-1:-1;;25055:41:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25112:42;;1316:41:1;;;25112:42:0::1;::::0;1289:18:1;25112:42:0::1;1176:187:1::0;13374:401:0;1161:10;13467:4;13511:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13511:34:0;;;;;;;;;;13564:35;;;;13556:85;;;;-1:-1:-1;;;13556:85:0;;10480:2:1;13556:85:0;;;10462:21:1;10519:2;10499:18;;;10492:30;10558:34;10538:18;;;10531:62;-1:-1:-1;;;10609:18:1;;;10602:35;10654:19;;13556:85:0;10278:401:1;13556:85:0;13669:67;1161:10;13692:7;13720:15;13701:16;:34;13669:8;:67::i;:::-;-1:-1:-1;13763:4:0;;13374:401;-1:-1:-1;;;13374:401:0:o;10580:175::-;10666:4;10683:42;1161:10;10707:9;10718:6;10683:9;:42::i;30817:322::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30950:21:0;::::1;30928:106;;;;-1:-1:-1::0;;;30928:106:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31045:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:39;;-1:-1:-1;;31045:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31100:31;;1316:41:1;;;31100:31:0::1;::::0;1289:18:1;31100:31:0::1;1176:187:1::0;23877:480:0;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;23953:14:::1;::::0;-1:-1:-1;;;23953:14:0;::::1;;;23952:15;23930:94;;;::::0;-1:-1:-1;;;23930:94:0;;10886:2:1;23930:94:0::1;::::0;::::1;10868:21:1::0;10925:2;10905:18;;;10898:30;10964:31;10944:18;;;10937:59;11013:18;;23930:94:0::1;10684:353:1::0;23930:94:0::1;24035:12;24050:17;-1:-1:-1::0;;;;;24050:25:0::1;;24076:16;-1:-1:-1::0;;;;;24076:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24050:65;::::0;-1:-1:-1;;;;;;24050:65:0::1;::::0;;;;;;-1:-1:-1;;;;;11490:32:1;;;24050:65:0::1;::::0;::::1;11472:51:1::0;24109:4:0::1;11539:18:1::0;;;11532:60;11445:18;;24050:65:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24035:80;;24126:39;24154:4;24160;24126:27;:39::i;:::-;24176:37;24202:4;24208;24176:25;:37::i;:::-;24224:13;:20:::0;;-1:-1:-1;;;;;;24224:20:0::1;-1:-1:-1::0;;;;;24224:20:0;::::1;;::::0;;24255:14:::1;:21:::0;;-1:-1:-1;;;;24287:18:0;-1:-1:-1;;;24287:18:0;;;24321:28:::1;::::0;24336:12:::1;1514:25:1::0;;24321:28:0::1;::::0;1502:2:1;1487:18;24321:28:0::1;1368:177:1::0;25695:689:0;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;25912:4:::1;25903:6;25882:13;10157:12:::0;;;10069:108;25882:13:::1;:17;::::0;25898:1:::1;25882:17;:::i;:::-;25881:28;;;;:::i;:::-;:35;;;;:::i;:::-;25866:11;:50;;25844:164;;;::::0;;-1:-1:-1;;;25844:164:0;;11805:2:1;25844:164:0::1;::::0;::::1;11787:21:1::0;11824:18;;;11817:30;;;;11883:34;11863:18;;;11856:62;11954:34;11934:18;;;11927:62;12006:19;;25844:164:0::1;11603:428:1::0;25844:164:0::1;26085:4;26078;26057:13;10157:12:::0;;;10069:108;26057:13:::1;:17;::::0;26073:1:::1;26057:17;:::i;:::-;26056:26;;;;:::i;:::-;:33;;;;:::i;:::-;26041:11;:48;;26019:161;;;::::0;-1:-1:-1;;;26019:161:0;;12238:2:1;26019:161:0::1;::::0;::::1;12220:21:1::0;12277:2;12257:18;;;12250:30;12316:34;12296:18;;;12289:62;12387:33;12367:18;;;12360:61;12438:19;;26019:161:0::1;12036:427:1::0;26019:161:0::1;26191:11;:26:::0;;-1:-1:-1;;;;26191:26:0::1;-1:-1:-1::0;;;26191:26:0;::::1;;;;::::0;;26241:24:::1;:11:::0;26256:8:::1;26241:24;:::i;:::-;26228:10;:37:::0;;;26276:14:::1;:32:::0;;;26336:11:::1;::::0;26324:52:::1;::::0;;-1:-1:-1;;;26336:11:0;;::::1;;;12689:14:1::0;12682:22;12664:41;;12736:2;12721:18;;12714:34;;;;12764:18;;;12757:34;;;26324:52:0::1;::::0;12652:2:1;12637:18;26324:52:0::1;;;;;;;25695:689:::0;;;:::o;3123:201::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3212:22:0;::::1;3204:73;;;::::0;-1:-1:-1;;;3204:73:0;;13004:2:1;3204:73:0::1;::::0;::::1;12986:21:1::0;13043:2;13023:18;;;13016:30;13082:34;13062:18;;;13055:62;-1:-1:-1;;;13133:18:1;;;13126:36;13179:19;;3204:73:0::1;12802:402:1::0;3204:73:0::1;3288:28;3307:8;3288:18;:28::i;:::-;3123:201:::0;:::o;25305:127::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;25360:13:::1;:21:::0;;-1:-1:-1;;;;25360:21:0::1;::::0;;25397:27:::1;::::0;25411:12:::1;1514:25:1::0;;25397:27:0::1;::::0;1502:2:1;1487:18;25397:27:0::1;;;;;;;25305:127::o:0;28902:554::-;2287:6;;-1:-1:-1;;;;;2287:6:0;1161:10;2434:23;2426:68;;;;-1:-1:-1;;;2426:68:0;;;;;;;:::i;:::-;29006:6:::1;29001:448;29018:19:::0;;::::1;29001:448;;;29108:1;29085:8:::0;;29094:1;29085:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29085:25:0::1;::::0;29059:122:::1;;;;-1:-1:-1::0;;;29059:122:0::1;;;;;;;:::i;:::-;29223:25;:38;29249:8;;29258:1;29249:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29223:38:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;29223:38:0;;::::1;;29222:39;29196:148;;;::::0;-1:-1:-1;;;29196:148:0;;13411:2:1;29196:148:0::1;::::0;::::1;13393:21:1::0;13450:2;13430:18;;;13423:30;13489:34;13469:18;;;13462:62;-1:-1:-1;;;13540:18:1;;;13533:45;13595:19;;29196:148:0::1;13209:411:1::0;29196:148:0::1;29384:4;29359:9;:22;29369:8;;29378:1;29369:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29359:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;29359:22:0;:29;;-1:-1:-1;;29359:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29425:8;;29434:1;29425:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29408:29:0::1;;;;;;;;;;;29039:3;;29001:448;;17022:380:::0;-1:-1:-1;;;;;17158:19:0;;17150:68;;;;-1:-1:-1;;;17150:68:0;;13827:2:1;17150:68:0;;;13809:21:1;13866:2;13846:18;;;13839:30;13905:34;13885:18;;;13878:62;-1:-1:-1;;;13956:18:1;;;13949:34;14000:19;;17150:68:0;13625:400:1;17150:68:0;-1:-1:-1;;;;;17237:21:0;;17229:68;;;;-1:-1:-1;;;17229:68:0;;14232:2:1;17229:68:0;;;14214:21:1;14271:2;14251:18;;;14244:30;14310:34;14290:18;;;14283:62;-1:-1:-1;;;14361:18:1;;;14354:32;14403:19;;17229:68:0;14030:398:1;17229:68:0;-1:-1:-1;;;;;17310:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17362:32;;1514:25:1;;;17362:32:0;;1487:18:1;17362:32:0;;;;;;;17022:380;;;:::o;31147:3171::-;-1:-1:-1;;;;;31279:18:0;;31271:66;;;;-1:-1:-1;;;31271:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31356:16:0;;31348:64;;;;-1:-1:-1;;;31348:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31432:15:0;;;;;;:9;:15;;;;;;;;31431:16;:34;;;;-1:-1:-1;;;;;;31452:13:0;;;;;;:9;:13;;;;;;;;31451:14;31431:34;31423:84;;;;-1:-1:-1;;;31423:84:0;;14635:2:1;31423:84:0;;;14617:21:1;14674:2;14654:18;;;14647:30;14713:34;14693:18;;;14686:62;-1:-1:-1;;;14764:18:1;;;14757:35;14809:19;;31423:84:0;14433:401:1;31423:84:0;31524:6;31534:1;31524:11;31520:93;;31552:28;31568:4;31574:2;31578:1;31552:15;:28::i;31520:93::-;31664:9;;31625:17;;-1:-1:-1;;;31664:9:0;;;;31663:10;:39;;;;-1:-1:-1;;;;;;31678:24:0;;;;;;:18;:24;;;;;;;;31677:25;31663:39;:66;;;;-1:-1:-1;;;;;;31707:22:0;;;;;;:18;:22;;;;;;;;31706:23;31663:66;31659:393;;;-1:-1:-1;;;;;31750:29:0;;;;;;:25;:29;;;;;;;;:44;;;;;31793:1;31783:7;;:11;31750:44;31746:261;;;31848:3;31837:7;;31828:6;:16;;;;:::i;:::-;31827:24;;;;:::i;:::-;31815:36;;31746:261;;;-1:-1:-1;;;;;31890:31:0;;;;;;:25;:31;;;;;;;;:45;;;;;31934:1;31925:6;;:10;31890:45;31886:121;;;31988:3;31978:6;;31969;:15;;;;:::i;:::-;31968:23;;;;:::i;:::-;31956:35;;31886:121;32021:19;32031:9;32021:19;;:::i;:::-;;;31659:393;32068:13;;-1:-1:-1;;;32068:13:0;;;;32064:1497;;;2287:6;;-1:-1:-1;;;;;32120:15:0;;;2287:6;;32120:15;;;;:49;;-1:-1:-1;2287:6:0;;-1:-1:-1;;;;;32156:13:0;;;2287:6;;32156:13;;32120:49;:86;;;;-1:-1:-1;;;;;;32190:16:0;;;;32120:86;:128;;;;-1:-1:-1;;;;;;32227:21:0;;32241:6;32227:21;;32120:128;:159;;;;-1:-1:-1;32270:9:0;;-1:-1:-1;;;32270:9:0;;;;32269:10;32120:159;32098:1452;;;32319:14;;-1:-1:-1;;;32319:14:0;;;;32314:231;;-1:-1:-1;;;;;32392:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;32420:22:0;;;;;;:18;:22;;;;;;;;32392:50;32358:167;;;;-1:-1:-1;;;32358:167:0;;15174:2:1;32358:167:0;;;15156:21:1;15213:2;15193:18;;;15186:30;15252:33;15232:18;;;15225:61;15303:18;;32358:167:0;14972:355:1;32358:167:0;-1:-1:-1;;;;;32569:31:0;;;;;;:25;:31;;;;;;;;:64;;;;-1:-1:-1;;;;;;32605:28:0;;;;;;:24;:28;;;;;;;;32604:29;32569:64;32565:970;;;32702:14;;32692:6;:24;;32658:160;;;;-1:-1:-1;;;32658:160:0;;15534:2:1;32658:160:0;;;15516:21:1;15573:2;15553:18;;;15546:30;15612:34;15592:18;;;15585:62;-1:-1:-1;;;15663:18:1;;;15656:48;15721:19;;32658:160:0;15332:414:1;32658:160:0;32901:9;;-1:-1:-1;;;;;10341:18:0;;10314:7;10341:18;;;;;;;;;;;32875:22;;:6;:22;:::i;:::-;:35;;32841:155;;;;-1:-1:-1;;;32841:155:0;;;;;;;:::i;:::-;32565:970;;;-1:-1:-1;;;;;33026:29:0;;;;;;:25;:29;;;;;;;;:64;;;;-1:-1:-1;;;;;;33060:30:0;;;;;;:24;:30;;;;;;;;33059:31;33026:64;33022:513;;;33159:14;;33149:6;:24;;33115:161;;;;-1:-1:-1;;;33115:161:0;;16356:2:1;33115:161:0;;;16338:21:1;16395:2;16375:18;;;16368:30;16434:34;16414:18;;;16407:62;-1:-1:-1;;;16485:18:1;;;16478:49;16544:19;;33115:161:0;16154:415:1;33022:513:0;-1:-1:-1;;;;;33307:28:0;;;;;;:24;:28;;;;;;;;33302:233;;33420:9;;-1:-1:-1;;;;;10341:18:0;;10314:7;10341:18;;;;;;;;;;;33394:22;;:6;:22;:::i;:::-;:35;;33360:155;;;;-1:-1:-1;;;33360:155:0;;;;;;;:::i;:::-;33617:4;33573:23;10341:18;;;;;;;;;;;33684:14;;10341:18;;33573:23;33684:19;;33701:2;33684:19;:::i;:::-;33662:18;;:42;;;;:::i;:::-;33732:11;;33634:70;;-1:-1:-1;33717:12:0;;-1:-1:-1;;;33732:11:0;;;;:57;;;;;33779:10;;33760:15;:29;;33732:57;:110;;;;;33825:17;33806:15;:36;;33732:110;33717:125;;33873:7;:34;;;;-1:-1:-1;33898:9:0;;-1:-1:-1;;;33898:9:0;;;;33897:10;33873:34;:83;;;;-1:-1:-1;;;;;;33925:31:0;;;;;;:25;:31;;;;;;;;33924:32;33873:83;:125;;;;-1:-1:-1;;;;;;33974:24:0;;;;;;:18;:24;;;;;;;;33973:25;33873:125;:165;;;;-1:-1:-1;;;;;;34016:22:0;;;;;;:18;:22;;;;;;;;34015:23;33873:165;33855:305;;;34065:9;:16;;-1:-1:-1;;;;34065:16:0;-1:-1:-1;;;34065:16:0;;;34105:10;;34096:20;;:8;:20::i;:::-;34131:9;:17;;-1:-1:-1;;;;34131:17:0;;;33855:305;34176:13;;34172:93;;34206:47;34222:4;34236;34243:9;34206:15;:47::i;:::-;34277:33;34293:4;34299:2;34303:6;34277:15;:33::i;:::-;31260:3058;;;;31147:3171;;;:::o;3484:191::-;3577:6;;;-1:-1:-1;;;;;3594:17:0;;;-1:-1:-1;;;;;;3594:17:0;;;;;;;3627:40;;3577:6;;;3594:17;3577:6;;3627:40;;3558:16;;3627:40;3547:128;3484:191;:::o;14265:721::-;-1:-1:-1;;;;;14405:20:0;;14397:70;;;;-1:-1:-1;;;14397:70:0;;16776:2:1;14397:70:0;;;16758:21:1;16815:2;16795:18;;;16788:30;16854:34;16834:18;;;16827:62;-1:-1:-1;;;16905:18:1;;;16898:35;16950:19;;14397:70:0;16574:401:1;14397:70:0;-1:-1:-1;;;;;14486:23:0;;14478:71;;;;-1:-1:-1;;;14478:71:0;;17182:2:1;14478:71:0;;;17164:21:1;17221:2;17201:18;;;17194:30;17260:34;17240:18;;;17233:62;-1:-1:-1;;;17311:18:1;;;17304:33;17354:19;;14478:71:0;16980:399:1;14478:71:0;-1:-1:-1;;;;;14646:17:0;;14622:21;14646:17;;;;;;;;;;;14682:23;;;;14674:74;;;;-1:-1:-1;;;14674:74:0;;17586:2:1;14674:74:0;;;17568:21:1;17625:2;17605:18;;;17598:30;17664:34;17644:18;;;17637:62;-1:-1:-1;;;17715:18:1;;;17708:36;17761:19;;14674:74:0;17384:402:1;14674:74:0;-1:-1:-1;;;;;14776:17:0;;;:9;:17;;;;;;;;;;;14796:22;;;14776:42;;14836:20;;;;;;;;:30;;14812:6;;14776:9;14836:30;;14812:6;;14836:30;:::i;:::-;;;;;;;;14901:9;-1:-1:-1;;;;;14884:35:0;14893:6;-1:-1:-1;;;;;14884:35:0;;14912:6;14884:35;;;;1514:25:1;;1502:2;1487:18;;1368:177;14884:35:0;;;;;;;;14932:46;29631:400;34326:624;34408:16;;;34422:1;34408:16;;;;;;;;34384:21;;34408:16;;;;;;;;;;-1:-1:-1;34408:16:0;34384:40;;34453:4;34435;34440:1;34435:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;34435:23:0;;;-1:-1:-1;;;;;34435:23:0;;;;;34479:16;-1:-1:-1;;;;;34479:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34469:4;34474:1;34469:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;34469:33:0;;;-1:-1:-1;;;;;34469:33:0;;;;;34515:63;34532:4;34547:16;34566:11;34515:8;:63::i;:::-;34589:197;;-1:-1:-1;;;34589:197:0;;-1:-1:-1;;;;;34589:16:0;:67;;;;:197;;34671:11;;34697:1;;34713:4;;34740;;34760:15;;34589:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34820:15:0;34799:18;:36;-1:-1:-1;;34892:9:0;;34884:58;;34848:12;;-1:-1:-1;;;;;34892:9:0;;34916:21;;34848:12;34884:58;34848:12;34884:58;34916:21;34892:9;34884:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34326:624:0:o;14:226:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:1;;14:226;-1:-1:-1;14:226:1:o;245:418::-;394:2;383:9;376:21;357:4;426:6;420:13;469:6;464:2;453:9;449:18;442:34;528:6;523:2;515:6;511:15;506:2;495:9;491:18;485:50;584:1;579:2;570:6;559:9;555:22;551:31;544:42;654:2;647;643:7;638:2;630:6;626:15;622:29;611:9;607:45;603:54;595:62;;;245:418;;;;:::o;668:131::-;-1:-1:-1;;;;;743:31:1;;733:42;;723:70;;789:1;786;779:12;804:367;872:6;880;933:2;921:9;912:7;908:23;904:32;901:52;;;949:1;946;939:12;901:52;988:9;975:23;1007:31;1032:5;1007:31;:::i;:::-;1057:5;1135:2;1120:18;;;;1107:32;;-1:-1:-1;;;804:367:1:o;1550:508::-;1627:6;1635;1643;1696:2;1684:9;1675:7;1671:23;1667:32;1664:52;;;1712:1;1709;1702:12;1664:52;1751:9;1738:23;1770:31;1795:5;1770:31;:::i;:::-;1820:5;-1:-1:-1;1877:2:1;1862:18;;1849:32;1890:33;1849:32;1890:33;:::i;:::-;1550:508;;1942:7;;-1:-1:-1;;;2022:2:1;2007:18;;;;1994:32;;1550:508::o;2063:610::-;2149:6;2157;2210:2;2198:9;2189:7;2185:23;2181:32;2178:52;;;2226:1;2223;2216:12;2178:52;2266:9;2253:23;2299:18;2291:6;2288:30;2285:50;;;2331:1;2328;2321:12;2285:50;2354:22;;2407:4;2399:13;;2395:27;-1:-1:-1;2385:55:1;;2436:1;2433;2426:12;2385:55;2476:2;2463:16;2502:18;2494:6;2491:30;2488:50;;;2534:1;2531;2524:12;2488:50;2587:7;2582:2;2572:6;2569:1;2565:14;2561:2;2557:23;2553:32;2550:45;2547:65;;;2608:1;2605;2598:12;2547:65;2639:2;2631:11;;;;;2661:6;;-1:-1:-1;2063:610:1;-1:-1:-1;;;2063:610:1:o;3075:247::-;3134:6;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;3242:9;3229:23;3261:31;3286:5;3261:31;:::i;:::-;3311:5;3075:247;-1:-1:-1;;;3075:247:1:o;3327:388::-;3395:6;3403;3456:2;3444:9;3435:7;3431:23;3427:32;3424:52;;;3472:1;3469;3462:12;3424:52;3511:9;3498:23;3530:31;3555:5;3530:31;:::i;:::-;3580:5;-1:-1:-1;3637:2:1;3622:18;;3609:32;3650:33;3609:32;3650:33;:::i;:::-;3702:7;3692:17;;;3327:388;;;;;:::o;3720:118::-;3806:5;3799:13;3792:21;3785:5;3782:32;3772:60;;3828:1;3825;3818:12;3843:382;3908:6;3916;3969:2;3957:9;3948:7;3944:23;3940:32;3937:52;;;3985:1;3982;3975:12;3937:52;4024:9;4011:23;4043:31;4068:5;4043:31;:::i;:::-;4093:5;-1:-1:-1;4150:2:1;4135:18;;4122:32;4163:30;4122:32;4163:30;:::i;4230:481::-;4304:6;4312;4320;4373:2;4361:9;4352:7;4348:23;4344:32;4341:52;;;4389:1;4386;4379:12;4341:52;4428:9;4415:23;4447:28;4469:5;4447:28;:::i;:::-;4494:5;4572:2;4557:18;;4544:32;;-1:-1:-1;4675:2:1;4660:18;;;4647:32;;4230:481;-1:-1:-1;;;4230:481:1:o;4716:356::-;4918:2;4900:21;;;4937:18;;;4930:30;4996:34;4991:2;4976:18;;4969:62;5063:2;5048:18;;4716:356::o;5077:127::-;5138:10;5133:3;5129:20;5126:1;5119:31;5169:4;5166:1;5159:15;5193:4;5190:1;5183:15;5209:168;5282:9;;;5313;;5330:15;;;5324:22;;5310:37;5300:71;;5351:18;;:::i;5382:217::-;5422:1;5448;5438:132;;5492:10;5487:3;5483:20;5480:1;5473:31;5527:4;5524:1;5517:15;5555:4;5552:1;5545:15;5438:132;-1:-1:-1;5584:9:1;;5382:217::o;6026:380::-;6105:1;6101:12;;;;6148;;;6169:61;;6223:4;6215:6;6211:17;6201:27;;6169:61;6276:2;6268:6;6265:14;6245:18;6242:38;6239:161;;6322:10;6317:3;6313:20;6310:1;6303:31;6357:4;6354:1;6347:15;6385:4;6382:1;6375:15;6239:161;;6026:380;;;:::o;7652:127::-;7713:10;7708:3;7704:20;7701:1;7694:31;7744:4;7741:1;7734:15;7768:4;7765:1;7758:15;7784:399;7986:2;7968:21;;;8025:2;8005:18;;;7998:30;8064:34;8059:2;8044:18;;8037:62;-1:-1:-1;;;8130:2:1;8115:18;;8108:33;8173:3;8158:19;;7784:399::o;8188:125::-;8253:9;;;8274:10;;;8271:36;;;8287:18;;:::i;8318:184::-;8388:6;8441:2;8429:9;8420:7;8416:23;8412:32;8409:52;;;8457:1;8454;8447:12;8409:52;-1:-1:-1;8480:16:1;;8318:184;-1:-1:-1;8318:184:1:o;8786:245::-;8853:6;8906:2;8894:9;8885:7;8881:23;8877:32;8874:52;;;8922:1;8919;8912:12;8874:52;8954:9;8948:16;8973:28;8995:5;8973:28;:::i;11042:251::-;11112:6;11165:2;11153:9;11144:7;11140:23;11136:32;11133:52;;;11181:1;11178;11171:12;11133:52;11213:9;11207:16;11232:31;11257:5;11232:31;:::i;14839:128::-;14906:9;;;14927:11;;;14924:37;;;14941:18;;:::i;15751:398::-;15953:2;15935:21;;;15992:2;15972:18;;;15965:30;16031:34;16026:2;16011:18;;16004:62;-1:-1:-1;;;16097:2:1;16082:18;;16075:32;16139:3;16124:19;;15751:398::o;17923:959::-;18185:4;18233:3;18222:9;18218:19;18264:6;18253:9;18246:25;18307:6;18302:2;18291:9;18287:18;18280:34;18350:3;18345:2;18334:9;18330:18;18323:31;18374:6;18409;18403:13;18440:6;18432;18425:22;18478:3;18467:9;18463:19;18456:26;;18517:2;18509:6;18505:15;18491:29;;18538:1;18548:195;18562:6;18559:1;18556:13;18548:195;;;18627:13;;-1:-1:-1;;;;;18623:39:1;18611:52;;18692:2;18718:15;;;;18683:12;;;;18659:1;18577:9;18548:195;;;-1:-1:-1;;;;;;;18799:32:1;;;;18794:2;18779:18;;18772:60;-1:-1:-1;;18863:3:1;18848:19;18841:35;18760:3;17923:959;-1:-1:-1;;;17923:959:1:o
Swarm Source
ipfs://4d7e76fde4f144be70919a64d6d83eab9e9b522450846fea53ef195ba4501585
Loading...
Loading
Loading...
Loading
OVERVIEW
YieldStone is building an ecosystem that combines AI-powered analytics, a decentralized GPU marketplace, and tokenized real-world assets like real estate. With $YIELD at its core, our platform provides real-time insights, scalable compute power, and stable, asset-backed returns.
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.001115 | 6,241,508.6616 | $6,959.53 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.