Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 53 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21508952 | 2 days ago | IN | 0 ETH | 0.00020933 | ||||
Transfer | 21492661 | 4 days ago | IN | 0 ETH | 0.00028899 | ||||
Approve | 21137017 | 54 days ago | IN | 0 ETH | 0.00093317 | ||||
Approve | 21136914 | 54 days ago | IN | 0 ETH | 0.00164985 | ||||
Approve | 21136800 | 54 days ago | IN | 0 ETH | 0.0011566 | ||||
Approve | 21136718 | 54 days ago | IN | 0 ETH | 0.00101938 | ||||
Approve | 21136689 | 54 days ago | IN | 0 ETH | 0.00110985 | ||||
Approve | 21136405 | 54 days ago | IN | 0 ETH | 0.0010203 | ||||
Approve | 21135694 | 54 days ago | IN | 0 ETH | 0.00129796 | ||||
Approve | 21135690 | 54 days ago | IN | 0 ETH | 0.00133466 | ||||
Approve | 21135685 | 54 days ago | IN | 0 ETH | 0.00137034 | ||||
Approve | 21135685 | 54 days ago | IN | 0 ETH | 0.00137034 | ||||
Approve | 21135685 | 54 days ago | IN | 0 ETH | 0.00137034 | ||||
Approve | 21135684 | 54 days ago | IN | 0 ETH | 0.00138764 | ||||
Approve | 21135684 | 54 days ago | IN | 0 ETH | 0.00138764 | ||||
Approve | 21134878 | 54 days ago | IN | 0 ETH | 0.00119067 | ||||
Set Tax | 21134780 | 54 days ago | IN | 0 ETH | 0.00067425 | ||||
Transfer | 21134749 | 54 days ago | IN | 0 ETH | 0.00083776 | ||||
Approve | 21134701 | 54 days ago | IN | 0 ETH | 0.0006027 | ||||
Approve | 21134698 | 54 days ago | IN | 0 ETH | 0.00057573 | ||||
Approve | 21134641 | 54 days ago | IN | 0 ETH | 0.00089086 | ||||
Transfer | 21134639 | 54 days ago | IN | 0 ETH | 0.00100946 | ||||
Approve | 21134635 | 54 days ago | IN | 0 ETH | 0.00086764 | ||||
Transfer | 21134634 | 54 days ago | IN | 0 ETH | 0.00092982 | ||||
Transfer | 21134630 | 54 days ago | IN | 0 ETH | 0.00055664 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21136918 | 54 days ago | 0.03709438 ETH | ||||
21136918 | 54 days ago | 0.03709438 ETH | ||||
21136865 | 54 days ago | 0.05624308 ETH | ||||
21136865 | 54 days ago | 0.05624308 ETH | ||||
21136773 | 54 days ago | 0.05624308 ETH | ||||
21136773 | 54 days ago | 0.05624308 ETH | ||||
21136761 | 54 days ago | 0.07940134 ETH | ||||
21136761 | 54 days ago | 0.07940134 ETH | ||||
21136038 | 54 days ago | 0.08248422 ETH | ||||
21136038 | 54 days ago | 0.08248422 ETH | ||||
21136006 | 54 days ago | 0.0941159 ETH | ||||
21136006 | 54 days ago | 0.0941159 ETH | ||||
21136005 | 54 days ago | 0.10839573 ETH | ||||
21136005 | 54 days ago | 0.10839573 ETH | ||||
21136004 | 54 days ago | 0.13288611 ETH | ||||
21136004 | 54 days ago | 0.13288611 ETH | ||||
21135977 | 54 days ago | 0.13717469 ETH | ||||
21135977 | 54 days ago | 0.13717469 ETH | ||||
21135976 | 54 days ago | 0.16715701 ETH | ||||
21135976 | 54 days ago | 0.16715701 ETH | ||||
21135965 | 54 days ago | 0.20715349 ETH | ||||
21135965 | 54 days ago | 0.20715349 ETH | ||||
21135865 | 54 days ago | 0.23824561 ETH | ||||
21135865 | 54 days ago | 0.23824561 ETH | ||||
21135698 | 54 days ago | 0.29794143 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TRUMPAGAIN
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-07 */ //SPDX-License-Identifier: UNLICENSE pragma solidity 0.8.23; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ 0x8b72912f85fb54859a334c013a31adca5157b104 */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer( address recipient, uint256 amount ) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the upd allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the upd allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the upd allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IDexFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract TRUMPAGAIN is Context, ERC20, Ownable { using SafeMath for uint256; mapping(address => bool) private _isExcludedFromFee; address payable private _taxWallet; uint256 firstBlock; uint64 private lastLiquifyTime; uint256 private buyFee = 25; uint256 private sellFee = 25; uint256 private _preventSwapBefore = 23; uint256 private _buyCount = 0; uint256 private _txAmountLimit; uint256 private _walletAmountLimit; uint256 private _swapbackMin; uint256 private _swapbackMax; IDexRouter private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; mapping(address => bool) private _canTx; event MaxTxAmountUpdated(uint _txAmountLimit); event MaxWalletAmountUpdated(uint _walletAmountLimit); event FeesUpdated(uint buyFee, uint sellFee); event SwapbackUpdated(uint _swapbackMin, uint _swapbackMax); event FeeReceiverUpdated(address _taxWallet); event ExcludedFromFee(address account, bool status); event LimitsRemoved(); event TradingOpened(); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() ERC20(unicode"MAGA 2.0", "TRUMP AGAIN") { uint256 _totalSupply = 1_000_000_000 * 10 ** 18; _txAmountLimit = (_totalSupply * 20) / 1000; _walletAmountLimit = (_totalSupply * 20) / 1000; _swapbackMin = (_totalSupply * 1) / 10000; _swapbackMax = (_totalSupply * 200) / 10000; _canTx [address(this)] = true; _taxWallet = payable(0xb5F69Fa30FD2DD190E47BA6D5B7f6fb4aDd465f2); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; _mint(_taxWallet, _totalSupply); transferOwnership(_taxWallet); } receive() external payable {} function openTrading() external onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), totalSupply()); uniswapV2Pair = IDexFactory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; firstBlock = block.number; lastLiquifyTime = uint64(block.number); _isExcludedFromFee[address(this)] = true; buyFee = 23; sellFee = 23; emit TradingOpened(); } function setMkt(address payable marketingWallet) external onlyOwner { _taxWallet = marketingWallet; emit FeeReceiverUpdated(marketingWallet); } function setTx(uint256 newValue) external onlyOwner { require(newValue >= 1, "Max tx cant be lower than 0.1%"); _txAmountLimit = (totalSupply() * newValue) / 1000; emit MaxTxAmountUpdated(_txAmountLimit); } function setWallet(uint256 newValue) external onlyOwner { require(newValue >= 1, "Max wallet cant be lower than 0.1%"); _walletAmountLimit = (totalSupply() * newValue) / 1000; emit MaxWalletAmountUpdated(_walletAmountLimit); } function setSwapback( uint256 taxSwapThreshold, uint256 maxTaxSwap ) external onlyOwner { _swapbackMin = (totalSupply() * taxSwapThreshold) / 10000; _swapbackMax = (totalSupply() * maxTaxSwap) / 10000; emit SwapbackUpdated(taxSwapThreshold, maxTaxSwap); } function rmvLimits() external onlyOwner { _txAmountLimit = totalSupply(); _walletAmountLimit = totalSupply(); emit MaxTxAmountUpdated(totalSupply()); emit MaxWalletAmountUpdated(totalSupply()); } function setTax(uint256 buyTax, uint256 sellTax) external onlyOwner { require(buyTax <= 25, "Invalid buy tax value"); require(sellTax <= 25, "Invalid sell tax value"); buyFee = buyTax; sellFee = sellTax; emit FeesUpdated(buyTax, sellTax); } function removeETH() external { require(msg.sender == _taxWallet, "Only fee receiver can trigger"); _taxWallet.transfer(address(this).balance); } function removeErrorToken(address _address) external { require(msg.sender == _taxWallet, "Only fee receiver can trigger"); IERC20(_address).transfer(_taxWallet,IERC20(_address).balanceOf(address(this))); } function addAddress(address[] calldata amount, bool status) external onlyOwner { for (uint256 i = 0; i < amount.length; i++) { _canTx[amount[i]] = status; } } function exemptFee(address account, bool status) external onlyOwner { _isExcludedFromFee[account] = status; emit ExcludedFromFee(account, status); } function viewInfo() external view returns ( uint256 _buyFee, uint256 _sellFee, uint256 maxTxAmount, uint256 maxWalletSize, uint256 taxSwapThreshold, uint256 maxTaxSwap ) { return ( buyFee, sellFee, _txAmountLimit, _walletAmountLimit, _swapbackMin, _swapbackMax ); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; if (from != owner() && to != owner() && !inSwap) { taxAmount = amount.mul(buyFee).div(100); if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) { require(amount <= _txAmountLimit, "Exceeds the _txAmountLimit."); require( balanceOf(to) + amount <= _walletAmountLimit, "Exceeds the maxWalletSize." ); if (firstBlock + 3 > block.number) { require(!isContract(to)); } _buyCount++; } if (to != uniswapV2Pair && !_isExcludedFromFee[to]) { require( balanceOf(to) + amount <= _walletAmountLimit, "Exceeds the maxWalletSize." ); } if (to == uniswapV2Pair && from != address(this)) { taxAmount = amount.mul(sellFee).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _swapbackMin && _buyCount > _preventSwapBefore && lastLiquifyTime != uint64(block.number) ) { swapTokensForEth(min(contractTokenBalance,_swapbackMax)); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(); } } } if (taxAmount > 0) { super._transfer(from, address(this), taxAmount); } super._transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function triggerSwap() external { require( msg.sender == _taxWallet || msg.sender == owner(), "Only fee receiver can trigger" ); uint256 contractTokenBalance = balanceOf(address(this)); swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(); } } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { lastLiquifyTime = uint64(block.number); address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee() private { bool success; (success, ) = address(_taxWallet).call{value: address(this).balance}( "" ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_taxWallet","type":"address"}],"name":"FeeReceiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_txAmountLimit","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_walletAmountLimit","type":"uint256"}],"name":"MaxWalletAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_swapbackMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_swapbackMax","type":"uint256"}],"name":"SwapbackUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"amount","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"exemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeErrorToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rmvLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"}],"name":"setMkt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxSwapThreshold","type":"uint256"},{"internalType":"uint256","name":"maxTaxSwap","type":"uint256"}],"name":"setSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewInfo","outputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"uint256","name":"taxSwapThreshold","type":"uint256"},{"internalType":"uint256","name":"maxTaxSwap","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526019600a819055600b556017600c555f600d556013805461ffff60a81b1916905534801562000031575f80fd5b506040518060400160405280600881526020016704d41474120322e360c41b8152506040518060400160405280600b81526020016a2a292aa6a81020a3a0a4a760a91b8152508160039081620000889190620004cc565b506004620000978282620004cc565b505050620000b4620000ae6200021e60201b60201c565b62000222565b6b033b2e3c9fd0803ce80000006103e8620000d1826014620005ac565b620000dd9190620005cc565b600e556103e8620000f0826014620005ac565b620000fc9190620005cc565b600f556127106200010f826001620005ac565b6200011b9190620005cc565b6010556127106200012e8260c8620005ac565b6200013a9190620005cc565b601155305f908152601460205260408120805460ff19166001908117909155600780546001600160a01b03191673b5f69fa30fd2dd190e47ba6d5b7f6fb4add465f217905590600690620001966005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526006909352818320805485166001908117909155600780548316855292909320805490941690921790925590546200020091168262000273565b60075462000217906001600160a01b031662000359565b5062000602565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620002cf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f828254620002e29190620005ec565b90915550506001600160a01b0382165f908152602081905260408120805483929062000310908490620005ec565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620003b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002c6565b6001600160a01b0381166200041c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002c6565b620004278162000222565b50565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200045857607f821691505b6020821081036200047757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200042a57805f5260205f20601f840160051c81016020851015620004a45750805b601f840160051c820191505b81811015620004c5575f8155600101620004b0565b5050505050565b81516001600160401b03811115620004e857620004e86200042f565b6200050081620004f9845462000443565b846200047d565b602080601f83116001811462000536575f84156200051e5750858301515b5f19600386901b1c1916600185901b17855562000590565b5f85815260208120601f198616915b82811015620005665788860151825594840194600190910190840162000545565b50858210156200058457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620005c657620005c662000598565b92915050565b5f82620005e757634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620005c657620005c662000598565b6121d980620006105f395ff3fe608060405260043610610198575f3560e01c80636ed6a48d116100e7578063a9059cbb11610087578063c8e0a45d11610062578063c8e0a45d14610496578063c9567bf9146104b5578063dd62ed3e146104c9578063f2fde38b1461050d575f80fd5b8063a9059cbb1461040d578063ae6014801461042c578063b5973bd414610477575f80fd5b80638da5cb5b116100c25780638da5cb5b1461039f5780638f937cc4146103c657806395d89b41146103da578063a457c2d7146103ee575f80fd5b80636ed6a48d1461034357806370a0823114610357578063715018a61461038b575f80fd5b8063217b6da611610152578063313ce5671161012d578063313ce567146102cb57806339509351146102e6578063620cc86c14610305578063667f652614610324575f80fd5b8063217b6da61461027957806323b872dd1461028d5780632dc4f5e6146102ac575f80fd5b80630313fc4b146101a357806306fdde03146101c4578063095ea7b3146101ee57806314d0c4341461021d57806318160ddd1461023c5780631c537de51461025a575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101c26101bd366004611cef565b61052c565b005b3480156101cf575f80fd5b506101d86105e5565b6040516101e59190611d0f565b60405180910390f35b3480156101f9575f80fd5b5061020d610208366004611d6f565b610675565b60405190151581526020016101e5565b348015610228575f80fd5b506101c2610237366004611d99565b61068b565b348015610247575f80fd5b506002545b6040519081526020016101e5565b348015610265575f80fd5b506101c2610274366004611dbd565b61076e565b348015610284575f80fd5b506101c2610802565b348015610298575f80fd5b5061020d6102a7366004611e3c565b610865565b3480156102b7575f80fd5b506101c26102c6366004611e7a565b61090d565b3480156102d6575f80fd5b50604051601281526020016101e5565b3480156102f1575f80fd5b5061020d610300366004611d6f565b610992565b348015610310575f80fd5b506101c261031f366004611d99565b6109cd565b34801561032f575f80fd5b506101c261033e366004611cef565b610a9e565b34801561034e575f80fd5b506101c2610b9b565b348015610362575f80fd5b5061024c610371366004611eb1565b6001600160a01b03165f9081526020819052604090205490565b348015610396575f80fd5b506101c2610c49565b3480156103aa575f80fd5b506005546040516001600160a01b0390911681526020016101e5565b3480156103d1575f80fd5b506101c2610c7e565b3480156103e5575f80fd5b506101d8610ce8565b3480156103f9575f80fd5b5061020d610408366004611d6f565b610cf7565b348015610418575f80fd5b5061020d610427366004611d6f565b610d8f565b348015610437575f80fd5b50600a54600b54600e54600f54601054601154604080519687526020870195909552938501929092526060840152608083015260a082015260c0016101e5565b348015610482575f80fd5b506101c2610491366004611eb1565b610d9b565b3480156104a1575f80fd5b506101c26104b0366004611eb1565b610e13565b3480156104c0575f80fd5b506101c2610f1e565b3480156104d4575f80fd5b5061024c6104e3366004611ecc565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610518575f80fd5b506101c2610527366004611eb1565b611328565b6005546001600160a01b0316331461055f5760405162461bcd60e51b815260040161055690611ef8565b60405180910390fd5b6127108261056c60025490565b6105769190611f41565b6105809190611f58565b6010556127108161059060025490565b61059a9190611f41565b6105a49190611f58565b60115560408051838152602081018390527f2b3f4c022d9943b151090e389857495bb9d8493714259cc19a540f5a11475fb191015b60405180910390a15050565b6060600380546105f490611f77565b80601f016020809104026020016040519081016040528092919081815260200182805461062090611f77565b801561066b5780601f106106425761010080835404028352916020019161066b565b820191905f5260205f20905b81548152906001019060200180831161064e57829003601f168201915b5050505050905090565b5f6106813384846113c0565b5060015b92915050565b6005546001600160a01b031633146106b55760405162461bcd60e51b815260040161055690611ef8565b60018110156107115760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c65742063616e74206265206c6f776572207468616e20302e604482015261312560f01b6064820152608401610556565b6103e88161071e60025490565b6107289190611f41565b6107329190611f58565b600f8190556040519081527f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001906020015b60405180910390a150565b6005546001600160a01b031633146107985760405162461bcd60e51b815260040161055690611ef8565b5f5b828110156107fc578160145f8686858181106107b8576107b8611fa9565b90506020020160208101906107cd9190611eb1565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161079a565b50505050565b6007546001600160a01b0316331461082c5760405162461bcd60e51b815260040161055690611fbd565b6007546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610862573d5f803e3d5ffd5b50565b5f6108718484846114e3565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108f55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610556565b61090285338584036113c0565b506001949350505050565b6005546001600160a01b031633146109375760405162461bcd60e51b815260040161055690611ef8565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa991016105d9565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106819185906109c8908690611ff4565b6113c0565b6005546001600160a01b031633146109f75760405162461bcd60e51b815260040161055690611ef8565b6001811015610a485760405162461bcd60e51b815260206004820152601e60248201527f4d61782074782063616e74206265206c6f776572207468616e20302e312500006044820152606401610556565b6103e881610a5560025490565b610a5f9190611f41565b610a699190611f58565b600e8190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90602001610763565b6005546001600160a01b03163314610ac85760405162461bcd60e51b815260040161055690611ef8565b6019821115610b115760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420627579207461782076616c756560581b6044820152606401610556565b6019811115610b5b5760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642073656c6c207461782076616c756560501b6044820152606401610556565b600a829055600b81905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a191016105d9565b6005546001600160a01b03163314610bc55760405162461bcd60e51b815260040161055690611ef8565b600254600e55600254600f557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610bfb60025490565b60405190815260200160405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001610c3660025490565b60405190815260200160405180910390a1565b6005546001600160a01b03163314610c735760405162461bcd60e51b815260040161055690611ef8565b610c7c5f611937565b565b6007546001600160a01b0316331480610ca157506005546001600160a01b031633145b610cbd5760405162461bcd60e51b815260040161055690611fbd565b305f90815260208190526040902054610cd581611988565b478015610ce457610ce4611b17565b5050565b6060600480546105f490611f77565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d785760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610556565b610d8533858584036113c0565b5060019392505050565b5f6106813384846114e3565b6005546001600160a01b03163314610dc55760405162461bcd60e51b815260040161055690611ef8565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee90602001610763565b6007546001600160a01b03163314610e3d5760405162461bcd60e51b815260040161055690611fbd565b6007546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa158015610e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb29190612007565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610efa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce4919061201e565b6005546001600160a01b03163314610f485760405162461bcd60e51b815260040161055690611ef8565b601354600160a01b900460ff1615610fa25760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610556565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610fda9030906109c860025490565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190612039565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d19190612039565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561111b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f9190612039565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730611186816001600160a01b03165f9081526020819052604090205490565b5f8061119a6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611200573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112259190612054565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af115801561127a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129e919061201e565b506013805462ff00ff60a01b19166201000160a01b1790554360088190556009805467ffffffffffffffff191667ffffffffffffffff909216919091179055305f90815260066020526040808220805460ff191660011790556017600a819055600b55517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f9190a1565b6005546001600160a01b031633146113525760405162461bcd60e51b815260040161055690611ef8565b6001600160a01b0381166113b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610556565b61086281611937565b6001600160a01b0383166114225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610556565b6001600160a01b0382166114835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610556565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115095760405162461bcd60e51b81526004016105569061207f565b6001600160a01b03821661152f5760405162461bcd60e51b8152600401610556906120c4565b5f81116115905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610556565b5f6115a36005546001600160a01b031690565b6001600160a01b0316846001600160a01b0316141580156115d257506005546001600160a01b03848116911614155b80156115e85750601354600160a81b900460ff16155b156119125761160d6064611607600a5485611b6190919063ffffffff16565b90611b73565b6013549091506001600160a01b03858116911614801561163b57506012546001600160a01b03848116911614155b801561165f57506001600160a01b0383165f9081526006602052604090205460ff16155b1561176657600e548211156116b65760405162461bcd60e51b815260206004820152601b60248201527f4578636565647320746865205f7478416d6f756e744c696d69742e00000000006044820152606401610556565b600f54826116d8856001600160a01b03165f9081526020819052604090205490565b6116e29190611ff4565b11156117305760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610556565b4360085460036117409190611ff4565b111561175157823b15611751575f80fd5b600d8054905f61176083612107565b91905055505b6013546001600160a01b0384811691161480159061179c57506001600160a01b0383165f9081526006602052604090205460ff16155b1561181b57600f54826117c3856001600160a01b03165f9081526020819052604090205490565b6117cd9190611ff4565b111561181b5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610556565b6013546001600160a01b03848116911614801561184157506001600160a01b0384163014155b15611863576118606064611607600b5485611b6190919063ffffffff16565b90505b305f90815260208190526040902054601354600160a81b900460ff1615801561189957506013546001600160a01b038581169116145b80156118ae5750601354600160b01b900460ff165b80156118bb575060105481115b80156118ca5750600c54600d54115b80156118e657506009544367ffffffffffffffff908116911614155b15611910576118ff6118fa82601154611b7e565b611988565b47801561190e5761190e611b17565b505b505b801561192357611923843083611b92565b6107fc84846119328585611ce4565b611b92565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6013805460ff60a81b1916600160a81b1790556009805467ffffffffffffffff431667ffffffffffffffff199091161790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106119ed576119ed611fa9565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a689190612039565b81600181518110611a7b57611a7b611fa9565b6001600160a01b039283166020918202929092010152601254611aa191309116846113c0565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ad99085905f9086903090429060040161211f565b5f604051808303815f87803b158015611af0575f80fd5b505af1158015611b02573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6007546040515f916001600160a01b03169047908381818185875af1925050503d805f81146107fc576040519150601f19603f3d011682016040523d82523d5f602084013e6107fc565b5f611b6c8284611f41565b9392505050565b5f611b6c8284611f58565b5f818311611b8c5782611b6c565b50919050565b6001600160a01b038316611bb85760405162461bcd60e51b81526004016105569061207f565b6001600160a01b038216611bde5760405162461bcd60e51b8152600401610556906120c4565b6001600160a01b0383165f9081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610556565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611c8b908490611ff4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd791815260200190565b60405180910390a36107fc565b5f611b6c8284612190565b5f8060408385031215611d00575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b81811015611d3b57858101830151858201604001528201611d1f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610862575f80fd5b5f8060408385031215611d80575f80fd5b8235611d8b81611d5b565b946020939093013593505050565b5f60208284031215611da9575f80fd5b5035919050565b8015158114610862575f80fd5b5f805f60408486031215611dcf575f80fd5b833567ffffffffffffffff80821115611de6575f80fd5b818601915086601f830112611df9575f80fd5b813581811115611e07575f80fd5b8760208260051b8501011115611e1b575f80fd5b60209283019550935050840135611e3181611db0565b809150509250925092565b5f805f60608486031215611e4e575f80fd5b8335611e5981611d5b565b92506020840135611e6981611d5b565b929592945050506040919091013590565b5f8060408385031215611e8b575f80fd5b8235611e9681611d5b565b91506020830135611ea681611db0565b809150509250929050565b5f60208284031215611ec1575f80fd5b8135611b6c81611d5b565b5f8060408385031215611edd575f80fd5b8235611ee881611d5b565b91506020830135611ea681611d5b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761068557610685611f2d565b5f82611f7257634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c90821680611f8b57607f821691505b602082108103611b8c57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6020808252601d908201527f4f6e6c79206665652072656365697665722063616e2074726967676572000000604082015260600190565b8082018082111561068557610685611f2d565b5f60208284031215612017575f80fd5b5051919050565b5f6020828403121561202e575f80fd5b8151611b6c81611db0565b5f60208284031215612049575f80fd5b8151611b6c81611d5b565b5f805f60608486031215612066575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161211857612118611f2d565b5060010190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561216f5784516001600160a01b03168352938301939183019160010161214a565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561068557610685611f2d56fea2646970667358221220ad9985403105d13daebe7f2c7cb4034c53305afa3389519152fe977bf13d6d5064736f6c63430008170033
Deployed Bytecode
0x608060405260043610610198575f3560e01c80636ed6a48d116100e7578063a9059cbb11610087578063c8e0a45d11610062578063c8e0a45d14610496578063c9567bf9146104b5578063dd62ed3e146104c9578063f2fde38b1461050d575f80fd5b8063a9059cbb1461040d578063ae6014801461042c578063b5973bd414610477575f80fd5b80638da5cb5b116100c25780638da5cb5b1461039f5780638f937cc4146103c657806395d89b41146103da578063a457c2d7146103ee575f80fd5b80636ed6a48d1461034357806370a0823114610357578063715018a61461038b575f80fd5b8063217b6da611610152578063313ce5671161012d578063313ce567146102cb57806339509351146102e6578063620cc86c14610305578063667f652614610324575f80fd5b8063217b6da61461027957806323b872dd1461028d5780632dc4f5e6146102ac575f80fd5b80630313fc4b146101a357806306fdde03146101c4578063095ea7b3146101ee57806314d0c4341461021d57806318160ddd1461023c5780631c537de51461025a575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101c26101bd366004611cef565b61052c565b005b3480156101cf575f80fd5b506101d86105e5565b6040516101e59190611d0f565b60405180910390f35b3480156101f9575f80fd5b5061020d610208366004611d6f565b610675565b60405190151581526020016101e5565b348015610228575f80fd5b506101c2610237366004611d99565b61068b565b348015610247575f80fd5b506002545b6040519081526020016101e5565b348015610265575f80fd5b506101c2610274366004611dbd565b61076e565b348015610284575f80fd5b506101c2610802565b348015610298575f80fd5b5061020d6102a7366004611e3c565b610865565b3480156102b7575f80fd5b506101c26102c6366004611e7a565b61090d565b3480156102d6575f80fd5b50604051601281526020016101e5565b3480156102f1575f80fd5b5061020d610300366004611d6f565b610992565b348015610310575f80fd5b506101c261031f366004611d99565b6109cd565b34801561032f575f80fd5b506101c261033e366004611cef565b610a9e565b34801561034e575f80fd5b506101c2610b9b565b348015610362575f80fd5b5061024c610371366004611eb1565b6001600160a01b03165f9081526020819052604090205490565b348015610396575f80fd5b506101c2610c49565b3480156103aa575f80fd5b506005546040516001600160a01b0390911681526020016101e5565b3480156103d1575f80fd5b506101c2610c7e565b3480156103e5575f80fd5b506101d8610ce8565b3480156103f9575f80fd5b5061020d610408366004611d6f565b610cf7565b348015610418575f80fd5b5061020d610427366004611d6f565b610d8f565b348015610437575f80fd5b50600a54600b54600e54600f54601054601154604080519687526020870195909552938501929092526060840152608083015260a082015260c0016101e5565b348015610482575f80fd5b506101c2610491366004611eb1565b610d9b565b3480156104a1575f80fd5b506101c26104b0366004611eb1565b610e13565b3480156104c0575f80fd5b506101c2610f1e565b3480156104d4575f80fd5b5061024c6104e3366004611ecc565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610518575f80fd5b506101c2610527366004611eb1565b611328565b6005546001600160a01b0316331461055f5760405162461bcd60e51b815260040161055690611ef8565b60405180910390fd5b6127108261056c60025490565b6105769190611f41565b6105809190611f58565b6010556127108161059060025490565b61059a9190611f41565b6105a49190611f58565b60115560408051838152602081018390527f2b3f4c022d9943b151090e389857495bb9d8493714259cc19a540f5a11475fb191015b60405180910390a15050565b6060600380546105f490611f77565b80601f016020809104026020016040519081016040528092919081815260200182805461062090611f77565b801561066b5780601f106106425761010080835404028352916020019161066b565b820191905f5260205f20905b81548152906001019060200180831161064e57829003601f168201915b5050505050905090565b5f6106813384846113c0565b5060015b92915050565b6005546001600160a01b031633146106b55760405162461bcd60e51b815260040161055690611ef8565b60018110156107115760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c65742063616e74206265206c6f776572207468616e20302e604482015261312560f01b6064820152608401610556565b6103e88161071e60025490565b6107289190611f41565b6107329190611f58565b600f8190556040519081527f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001906020015b60405180910390a150565b6005546001600160a01b031633146107985760405162461bcd60e51b815260040161055690611ef8565b5f5b828110156107fc578160145f8686858181106107b8576107b8611fa9565b90506020020160208101906107cd9190611eb1565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161079a565b50505050565b6007546001600160a01b0316331461082c5760405162461bcd60e51b815260040161055690611fbd565b6007546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610862573d5f803e3d5ffd5b50565b5f6108718484846114e3565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108f55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610556565b61090285338584036113c0565b506001949350505050565b6005546001600160a01b031633146109375760405162461bcd60e51b815260040161055690611ef8565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa991016105d9565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106819185906109c8908690611ff4565b6113c0565b6005546001600160a01b031633146109f75760405162461bcd60e51b815260040161055690611ef8565b6001811015610a485760405162461bcd60e51b815260206004820152601e60248201527f4d61782074782063616e74206265206c6f776572207468616e20302e312500006044820152606401610556565b6103e881610a5560025490565b610a5f9190611f41565b610a699190611f58565b600e8190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90602001610763565b6005546001600160a01b03163314610ac85760405162461bcd60e51b815260040161055690611ef8565b6019821115610b115760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420627579207461782076616c756560581b6044820152606401610556565b6019811115610b5b5760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642073656c6c207461782076616c756560501b6044820152606401610556565b600a829055600b81905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a191016105d9565b6005546001600160a01b03163314610bc55760405162461bcd60e51b815260040161055690611ef8565b600254600e55600254600f557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610bfb60025490565b60405190815260200160405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001610c3660025490565b60405190815260200160405180910390a1565b6005546001600160a01b03163314610c735760405162461bcd60e51b815260040161055690611ef8565b610c7c5f611937565b565b6007546001600160a01b0316331480610ca157506005546001600160a01b031633145b610cbd5760405162461bcd60e51b815260040161055690611fbd565b305f90815260208190526040902054610cd581611988565b478015610ce457610ce4611b17565b5050565b6060600480546105f490611f77565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d785760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610556565b610d8533858584036113c0565b5060019392505050565b5f6106813384846114e3565b6005546001600160a01b03163314610dc55760405162461bcd60e51b815260040161055690611ef8565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee90602001610763565b6007546001600160a01b03163314610e3d5760405162461bcd60e51b815260040161055690611fbd565b6007546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa158015610e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb29190612007565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610efa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce4919061201e565b6005546001600160a01b03163314610f485760405162461bcd60e51b815260040161055690611ef8565b601354600160a01b900460ff1615610fa25760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610556565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610fda9030906109c860025490565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104e9190612039565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d19190612039565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561111b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f9190612039565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730611186816001600160a01b03165f9081526020819052604090205490565b5f8061119a6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611200573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112259190612054565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af115801561127a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129e919061201e565b506013805462ff00ff60a01b19166201000160a01b1790554360088190556009805467ffffffffffffffff191667ffffffffffffffff909216919091179055305f90815260066020526040808220805460ff191660011790556017600a819055600b55517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f9190a1565b6005546001600160a01b031633146113525760405162461bcd60e51b815260040161055690611ef8565b6001600160a01b0381166113b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610556565b61086281611937565b6001600160a01b0383166114225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610556565b6001600160a01b0382166114835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610556565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115095760405162461bcd60e51b81526004016105569061207f565b6001600160a01b03821661152f5760405162461bcd60e51b8152600401610556906120c4565b5f81116115905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610556565b5f6115a36005546001600160a01b031690565b6001600160a01b0316846001600160a01b0316141580156115d257506005546001600160a01b03848116911614155b80156115e85750601354600160a81b900460ff16155b156119125761160d6064611607600a5485611b6190919063ffffffff16565b90611b73565b6013549091506001600160a01b03858116911614801561163b57506012546001600160a01b03848116911614155b801561165f57506001600160a01b0383165f9081526006602052604090205460ff16155b1561176657600e548211156116b65760405162461bcd60e51b815260206004820152601b60248201527f4578636565647320746865205f7478416d6f756e744c696d69742e00000000006044820152606401610556565b600f54826116d8856001600160a01b03165f9081526020819052604090205490565b6116e29190611ff4565b11156117305760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610556565b4360085460036117409190611ff4565b111561175157823b15611751575f80fd5b600d8054905f61176083612107565b91905055505b6013546001600160a01b0384811691161480159061179c57506001600160a01b0383165f9081526006602052604090205460ff16155b1561181b57600f54826117c3856001600160a01b03165f9081526020819052604090205490565b6117cd9190611ff4565b111561181b5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610556565b6013546001600160a01b03848116911614801561184157506001600160a01b0384163014155b15611863576118606064611607600b5485611b6190919063ffffffff16565b90505b305f90815260208190526040902054601354600160a81b900460ff1615801561189957506013546001600160a01b038581169116145b80156118ae5750601354600160b01b900460ff165b80156118bb575060105481115b80156118ca5750600c54600d54115b80156118e657506009544367ffffffffffffffff908116911614155b15611910576118ff6118fa82601154611b7e565b611988565b47801561190e5761190e611b17565b505b505b801561192357611923843083611b92565b6107fc84846119328585611ce4565b611b92565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6013805460ff60a81b1916600160a81b1790556009805467ffffffffffffffff431667ffffffffffffffff199091161790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106119ed576119ed611fa9565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a689190612039565b81600181518110611a7b57611a7b611fa9565b6001600160a01b039283166020918202929092010152601254611aa191309116846113c0565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ad99085905f9086903090429060040161211f565b5f604051808303815f87803b158015611af0575f80fd5b505af1158015611b02573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6007546040515f916001600160a01b03169047908381818185875af1925050503d805f81146107fc576040519150601f19603f3d011682016040523d82523d5f602084013e6107fc565b5f611b6c8284611f41565b9392505050565b5f611b6c8284611f58565b5f818311611b8c5782611b6c565b50919050565b6001600160a01b038316611bb85760405162461bcd60e51b81526004016105569061207f565b6001600160a01b038216611bde5760405162461bcd60e51b8152600401610556906120c4565b6001600160a01b0383165f9081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610556565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611c8b908490611ff4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd791815260200190565b60405180910390a36107fc565b5f611b6c8284612190565b5f8060408385031215611d00575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b81811015611d3b57858101830151858201604001528201611d1f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610862575f80fd5b5f8060408385031215611d80575f80fd5b8235611d8b81611d5b565b946020939093013593505050565b5f60208284031215611da9575f80fd5b5035919050565b8015158114610862575f80fd5b5f805f60408486031215611dcf575f80fd5b833567ffffffffffffffff80821115611de6575f80fd5b818601915086601f830112611df9575f80fd5b813581811115611e07575f80fd5b8760208260051b8501011115611e1b575f80fd5b60209283019550935050840135611e3181611db0565b809150509250925092565b5f805f60608486031215611e4e575f80fd5b8335611e5981611d5b565b92506020840135611e6981611d5b565b929592945050506040919091013590565b5f8060408385031215611e8b575f80fd5b8235611e9681611d5b565b91506020830135611ea681611db0565b809150509250929050565b5f60208284031215611ec1575f80fd5b8135611b6c81611d5b565b5f8060408385031215611edd575f80fd5b8235611ee881611d5b565b91506020830135611ea681611d5b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761068557610685611f2d565b5f82611f7257634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c90821680611f8b57607f821691505b602082108103611b8c57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6020808252601d908201527f4f6e6c79206665652072656365697665722063616e2074726967676572000000604082015260600190565b8082018082111561068557610685611f2d565b5f60208284031215612017575f80fd5b5051919050565b5f6020828403121561202e575f80fd5b8151611b6c81611db0565b5f60208284031215612049575f80fd5b8151611b6c81611d5b565b5f805f60608486031215612066575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161211857612118611f2d565b5060010190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561216f5784516001600160a01b03168352938301939183019160010161214a565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561068557610685611f2d56fea2646970667358221220ad9985403105d13daebe7f2c7cb4034c53305afa3389519152fe977bf13d6d5064736f6c63430008170033
Deployed Bytecode Sourcemap
25366:9677:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29103:310;;;;;;;;;;-1:-1:-1;29103:310:0;;;;;:::i;:::-;;:::i;:::-;;10964:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13197:194;;;;;;;;;;-1:-1:-1;13197:194:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;13197:194:0;1276:187:1;28837:258:0;;;;;;;;;;-1:-1:-1;28837:258:0;;;;;:::i;:::-;;:::i;12084:108::-;;;;;;;;;;-1:-1:-1;12172:12:0;;12084:108;;;1799:25:1;;;1787:2;1772:18;12084:108:0;1653:177:1;30387:217:0;;;;;;;;;;-1:-1:-1;30387:217:0;;;;;:::i;:::-;;:::i;29969:168::-;;;;;;;;;;;;;:::i;13869:529::-;;;;;;;;;;-1:-1:-1;13869:529:0;;;;;:::i;:::-;;:::i;30612:171::-;;;;;;;;;;-1:-1:-1;30612:171:0;;;;;:::i;:::-;;:::i;11926:93::-;;;;;;;;;;-1:-1:-1;11926:93:0;;12009:2;3703:36:1;;3691:2;3676:18;11926:93:0;3561:184:1;14803:290:0;;;;;;;;;;-1:-1:-1;14803:290:0;;;;;:::i;:::-;;:::i;28591:238::-;;;;;;;;;;-1:-1:-1;28591:238:0;;;;;:::i;:::-;;:::i;29671:290::-;;;;;;;;;;-1:-1:-1;29671:290:0;;;;;:::i;:::-;;:::i;29427:236::-;;;;;;;;;;;;;:::i;12255:143::-;;;;;;;;;;-1:-1:-1;12255:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;12372:18:0;12345:7;12372:18;;;;;;;;;;;;12255:143;22303:103;;;;;;;;;;;;;:::i;21652:87::-;;;;;;;;;;-1:-1:-1;21725:6:0;;21652:87;;-1:-1:-1;;;;;21725:6:0;;;4148:51:1;;4136:2;4121:18;21652:87:0;4002:203:1;33886:436:0;;;;;;;;;;;;;:::i;11183:104::-;;;;;;;;;;;;;:::i;15592:475::-;;;;;;;;;;-1:-1:-1;15592:475:0;;;;;:::i;:::-;;:::i;12611:200::-;;;;;;;;;;-1:-1:-1;12611:200:0;;;;;:::i;:::-;;:::i;30791:485::-;;;;;;;;;;-1:-1:-1;31113:6:0;;31134:7;;31156:14;;31185:18;;31218:12;;31245;;30791:485;;;4497:25:1;;;4553:2;4538:18;;4531:34;;;;4581:18;;;4574:34;;;;4639:2;4624:18;;4617:34;4682:3;4667:19;;4660:35;4726:3;4711:19;;4704:35;4484:3;4469:19;30791:485:0;4210:535:1;28415:168:0;;;;;;;;;;-1:-1:-1;28415:168:0;;;;;:::i;:::-;;:::i;30147:232::-;;;;;;;;;;-1:-1:-1;30147:232:0;;;;;:::i;:::-;;:::i;27376:1031::-;;;;;;;;;;;;;:::i;12874:176::-;;;;;;;;;;-1:-1:-1;12874:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;13015:18:0;;;12988:7;13015:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12874:176;22561:238;;;;;;;;;;-1:-1:-1;22561:238:0;;;;;:::i;:::-;;:::i;29103:310::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;;;;;;;;;29277:5:::1;29257:16;29241:13;12172:12:::0;;;12084:108;29241:13:::1;:32;;;;:::i;:::-;29240:42;;;;:::i;:::-;29225:12;:57:::0;29339:5:::1;29325:10:::0;29309:13:::1;12172:12:::0;;;12084:108;29309:13:::1;:26;;;;:::i;:::-;29308:36;;;;:::i;:::-;29293:12;:51:::0;29360:45:::1;::::0;;6465:25:1;;;6521:2;6506:18;;6499:34;;;29360:45:0::1;::::0;6438:18:1;29360:45:0::1;;;;;;;;29103:310:::0;;:::o;10964:100::-;11018:13;11051:5;11044:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10964:100;:::o;13197:194::-;13305:4;13322:39;10050:10;13345:7;13354:6;13322:8;:39::i;:::-;-1:-1:-1;13379:4:0;13197:194;;;;;:::o;28837:258::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;28924:1:::1;28912:8;:13;;28904:60;;;::::0;-1:-1:-1;;;28904:60:0;;7131:2:1;28904:60:0::1;::::0;::::1;7113:21:1::0;7170:2;7150:18;;;7143:30;7209:34;7189:18;;;7182:62;-1:-1:-1;;;7260:18:1;;;7253:32;7302:19;;28904:60:0::1;6929:398:1::0;28904:60:0::1;29025:4;29013:8;28997:13;12172:12:::0;;;12084:108;28997:13:::1;:24;;;;:::i;:::-;28996:33;;;;:::i;:::-;28975:18;:54:::0;;;29045:42:::1;::::0;1799:25:1;;;29045:42:0::1;::::0;1787:2:1;1772:18;29045:42:0::1;;;;;;;;28837:258:::0;:::o;30387:217::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;30505:9:::1;30500:97;30520:17:::0;;::::1;30500:97;;;30579:6;30559;:17;30566:6;;30573:1;30566:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30559:17:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;30559:17:0;:26;;-1:-1:-1;;30559:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;30539:3:0::1;30500:97;;;;30387:217:::0;;;:::o;29969:168::-;30032:10;;-1:-1:-1;;;;;30032:10:0;30018;:24;30010:66;;;;-1:-1:-1;;;30010:66:0;;;;;;;:::i;:::-;30087:10;;:42;;-1:-1:-1;;;;;30087:10:0;;;;30107:21;30087:42;;;;;:10;:42;:10;:42;30107:21;30087:10;:42;;;;;;;;;;;;;;;;;;;;;29969:168::o;13869:529::-;14009:4;14026:36;14036:6;14044:9;14055:6;14026:9;:36::i;:::-;-1:-1:-1;;;;;14102:19:0;;14075:24;14102:19;;;:11;:19;;;;;;;;10050:10;14102:33;;;;;;;;14168:26;;;;14146:116;;;;-1:-1:-1;;;14146:116:0;;8024:2:1;14146:116:0;;;8006:21:1;8063:2;8043:18;;;8036:30;8102:34;8082:18;;;8075:62;-1:-1:-1;;;8153:18:1;;;8146:38;8201:19;;14146:116:0;7822:404:1;14146:116:0;14298:57;14307:6;10050:10;14348:6;14329:16;:25;14298:8;:57::i;:::-;-1:-1:-1;14386:4:0;;13869:529;-1:-1:-1;;;;13869:529:0:o;30612:171::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30691:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:36;;-1:-1:-1;;30691:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30743:32;;8399:51:1;;;8466:18;;;8459:50;30743:32:0::1;::::0;8372:18:1;30743:32:0::1;8231:284:1::0;14803:290:0;10050:10;14916:4;15005:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15005:34:0;;;;;;;;;;14916:4;;14933:130;;14983:7;;15005:47;;15042:10;;15005:47;:::i;:::-;14933:8;:130::i;28591:238::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;28674:1:::1;28662:8;:13;;28654:56;;;::::0;-1:-1:-1;;;28654:56:0;;8852:2:1;28654:56:0::1;::::0;::::1;8834:21:1::0;8891:2;8871:18;;;8864:30;8930:32;8910:18;;;8903:60;8980:18;;28654:56:0::1;8650:354:1::0;28654:56:0::1;28767:4;28755:8;28739:13;12172:12:::0;;;12084:108;28739:13:::1;:24;;;;:::i;:::-;28738:33;;;;:::i;:::-;28721:14;:50:::0;;;28787:34:::1;::::0;1799:25:1;;;28787:34:0::1;::::0;1787:2:1;1772:18;28787:34:0::1;1653:177:1::0;29671:290:0;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;29768:2:::1;29758:6;:12;;29750:46;;;::::0;-1:-1:-1;;;29750:46:0;;9211:2:1;29750:46:0::1;::::0;::::1;9193:21:1::0;9250:2;9230:18;;;9223:30;-1:-1:-1;;;9269:18:1;;;9262:51;9330:18;;29750:46:0::1;9009:345:1::0;29750:46:0::1;29826:2;29815:7;:13;;29807:48;;;::::0;-1:-1:-1;;;29807:48:0;;9561:2:1;29807:48:0::1;::::0;::::1;9543:21:1::0;9600:2;9580:18;;;9573:30;-1:-1:-1;;;9619:18:1;;;9612:52;9681:18;;29807:48:0::1;9359:346:1::0;29807:48:0::1;29866:6;:15:::0;;;29892:7:::1;:17:::0;;;29925:28:::1;::::0;;6465:25:1;;;6521:2;6506:18;;6499:34;;;29925:28:0::1;::::0;6438:18:1;29925:28:0::1;6291:248:1::0;29427:236:0;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;12172:12;;29478:14:::1;:30:::0;12172:12;;29519:18:::1;:34:::0;29569:33:::1;29588:13;12172:12:::0;;;12084:108;29588:13:::1;29569:33;::::0;1799:25:1;;;1787:2;1772:18;29569:33:0::1;;;;;;;29618:37;29641:13;12172:12:::0;;;12084:108;29641:13:::1;29618:37;::::0;1799:25:1;;;1787:2;1772:18;29618:37:0::1;;;;;;;29427:236::o:0;22303:103::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;22368:30:::1;22395:1;22368:18;:30::i;:::-;22303:103::o:0;33886:436::-;33965:10;;-1:-1:-1;;;;;33965:10:0;33951;:24;;:49;;-1:-1:-1;21725:6:0;;-1:-1:-1;;;;;21725:6:0;33979:10;:21;33951:49;33929:128;;;;-1:-1:-1;;;33929:128:0;;;;;;;:::i;:::-;34117:4;34068:28;12372:18;;;;;;;;;;;34136:38;12372:18;34136:16;:38::i;:::-;34214:21;34250:22;;34246:69;;34289:14;:12;:14::i;:::-;33918:404;;33886:436::o;11183:104::-;11239:13;11272:7;11265:14;;;;;:::i;15592:475::-;10050:10;15710:4;15754:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15754:34:0;;;;;;;;;;15821:35;;;;15799:122;;;;-1:-1:-1;;;15799:122:0;;9912:2:1;15799:122:0;;;9894:21:1;9951:2;9931:18;;;9924:30;9990:34;9970:18;;;9963:62;-1:-1:-1;;;10041:18:1;;;10034:35;10086:19;;15799:122:0;9710:401:1;15799:122:0;15957:67;10050:10;15980:7;16008:15;15989:16;:34;15957:8;:67::i;:::-;-1:-1:-1;16055:4:0;;15592:475;-1:-1:-1;;;15592:475:0:o;12611:200::-;12722:4;12739:42;10050:10;12763:9;12774:6;12739:9;:42::i;28415:168::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;28494:10:::1;:28:::0;;-1:-1:-1;;;;;;28494:28:0::1;-1:-1:-1::0;;;;;28494:28:0;::::1;::::0;;::::1;::::0;;;28540:35:::1;::::0;4148:51:1;;;28540:35:0::1;::::0;4136:2:1;4121:18;28540:35:0::1;4002:203:1::0;30147:232:0;30233:10;;-1:-1:-1;;;;;30233:10:0;30219;:24;30211:66;;;;-1:-1:-1;;;30211:66:0;;;;;;;:::i;:::-;30314:10;;30325:41;;-1:-1:-1;;;30325:41:0;;30360:4;30325:41;;;4148:51:1;-1:-1:-1;;;;;30288:25:0;;;;;;30314:10;;;30288:25;;30325:26;;4121:18:1;;30325:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30288:79;;-1:-1:-1;;;;;;30288:79:0;;;;;;;-1:-1:-1;;;;;10721:32:1;;;30288:79:0;;;10703:51:1;10770:18;;;10763:34;10676:18;;30288:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27376:1031::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;27438:11:::1;::::0;-1:-1:-1;;;27438:11:0;::::1;;;27437:12;27429:48;;;::::0;-1:-1:-1;;;27429:48:0;;11260:2:1;27429:48:0::1;::::0;::::1;11242:21:1::0;11299:2;11279:18;;;11272:30;11338:25;11318:18;;;11311:53;11381:18;;27429:48:0::1;11058:347:1::0;27429:48:0::1;27488:15;:96:::0;;-1:-1:-1;;;;;;27488:96:0::1;27531:42;27488:96:::0;;::::1;::::0;;;27595:64:::1;::::0;27612:4:::1;::::0;27645:13:::1;12172:12:::0;;;12084:108;27595:64:::1;27698:15;;;;;;;;;-1:-1:-1::0;;;;;27698:15:0::1;-1:-1:-1::0;;;;;27698:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27686:49:0::1;;27758:4;27778:15;;;;;;;;;-1:-1:-1::0;;;;;27778:15:0::1;-1:-1:-1::0;;;;;27778:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27686:125;::::0;-1:-1:-1;;;;;;27686:125:0::1;::::0;;;;;;-1:-1:-1;;;;;11896:15:1;;;27686:125:0::1;::::0;::::1;11878:34:1::0;11948:15;;11928:18;;;11921:43;11813:18;;27686:125:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27670:13;:141:::0;;-1:-1:-1;;;;;27670:141:0;;::::1;-1:-1:-1::0;;;;;;27670:141:0;;::::1;;::::0;;27822:15:::1;::::0;::::1;:31;27861:21;27906:4;27926:24;27906:4:::0;-1:-1:-1;;;;;12372:18:0;12345:7;12372:18;;;;;;;;;;;;12255:143;27926:24:::1;27965:1;27981::::0;27997:7:::1;21725:6:::0;;-1:-1:-1;;;;;21725:6:0;;21652:87;27997:7:::1;27822:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;27822:223:0;;;-1:-1:-1;;;;;12334:15:1;;;27822:223:0::1;::::0;::::1;12316:34:1::0;12366:18;;;12359:34;;;;12409:18;;;12402:34;;;;12452:18;;;12445:34;12516:15;;;12495:19;;;12488:44;28019:15:0::1;12548:19:1::0;;;12541:35;12250:19;;27822:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;28063:13:0::1;::::0;28094:15:::1;::::0;28056:71:::1;::::0;-1:-1:-1;;;28056:71:0;;-1:-1:-1;;;;;28094:15:0;;::::1;28056:71;::::0;::::1;10703:51:1::0;-1:-1:-1;;10770:18:1;;;10763:34;28063:13:0;::::1;::::0;-1:-1:-1;28056:29:0::1;::::0;10676:18:1;;28056:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;28138:11:0::1;:18:::0;;-1:-1:-1;;;;28167:18:0;-1:-1:-1;;;28167:18:0;;;28209:12:::1;28196:10;:25:::0;;;28232:15:::1;:38:::0;;-1:-1:-1;;28232:38:0::1;;::::0;;::::1;::::0;;;::::1;::::0;;28308:4:::1;-1:-1:-1::0;28281:33:0;;;:18:::1;:33;::::0;;;;;:40;;-1:-1:-1;;28281:40:0::1;-1:-1:-1::0;28281:40:0::1;::::0;;28341:2:::1;-1:-1:-1::0;28332:11:0;;;-1:-1:-1;28354:12:0;28384:15;::::1;::::0;-1:-1:-1;28384:15:0::1;27376:1031::o:0;22561:238::-;21725:6;;-1:-1:-1;;;;;21725:6:0;10050:10;21872:23;21864:68;;;;-1:-1:-1;;;21864:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22664:22:0;::::1;22642:110;;;::::0;-1:-1:-1;;;22642:110:0;;13379:2:1;22642:110:0::1;::::0;::::1;13361:21:1::0;13418:2;13398:18;;;13391:30;13457:34;13437:18;;;13430:62;-1:-1:-1;;;13508:18:1;;;13501:36;13554:19;;22642:110:0::1;13177:402:1::0;22642:110:0::1;22763:28;22782:8;22763:18;:28::i;19375:380::-:0;-1:-1:-1;;;;;19511:19:0;;19503:68;;;;-1:-1:-1;;;19503:68:0;;13786:2:1;19503:68:0;;;13768:21:1;13825:2;13805:18;;;13798:30;13864:34;13844:18;;;13837:62;-1:-1:-1;;;13915:18:1;;;13908:34;13959:19;;19503:68:0;13584:400:1;19503:68:0;-1:-1:-1;;;;;19590:21:0;;19582:68;;;;-1:-1:-1;;;19582:68:0;;14191:2:1;19582:68:0;;;14173:21:1;14230:2;14210:18;;;14203:30;14269:34;14249:18;;;14242:62;-1:-1:-1;;;14320:18:1;;;14313:32;14362:19;;19582:68:0;13989:398:1;19582:68:0;-1:-1:-1;;;;;19663:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19715:32;;1799:25:1;;;19715:32:0;;1772:18:1;19715:32:0;;;;;;;19375:380;;;:::o;31284:2276::-;-1:-1:-1;;;;;31416:18:0;;31408:68;;;;-1:-1:-1;;;31408:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31495:16:0;;31487:64;;;;-1:-1:-1;;;31487:64:0;;;;;;;:::i;:::-;31579:1;31570:6;:10;31562:64;;;;-1:-1:-1;;;31562:64:0;;15404:2:1;31562:64:0;;;15386:21:1;15443:2;15423:18;;;15416:30;15482:34;15462:18;;;15455:62;-1:-1:-1;;;15533:18:1;;;15526:39;15582:19;;31562:64:0;15202:405:1;31562:64:0;31637:17;31681:7;21725:6;;-1:-1:-1;;;;;21725:6:0;;21652:87;31681:7;-1:-1:-1;;;;;31673:15:0;:4;-1:-1:-1;;;;;31673:15:0;;;:32;;;;-1:-1:-1;21725:6:0;;-1:-1:-1;;;;;31692:13:0;;;21725:6;;31692:13;;31673:32;:43;;;;-1:-1:-1;31710:6:0;;-1:-1:-1;;;31710:6:0;;;;31709:7;31673:43;31669:1720;;;31745:27;31768:3;31745:18;31756:6;;31745;:10;;:18;;;;:::i;:::-;:22;;:27::i;:::-;31819:13;;31733:39;;-1:-1:-1;;;;;;31811:21:0;;;31819:13;;31811:21;:72;;;;-1:-1:-1;31867:15:0;;-1:-1:-1;;;;;31853:30:0;;;31867:15;;31853:30;;31811:72;:116;;;;-1:-1:-1;;;;;;31905:22:0;;;;;;:18;:22;;;;;;;;31904:23;31811:116;31789:568;;;31980:14;;31970:6;:24;;31962:64;;;;-1:-1:-1;;;31962:64:0;;15814:2:1;31962:64:0;;;15796:21:1;15853:2;15833:18;;;15826:30;15892:29;15872:18;;;15865:57;15939:18;;31962:64:0;15612:351:1;31962:64:0;32101:18;;32091:6;32075:13;32085:2;-1:-1:-1;;;;;12372:18:0;12345:7;12372:18;;;;;;;;;;;;12255:143;32075:13;:22;;;;:::i;:::-;:44;;32045:144;;;;-1:-1:-1;;;32045:144:0;;16170:2:1;32045:144:0;;;16152:21:1;16209:2;16189:18;;;16182:30;16248:28;16228:18;;;16221:56;16294:18;;32045:144:0;15968:350:1;32045:144:0;32231:12;32214:10;;32227:1;32214:14;;;;:::i;:::-;:29;32210:102;;;33814:20;;33862:8;32268:24;;;;;;32330:9;:11;;;:9;:11;;;:::i;:::-;;;;;;31789:568;32383:13;;-1:-1:-1;;;;;32377:19:0;;;32383:13;;32377:19;;;;:46;;-1:-1:-1;;;;;;32401:22:0;;;;;;:18;:22;;;;;;;;32400:23;32377:46;32373:231;;;32500:18;;32490:6;32474:13;32484:2;-1:-1:-1;;;;;12372:18:0;12345:7;12372:18;;;;;;;;;;;;12255:143;32474:13;:22;;;;:::i;:::-;:44;;32444:144;;;;-1:-1:-1;;;32444:144:0;;16170:2:1;32444:144:0;;;16152:21:1;16209:2;16189:18;;;16182:30;16248:28;16228:18;;;16221:56;16294:18;;32444:144:0;15968:350:1;32444:144:0;32630:13;;-1:-1:-1;;;;;32624:19:0;;;32630:13;;32624:19;:44;;;;-1:-1:-1;;;;;;32647:21:0;;32663:4;32647:21;;32624:44;32620:125;;;32701:28;32725:3;32701:19;32712:7;;32701:6;:10;;:19;;;;:::i;:28::-;32689:40;;32620:125;32810:4;32761:28;12372:18;;;;;;;;;;;32854:6;;-1:-1:-1;;;32854:6:0;;;;32853:7;:47;;;;-1:-1:-1;32887:13:0;;-1:-1:-1;;;;;32881:19:0;;;32887:13;;32881:19;32853:47;:79;;;;-1:-1:-1;32921:11:0;;-1:-1:-1;;;32921:11:0;;;;32853:79;:135;;;;;32976:12;;32953:20;:35;32853:135;:186;;;;;33021:18;;33009:9;;:30;32853:186;:246;;;;-1:-1:-1;33060:15:0;;33086:12;33060:39;;;;:15;;:39;;32853:246;32831:547;;;33134:56;33151:38;33155:20;33176:12;;33151:3;:38::i;:::-;33134:16;:56::i;:::-;33238:21;33282:22;;33278:85;;33329:14;:12;:14::i;:::-;33115:263;32831:547;31718:1671;31669:1720;33405:13;;33401:93;;33435:47;33451:4;33465;33472:9;33435:15;:47::i;:::-;33504:48;33520:4;33526:2;33530:21;:6;33541:9;33530:10;:21::i;:::-;33504:15;:48::i;22959:191::-;23052:6;;;-1:-1:-1;;;;;23069:17:0;;;-1:-1:-1;;;;;;23069:17:0;;;;;;;23102:40;;23052:6;;;23069:17;23052:6;;23102:40;;23033:16;;23102:40;23022:128;22959:191;:::o;34330:532::-;26580:6;:13;;-1:-1:-1;;;;26580:13:0;-1:-1:-1;;;26580:13:0;;;34408:15:::1;:38:::0;;::::1;34433:12;34408:38;-1:-1:-1::0;;34408:38:0;;::::1;;::::0;;34481:16:::1;::::0;;34495:1:::1;34481:16:::0;;;;;::::1;::::0;;-1:-1:-1;;34481:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;34481:16:0::1;34457:40;;34526:4;34508;34513:1;34508:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34508:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;34552:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;34552:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;34508:7;;34552:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34542:4;34547:1;34542:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34542:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;34617:15:::1;::::0;34585:62:::1;::::0;34602:4:::1;::::0;34617:15:::1;34635:11:::0;34585:8:::1;:62::i;:::-;34658:15;::::0;:196:::1;::::0;-1:-1:-1;;;34658:196:0;;-1:-1:-1;;;;;34658:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;34739:11;;34658:15:::1;::::0;34781:4;;34808::::1;::::0;34828:15:::1;::::0;34658:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;26616:6:0;:14;;-1:-1:-1;;;;26616:14:0;;;-1:-1:-1;;;;34330:532:0:o;34870:170::-;34958:10;;34950:82;;34913:12;;-1:-1:-1;;;;;34958:10:0;;34982:21;;34913:12;34950:82;34913:12;34950:82;34982:21;34958:10;34950:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3329:98;3387:7;3414:5;3418:1;3414;:5;:::i;:::-;3407:12;3329:98;-1:-1:-1;;;3329:98:0:o;3728:::-;3786:7;3813:5;3817:1;3813;:5;:::i;33568:107::-;33625:7;33657:1;33653;:5;33652:15;;33666:1;33652:15;;;-1:-1:-1;33662:1:0;33568:107;-1:-1:-1;33568:107:0:o;16557:770::-;-1:-1:-1;;;;;16697:20:0;;16689:70;;;;-1:-1:-1;;;16689:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16778:23:0;;16770:71;;;;-1:-1:-1;;;16770:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16938:17:0;;16914:21;16938:17;;;;;;;;;;;16988:23;;;;16966:111;;;;-1:-1:-1;;;16966:111:0;;17992:2:1;16966:111:0;;;17974:21:1;18031:2;18011:18;;;18004:30;18070:34;18050:18;;;18043:62;-1:-1:-1;;;18121:18:1;;;18114:36;18167:19;;16966:111:0;17790:402:1;16966:111:0;-1:-1:-1;;;;;17113:17:0;;;:9;:17;;;;;;;;;;;17133:22;;;17113:42;;17177:20;;;;;;;;:30;;17149:6;;17113:9;17177:30;;17149:6;;17177:30;:::i;:::-;;;;;;;;17242:9;-1:-1:-1;;;;;17225:35:0;17234:6;-1:-1:-1;;;;;17225:35:0;;17253:6;17225:35;;;;1799:25:1;;1787:2;1772:18;;1653:177;17225:35:0;;;;;;;;17273:46;20355:125;2972:98;3030:7;3057:5;3061:1;3057;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1468:180::-;1527:6;1580:2;1568:9;1559:7;1555:23;1551:32;1548:52;;;1596:1;1593;1586:12;1548:52;-1:-1:-1;1619:23:1;;1468:180;-1:-1:-1;1468:180:1:o;1835:118::-;1921:5;1914:13;1907:21;1900:5;1897:32;1887:60;;1943:1;1940;1933:12;1958:750;2050:6;2058;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2175:9;2162:23;2204:18;2245:2;2237:6;2234:14;2231:34;;;2261:1;2258;2251:12;2231:34;2299:6;2288:9;2284:22;2274:32;;2344:7;2337:4;2333:2;2329:13;2325:27;2315:55;;2366:1;2363;2356:12;2315:55;2406:2;2393:16;2432:2;2424:6;2421:14;2418:34;;;2448:1;2445;2438:12;2418:34;2503:7;2496:4;2486:6;2483:1;2479:14;2475:2;2471:23;2467:34;2464:47;2461:67;;;2524:1;2521;2514:12;2461:67;2555:4;2547:13;;;;-1:-1:-1;2579:6:1;-1:-1:-1;;2620:20:1;;2607:34;2650:28;2607:34;2650:28;:::i;:::-;2697:5;2687:15;;;1958:750;;;;;:::o;2713:456::-;2790:6;2798;2806;2859:2;2847:9;2838:7;2834:23;2830:32;2827:52;;;2875:1;2872;2865:12;2827:52;2914:9;2901:23;2933:31;2958:5;2933:31;:::i;:::-;2983:5;-1:-1:-1;3040:2:1;3025:18;;3012:32;3053:33;3012:32;3053:33;:::i;:::-;2713:456;;3105:7;;-1:-1:-1;;;3159:2:1;3144:18;;;;3131:32;;2713:456::o;3174:382::-;3239:6;3247;3300:2;3288:9;3279:7;3275:23;3271:32;3268:52;;;3316:1;3313;3306:12;3268:52;3355:9;3342:23;3374:31;3399:5;3374:31;:::i;:::-;3424:5;-1:-1:-1;3481:2:1;3466:18;;3453:32;3494:30;3453:32;3494:30;:::i;:::-;3543:7;3533:17;;;3174:382;;;;;:::o;3750:247::-;3809:6;3862:2;3850:9;3841:7;3837:23;3833:32;3830:52;;;3878:1;3875;3868:12;3830:52;3917:9;3904:23;3936:31;3961:5;3936:31;:::i;5010:388::-;5078:6;5086;5139:2;5127:9;5118:7;5114:23;5110:32;5107:52;;;5155:1;5152;5145:12;5107:52;5194:9;5181:23;5213:31;5238:5;5213:31;:::i;:::-;5263:5;-1:-1:-1;5320:2:1;5305:18;;5292:32;5333:33;5292:32;5333:33;:::i;5403:356::-;5605:2;5587:21;;;5624:18;;;5617:30;5683:34;5678:2;5663:18;;5656:62;5750:2;5735:18;;5403:356::o;5764:127::-;5825:10;5820:3;5816:20;5813:1;5806:31;5856:4;5853:1;5846:15;5880:4;5877:1;5870:15;5896:168;5969:9;;;6000;;6017:15;;;6011:22;;5997:37;5987:71;;6038:18;;:::i;6069:217::-;6109:1;6135;6125:132;;6179:10;6174:3;6170:20;6167:1;6160:31;6214:4;6211:1;6204:15;6242:4;6239:1;6232:15;6125:132;-1:-1:-1;6271:9:1;;6069:217::o;6544:380::-;6623:1;6619:12;;;;6666;;;6687:61;;6741:4;6733:6;6729:17;6719:27;;6687:61;6794:2;6786:6;6783:14;6763:18;6760:38;6757:161;;6840:10;6835:3;6831:20;6828:1;6821:31;6875:4;6872:1;6865:15;6903:4;6900:1;6893:15;7332:127;7393:10;7388:3;7384:20;7381:1;7374:31;7424:4;7421:1;7414:15;7448:4;7445:1;7438:15;7464:353;7666:2;7648:21;;;7705:2;7685:18;;;7678:30;7744:31;7739:2;7724:18;;7717:59;7808:2;7793:18;;7464:353::o;8520:125::-;8585:9;;;8606:10;;;8603:36;;;8619:18;;:::i;10332:184::-;10402:6;10455:2;10443:9;10434:7;10430:23;10426:32;10423:52;;;10471:1;10468;10461:12;10423:52;-1:-1:-1;10494:16:1;;10332:184;-1:-1:-1;10332:184:1:o;10808:245::-;10875:6;10928:2;10916:9;10907:7;10903:23;10899:32;10896:52;;;10944:1;10941;10934:12;10896:52;10976:9;10970:16;10995:28;11017:5;10995:28;:::i;11410:251::-;11480:6;11533:2;11521:9;11512:7;11508:23;11504:32;11501:52;;;11549:1;11546;11539:12;11501:52;11581:9;11575:16;11600:31;11625:5;11600:31;:::i;12587:306::-;12675:6;12683;12691;12744:2;12732:9;12723:7;12719:23;12715:32;12712:52;;;12760:1;12757;12750:12;12712:52;12789:9;12783:16;12773:26;;12839:2;12828:9;12824:18;12818:25;12808:35;;12883:2;12872:9;12868:18;12862:25;12852:35;;12587:306;;;;;:::o;14392:401::-;14594:2;14576:21;;;14633:2;14613:18;;;14606:30;14672:34;14667:2;14652:18;;14645:62;-1:-1:-1;;;14738:2:1;14723:18;;14716:35;14783:3;14768:19;;14392:401::o;14798:399::-;15000:2;14982:21;;;15039:2;15019:18;;;15012:30;15078:34;15073:2;15058:18;;15051:62;-1:-1:-1;;;15144:2:1;15129:18;;15122:33;15187:3;15172:19;;14798:399::o;16323:135::-;16362:3;16383:17;;;16380:43;;16403:18;;:::i;:::-;-1:-1:-1;16450:1:1;16439:13;;16323:135::o;16595:980::-;16857:4;16905:3;16894:9;16890:19;16936:6;16925:9;16918:25;16962:2;17000:6;16995:2;16984:9;16980:18;16973:34;17043:3;17038:2;17027:9;17023:18;17016:31;17067:6;17102;17096:13;17133:6;17125;17118:22;17171:3;17160:9;17156:19;17149:26;;17210:2;17202:6;17198:15;17184:29;;17231:1;17241:195;17255:6;17252:1;17249:13;17241:195;;;17320:13;;-1:-1:-1;;;;;17316:39:1;17304:52;;17411:15;;;;17376:12;;;;17352:1;17270:9;17241:195;;;-1:-1:-1;;;;;;;17492:32:1;;;;17487:2;17472:18;;17465:60;-1:-1:-1;;;17556:3:1;17541:19;17534:35;17453:3;16595:980;-1:-1:-1;;;16595:980:1:o;18197:128::-;18264:9;;;18285:11;;;18282:37;;;18299:18;;:::i
Swarm Source
ipfs://ad9985403105d13daebe7f2c7cb4034c53305afa3389519152fe977bf13d6d50
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.