Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 ELONMEME
Holders
12
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.351358475 ELONMEMEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ELONMEME
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-31 */ // SPDX-License-Identifier: MIT // https://twitter.com/ElonMeme69 // https://t.me/elonmeme69 // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: contracts/IUniswapV2Router02.sol pragma solidity ^0.8.0; interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } // File: contracts/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: contracts/IUniswapV2Factory.sol pragma solidity >=0.8.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint ); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: contracts/ERC20.sol pragma solidity ^0.8.0; 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; uint8 private _decimals; constructor(string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } 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; } 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); } 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); } 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); } 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); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction 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; } } } pragma solidity ^0.8.0; contract ELONMEME is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; bool private swapping; address private operationsWallet; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferBlock; bool public transferDelayEnabled = true; uint256 public buyFees; uint256 public sellFees; uint256 private _maxSwapableTokens; uint256 public _preventSwapBefore = 10; uint256 public _removeLimitsAt = 10; uint256 public _totalBuys = 0; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress,address indexed oldAddress); event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiquidity); event setOperationsWalletUpdated(address indexed newOperationsWallet); event setExcludeFromFeesUpdate(address indexed account, bool newStatus); event setAutomatedMarketMakerPairUpdate(address indexed pair, bool indexed value); event setSwapTokensAtAmountUpdate(uint256 newTokenAmount); event setMaxTransactionUpdate(uint256 newTokenAmount); event setMaxWalletUpdate(uint256 newTokenAmount); event setExcludeFromMaxTransactionUpdate(address newAddress, bool newStatus); event setUpdateSwapEnabledUpdate(bool newStatus); event setBuyFeeUpdated(uint256 newOperationsFee); event setSellFeeUpdated(uint256 newOperationsFee); constructor(address _operationsWallet) ERC20("ELONMEME", "ELONMEME", 9) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); setExcludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uint256 totalSupply = 1_000_000_000_000_000 * 10 ** decimals(); maxTransaction = (totalSupply * 50) / 10_000; // 0.5% max transaction at launch maxWallet = (totalSupply * 50) / 10_000; // 0.5% max wallet at launch swapTokensAtAmount = (totalSupply * 5) / 10_000; // 0.05% _maxSwapableTokens = (totalSupply * 50) / 10_000; // 0.5% buyFees = 500; sellFees = 1_000; operationsWallet = _operationsWallet; // exclude from paying fees or having max transaction amount setExcludeFromFees(owner(), true); setExcludeFromFees(address(this), true); setExcludeFromFees(address(0xdead), true); setExcludeFromMaxTransaction(owner(), true); setExcludeFromMaxTransaction(address(this), true); setExcludeFromMaxTransaction(address(0xdead), true); uint256 liqSupply = (totalSupply * 95) / 100; uint256 teamSupply = (totalSupply * 5) / 100; _mint(address(this), liqSupply); _mint(msg.sender, teamSupply); } receive() external payable {} function openTrading() external payable onlyOwner() { require(!tradingActive,"trading is already active"); _approve(address(this), address(uniswapV2Router), totalSupply()); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); setExcludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); 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; tradingActive = true; } function removeLimits() internal returns (bool) { limitsInEffect = false; buyFees = 500; sellFees = 500; return true; } function disableLimits(bool tValue, bool lValue) external onlyOwner { tradingActive = tValue; limitsInEffect = lValue; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit setAutomatedMarketMakerPairUpdate(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferBlock[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to] ) { require( amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from] ) { require( amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedmaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && _totalBuys > _preventSwapBefore ) { swapping = true; swapBack(min(contractTokenBalance, _maxSwapableTokens)); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellFees > 0) { fees = amount.mul(sellFees).div(10_000); } // on buy else if (automatedMarketMakerPairs[from] && buyFees > 0) { fees = amount.mul(buyFees).div(10_000); _totalBuys++; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); if (_totalBuys >= _removeLimitsAt && limitsInEffect) { removeLimits(); } } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapBack(uint256 amount) private { bool success; if (amount == 0) { return; } uint256 amountToSwapForETH = amount; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance; (success, ) = address(operationsWallet).call{value: ethBalance}(""); } // ADMIN function setAutomatedMarketMakerPair(address pair, bool newStatus) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, newStatus); emit setAutomatedMarketMakerPairUpdate(pair, newStatus); } function setSwapTokensAtAmount(uint256 newTokenAmount) external onlyOwner returns (bool) { require( newTokenAmount >= (totalSupply() * 1) / 100_000, "Swap amount cannot be lower than 0.001% total supply." ); require( newTokenAmount <= (totalSupply() * 100) / 10_000, "Swap amount cannot be higher than 1% total supply." ); swapTokensAtAmount = newTokenAmount; emit setSwapTokensAtAmountUpdate(newTokenAmount); return true; } function setMaxTransaction(uint256 newTokenAmount) external onlyOwner { require( newTokenAmount >= ((totalSupply() * 10) / 10_000), "Cannot set maxTransaction lower than 0.1%" ); maxTransaction = newTokenAmount * (10 ** decimals()); emit setMaxTransactionUpdate(newTokenAmount); } function setMaxWallet(uint256 newTokenAmount) external onlyOwner { require( newTokenAmount >= ((totalSupply() * 50) / 10_000), "Cannot set maxWallet lower than 0.5%" ); maxWallet = newTokenAmount * (10 ** decimals()); emit setMaxWalletUpdate(newTokenAmount); } function setExcludeFromMaxTransaction(address newAddress, bool newStatus) public onlyOwner { _isExcludedmaxTransaction[newAddress] = newStatus; emit setExcludeFromMaxTransactionUpdate(newAddress, newStatus); } function setUpdateSwapEnabled(bool newStatus) external onlyOwner { swapEnabled = newStatus; emit setUpdateSwapEnabledUpdate(newStatus); } function setBuyFee(uint256 newOperationsFee) external onlyOwner { buyFees = newOperationsFee; require(buyFees <= 500); emit setBuyFeeUpdated(newOperationsFee); } function setSellFee(uint256 newOperationsFee) external onlyOwner { sellFees = newOperationsFee; require(sellFees <= 500); emit setSellFeeUpdated(newOperationsFee); } function setExcludeFromFees(address account, bool newStatus) public onlyOwner { _isExcludedFromFees[account] = newStatus; emit setExcludeFromFeesUpdate(account, newStatus); } function setOperationsWallet(address newOperationsWallet) external onlyOwner { operationsWallet = newOperationsWallet; emit setOperationsWalletUpdated(newOperationsWallet); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_operationsWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newOperationsFee","type":"uint256"}],"name":"setBuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromFeesUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromMaxTransactionUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"setMaxTransactionUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"setMaxWalletUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"setOperationsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newOperationsFee","type":"uint256"}],"name":"setSellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"setSwapTokensAtAmountUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setUpdateSwapEnabledUpdate","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_preventSwapBefore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_removeLimitsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","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":"bool","name":"tValue","type":"bool"},{"internalType":"bool","name":"lValue","type":"bool"}],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOperationsFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"setMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"setOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOperationsFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setUpdateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600c805462ffffff19166001908117909155600e805460ff19169091179055600a60128190556013555f60145534801562000063575f80fd5b5060405162002fc438038062002fc4833981016040819052620000869162000555565b604080518082018252600880825267454c4f4e4d454d4560c01b60208084018290528451808601909552918452908301529060096003620000c8848262000623565b506004620000d7838262000623565b506005805460ff191660ff9290921691909117905550620001019050620000fb3390565b620002d9565b6007546001600160a01b03166200011a81600162000332565b6001600160a01b0381166080525f6200013560055460ff1690565b6200014290600a620007fa565b620001559066038d7ea4c680006200080a565b9050612710620001678260326200080a565b62000173919062000824565b600955612710620001868260326200080a565b62000192919062000824565b600b55612710620001a58260056200080a565b620001b1919062000824565b600a55612710620001c48260326200080a565b620001d0919062000824565b6011556101f4600f556103e8601055600880546001600160a01b0319166001600160a01b0385161790556200021e6200021660055461010090046001600160a01b031690565b60016200039e565b6200022b3060016200039e565b6200023a61dead60016200039e565b6200025e6200025660055461010090046001600160a01b031690565b600162000332565b6200026b30600162000332565b6200027a61dead600162000332565b5f60646200028a83605f6200080a565b62000296919062000824565b90505f6064620002a88460056200080a565b620002b4919062000824565b9050620002c2308362000406565b620002ce338262000406565b50505050506200085a565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6200033c620004ec565b6001600160a01b0382165f81815260166020908152604091829020805460ff19168515159081179091558251938452908301527f7f654cd58ed27e5f937ca593d4b7b6c2712dd47aae3a8980c67dddf81430257a910160405180910390a15050565b620003a8620004ec565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f9cc19e08ba758837142b0e92d33f07d6494311434625fa20b5cfc51195abab61910160405180910390a25050565b6001600160a01b038216620004625760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f82825462000475919062000844565b90915550506001600160a01b0382165f9081526020819052604081208054839290620004a390849062000844565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b036101009091041633146200054e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000459565b565b505050565b5f6020828403121562000566575f80fd5b81516001600160a01b03811681146200057d575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005ad57607f821691505b602082108103620005cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000550575f81815260208120601f850160051c81016020861015620005fa5750805b601f850160051c820191505b818110156200061b5782815560010162000606565b505050505050565b81516001600160401b038111156200063f576200063f62000584565b620006578162000650845462000598565b84620005d2565b602080601f8311600181146200068d575f8415620006755750858301515b5f19600386901b1c1916600185901b1785556200061b565b5f85815260208120601f198616915b82811015620006bd578886015182559484019460019091019084016200069c565b5085821015620006db57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200073f57815f1904821115620007235762000723620006eb565b808516156200073157918102915b93841c939080029062000704565b509250929050565b5f826200075757506001620007f4565b816200076557505f620007f4565b81600181146200077e57600281146200078957620007a9565b6001915050620007f4565b60ff8411156200079d576200079d620006eb565b50506001821b620007f4565b5060208310610133831016604e8410600b8410161715620007ce575081810a620007f4565b620007da8383620006ff565b805f1904821115620007f057620007f0620006eb565b0290505b92915050565b5f6200057d60ff84168362000747565b8082028115828204841417620007f457620007f4620006eb565b5f826200083f57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620007f457620007f4620006eb565b608051612712620008b25f395f818161030301528181610f7301528181610f9d0152818161102c0152818161115b0152818161126901528181611827015281816120c10152818161217801526121b401526127125ff3fe60806040526004361061026d575f3560e01c8063a457c2d71161014a578063d63cad22116100be578063e4748b9e11610078578063e4748b9e14610778578063e884f2601461078d578063ee5ecc89146107a1578063f2fde38b146107c0578063f887ea40146107df578063f8b45b05146107fe575f80fd5b8063d63cad221461069e578063db9855e8146106bd578063dd62ed3e146106dc578063e0f3ccf514610720578063e1bc339414610735578063e2f4560514610763575f80fd5b8063bbc0c7421161010f578063bbc0c74214610616578063c3f70b5214610634578063c81d924614610649578063c876d0b91461065e578063c9567bf914610677578063cfb4357b1461067f575f80fd5b8063a457c2d71461056c578063a9059cbb1461058b578063ab5a1887146105aa578063afa4f3b2146105c9578063b62496f5146105e8575f80fd5b80634fbee193116101e1578063715018a6116101a6578063715018a6146104cf57806373a94292146104e35780638b4cee08146104f85780638da5cb5b1461051757806395d89b41146105395780639a7a23d61461054d575f80fd5b80634fbee193146104115780635d0044ca1461044857806368018226146104675780636ddd17131461047c57806370a082311461049b575f80fd5b806323b872dd1161023257806323b872dd1461035b578063313ce5671461037a578063395093511461039b57806343668e6d146103ba57806349bd5a5e146103d95780634a62bb65146103f8575f80fd5b806306fdde0314610278578063095ea7b3146102a25780630cc835a3146102d15780631694505e146102f257806318160ddd1461033d575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c610813565b6040516102999190612222565b60405180910390f35b3480156102ad575f80fd5b506102c16102bc366004612281565b6108a3565b6040519015158152602001610299565b3480156102dc575f80fd5b506102f06102eb3660046122ab565b6108b9565b005b3480156102fd575f80fd5b506103257f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610299565b348015610348575f80fd5b506002545b604051908152602001610299565b348015610366575f80fd5b506102c16103753660046122c2565b61090b565b348015610385575f80fd5b5060055460405160ff9091168152602001610299565b3480156103a6575f80fd5b506102c16103b5366004612281565b6109b8565b3480156103c5575f80fd5b506102f06103d436600461230d565b6109f3565b3480156103e4575f80fd5b50600654610325906001600160a01b031681565b348015610403575f80fd5b50600c546102c19060ff1681565b34801561041c575f80fd5b506102c161042b366004612344565b6001600160a01b03165f9081526015602052604090205460ff1690565b348015610453575f80fd5b506102f06104623660046122ab565b610a1e565b348015610472575f80fd5b5061034d60135481565b348015610487575f80fd5b50600c546102c19062010000900460ff1681565b3480156104a6575f80fd5b5061034d6104b5366004612344565b6001600160a01b03165f9081526020819052604090205490565b3480156104da575f80fd5b506102f0610af0565b3480156104ee575f80fd5b5061034d60145481565b348015610503575f80fd5b506102f06105123660046122ab565b610b03565b348015610522575f80fd5b5060055461010090046001600160a01b0316610325565b348015610544575f80fd5b5061028c610b4e565b348015610558575f80fd5b506102f061056736600461235f565b610b5d565b348015610577575f80fd5b506102c1610586366004612281565b610c2e565b348015610596575f80fd5b506102c16105a5366004612281565b610cc6565b3480156105b5575f80fd5b506102f06105c43660046122ab565b610cd2565b3480156105d4575f80fd5b506102c16105e33660046122ab565b610daa565b3480156105f3575f80fd5b506102c1610602366004612344565b60176020525f908152604090205460ff1681565b348015610621575f80fd5b50600c546102c190610100900460ff1681565b34801561063f575f80fd5b5061034d60095481565b348015610654575f80fd5b5061034d60125481565b348015610669575f80fd5b50600e546102c19060ff1681565b6102f0610f0d565b34801561068a575f80fd5b506102f061069936600461237b565b6112f8565b3480156106a9575f80fd5b506102f06106b836600461235f565b61134b565b3480156106c8575f80fd5b506102f06106d736600461235f565b6113b1565b3480156106e7575f80fd5b5061034d6106f6366004612396565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561072b575f80fd5b5061034d60105481565b348015610740575f80fd5b506102c161074f366004612344565b60166020525f908152604090205460ff1681565b34801561076e575f80fd5b5061034d600a5481565b348015610783575f80fd5b5061034d600f5481565b348015610798575f80fd5b506102c161141b565b3480156107ac575f80fd5b506102f06107bb366004612344565b611434565b3480156107cb575f80fd5b506102f06107da366004612344565b611485565b3480156107ea575f80fd5b50600754610325906001600160a01b031681565b348015610809575f80fd5b5061034d600b5481565b606060038054610822906123c2565b80601f016020809104026020016040519081016040528092919081815260200182805461084e906123c2565b80156108995780601f1061087057610100808354040283529160200191610899565b820191905f5260205f20905b81548152906001019060200180831161087c57829003601f168201915b5050505050905090565b5f6108af3384846114fe565b5060015b92915050565b6108c1611621565b600f8190556101f48111156108d4575f80fd5b6040518181527fa872edbd15308577c98aad0962f729a1875f28e00ab28cba83ab55653ad3d1c3906020015b60405180910390a150565b5f610917848484611681565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109a05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109ad85338584036114fe565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108af9185906109ee90869061240e565b6114fe565b6109fb611621565b600c805461ffff19166101009315159390930260ff191692909217901515179055565b610a26611621565b612710610a3260025490565b610a3d906032612421565b610a479190612438565b811015610aa25760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610997565b60055460ff16610ab390600a612537565b610abd9082612421565b600b556040518181527f1730415ef59f304dd1da6ed28821f819b979f6efbab42c44aebefaa4b7b5131e90602001610900565b610af8611621565b610b015f611de0565b565b610b0b611621565b60108190556101f4811115610b1e575f80fd5b6040518181527fe1435708d333edbd00af16b969ad0814c8a957a37fefc22afda088dfebec2cd090602001610900565b606060048054610822906123c2565b610b65611621565b6006546001600160a01b0390811690831603610be95760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610997565b610bf38282611e39565b604051811515906001600160a01b038416907f6fd08642eb227264836bd314a2faad34ea890d67a077763e0809e9acd2aa892d905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610caf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610997565b610cbc33858584036114fe565b5060019392505050565b5f6108af338484611681565b610cda611621565b612710610ce660025490565b610cf190600a612421565b610cfb9190612438565b811015610d5c5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610997565b60055460ff16610d6d90600a612537565b610d779082612421565b6009556040518181527f93f578c61e9ff613008cec299dd781e522b70349dcd321ca43de1c00d6778ea490602001610900565b5f610db3611621565b620186a0610dc060025490565b610dcb906001612421565b610dd59190612438565b821015610e425760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610997565b612710610e4e60025490565b610e59906064612421565b610e639190612438565b821115610ecd5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101892903a37ba30b61039bab838363c9760711b6064820152608401610997565b600a8290556040518281527f3bd8f1497f38289f05933d46fadc4ebe49ab69ae55fb2cc2efe549e15bb73cf69060200160405180910390a1506001919050565b610f15611621565b600c54610100900460ff1615610f6d5760405162461bcd60e51b815260206004820152601960248201527f74726164696e6720697320616c726561647920616374697665000000000000006044820152606401610997565b610f9b307f00000000000000000000000000000000000000000000000000000000000000006109ee60025490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101b9190612545565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611086573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110aa9190612545565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111189190612545565b600680546001600160a01b0319166001600160a01b039290921691821790556111429060016113b1565b600654611159906001600160a01b03166001611e39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71947306111a8306001600160a01b03165f9081526020819052604090205490565b5f806111c26005546001600160a01b036101009091041690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611228573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061124d9190612560565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af11580156112c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e4919061258b565b50600c805462ffff00191662010100179055565b611300611621565b600c8054821515620100000262ff0000199091161790556040517f0a02a9777cf03eb2f9c8a2400ac5f4142480e5844e543d81cf6f03416519077d9061090090831515815260200190565b611353611621565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f9cc19e08ba758837142b0e92d33f07d6494311434625fa20b5cfc51195abab61910160405180910390a25050565b6113b9611621565b6001600160a01b0382165f81815260166020908152604091829020805460ff19168515159081179091558251938452908301527f7f654cd58ed27e5f937ca593d4b7b6c2712dd47aae3a8980c67dddf81430257a910160405180910390a15050565b5f611424611621565b50600e805460ff19169055600190565b61143c611621565b600880546001600160a01b0319166001600160a01b0383169081179091556040517fc314153aca90d62d1eb1c8798d85eb9eb192a82c4775f818897bec6858c54b26905f90a250565b61148d611621565b6001600160a01b0381166114f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610997565b6114fb81611de0565b50565b6001600160a01b0383166115605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610997565b6001600160a01b0382166115c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610997565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03610100909104163314610b015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610997565b6001600160a01b0383166116a75760405162461bcd60e51b8152600401610997906125a6565b6001600160a01b0382166116cd5760405162461bcd60e51b8152600401610997906125eb565b805f036116e4576116df83835f611e8c565b505050565b600c5460ff1615611b75576005546001600160a01b03848116610100909204161480159061172557506005546001600160a01b038381166101009092041614155b801561173957506001600160a01b03821615155b801561175057506001600160a01b03821661dead14155b80156117665750600754600160a01b900460ff16155b15611b7557600c54610100900460ff166117fc576001600160a01b0383165f9081526015602052604090205460ff16806117b757506001600160a01b0382165f9081526015602052604090205460ff165b6117fc5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610997565b600e5460ff1615611922576005546001600160a01b03838116610100909204161480159061185c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561187657506006546001600160a01b03838116911614155b1561192257325f908152600d602052604090205443116119105760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610997565b325f908152600d602052604090204390555b6001600160a01b0383165f9081526017602052604090205460ff16801561196157506001600160a01b0382165f9081526016602052604090205460ff16155b15611a3e576009548111156119d05760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610997565b600b546001600160a01b0383165f908152602081905260409020546119f5908361240e565b1115611a395760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610997565b611b75565b6001600160a01b0382165f9081526017602052604090205460ff168015611a7d57506001600160a01b0383165f9081526016602052604090205460ff16155b15611aed57600954811115611a395760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610997565b6001600160a01b0382165f9081526016602052604090205460ff16611b7557600b546001600160a01b0383165f90815260208190526040902054611b31908361240e565b1115611b755760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610997565b305f90815260208190526040902054600a5481108015908190611ba05750600c5462010000900460ff165b8015611bb65750600754600160a01b900460ff16155b8015611bda57506001600160a01b0385165f9081526017602052604090205460ff16155b8015611bfe57506001600160a01b0385165f9081526015602052604090205460ff16155b8015611c2257506001600160a01b0384165f9081526015602052604090205460ff16155b8015611c315750601254601454115b15611c6e576007805460ff60a01b1916600160a01b179055601154611c6090611c5b908490611fdf565b611ff6565b6007805460ff60a01b191690555b6007546001600160a01b0386165f9081526015602052604090205460ff600160a01b909204821615911680611cba57506001600160a01b0385165f9081526015602052604090205460ff165b15611cc257505f5b5f8115611d9b576001600160a01b0386165f9081526017602052604090205460ff168015611cf157505f601054115b15611d1e57611d17612710611d116010548861205690919063ffffffff16565b90612061565b9050611d7d565b6001600160a01b0387165f9081526017602052604090205460ff168015611d4657505f600f54115b15611d7d57611d66612710611d11600f548861205690919063ffffffff16565b601480549192505f611d778361262e565b91905055505b8015611d8e57611d8e873083611e8c565b611d988186612646565b94505b611da6878787611e8c565b60135460145410158015611dbc5750600c5460ff165b15611dd757600c805460ff191690556101f4600f8190556010555b50505050505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260176020526040808220805460ff191685151590811790915590519092917f6fd08642eb227264836bd314a2faad34ea890d67a077763e0809e9acd2aa892d91a35050565b6001600160a01b038316611eb25760405162461bcd60e51b8152600401610997906125a6565b6001600160a01b038216611ed85760405162461bcd60e51b8152600401610997906125eb565b6001600160a01b0383165f9081526020819052604090205481811015611f4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610997565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f8590849061240e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fd191815260200190565b60405180910390a350505050565b5f818311611fed5782611fef565b815b9392505050565b5f815f03612002575050565b8161200c8161206c565b60085460405147916001600160a01b03169082905f81818185875af1925050503d805f8114611dd7576040519150601f19603f3d011682016040523d82523d5f602084013e611dd7565b5f611fef8284612421565b5f611fef8284612438565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061209f5761209f612659565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213f9190612545565b8160018151811061215257612152612659565b60200260200101906001600160a01b031690816001600160a01b03168152505061219d307f0000000000000000000000000000000000000000000000000000000000000000846114fe565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906121f19085905f9086903090429060040161266d565b5f604051808303815f87803b158015612208575f80fd5b505af115801561221a573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b8181101561224d57858101830151858201604001528201612231565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114fb575f80fd5b5f8060408385031215612292575f80fd5b823561229d8161226d565b946020939093013593505050565b5f602082840312156122bb575f80fd5b5035919050565b5f805f606084860312156122d4575f80fd5b83356122df8161226d565b925060208401356122ef8161226d565b929592945050506040919091013590565b80151581146114fb575f80fd5b5f806040838503121561231e575f80fd5b823561232981612300565b9150602083013561233981612300565b809150509250929050565b5f60208284031215612354575f80fd5b8135611fef8161226d565b5f8060408385031215612370575f80fd5b82356123298161226d565b5f6020828403121561238b575f80fd5b8135611fef81612300565b5f80604083850312156123a7575f80fd5b82356123b28161226d565b915060208301356123398161226d565b600181811c908216806123d657607f821691505b6020821081036123f457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108b3576108b36123fa565b80820281158282048414176108b3576108b36123fa565b5f8261245257634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561249157815f1904821115612477576124776123fa565b8085161561248457918102915b93841c939080029061245c565b509250929050565b5f826124a7575060016108b3565b816124b357505f6108b3565b81600181146124c957600281146124d3576124ef565b60019150506108b3565b60ff8411156124e4576124e46123fa565b50506001821b6108b3565b5060208310610133831016604e8410600b8410161715612512575081810a6108b3565b61251c8383612457565b805f190482111561252f5761252f6123fa565b029392505050565b5f611fef60ff841683612499565b5f60208284031215612555575f80fd5b8151611fef8161226d565b5f805f60608486031215612572575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561259b575f80fd5b8151611fef81612300565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161263f5761263f6123fa565b5060010190565b818103818111156108b3576108b36123fa565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156126bb5784516001600160a01b031683529383019391830191600101612696565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220741d411b56e17fcbd4f42818c3cfd50c45627be54ce362a3178e3227915d6d0d64736f6c6343000814003300000000000000000000000034fd543115aae04d0f670c06baab6f33bdded26c
Deployed Bytecode
0x60806040526004361061026d575f3560e01c8063a457c2d71161014a578063d63cad22116100be578063e4748b9e11610078578063e4748b9e14610778578063e884f2601461078d578063ee5ecc89146107a1578063f2fde38b146107c0578063f887ea40146107df578063f8b45b05146107fe575f80fd5b8063d63cad221461069e578063db9855e8146106bd578063dd62ed3e146106dc578063e0f3ccf514610720578063e1bc339414610735578063e2f4560514610763575f80fd5b8063bbc0c7421161010f578063bbc0c74214610616578063c3f70b5214610634578063c81d924614610649578063c876d0b91461065e578063c9567bf914610677578063cfb4357b1461067f575f80fd5b8063a457c2d71461056c578063a9059cbb1461058b578063ab5a1887146105aa578063afa4f3b2146105c9578063b62496f5146105e8575f80fd5b80634fbee193116101e1578063715018a6116101a6578063715018a6146104cf57806373a94292146104e35780638b4cee08146104f85780638da5cb5b1461051757806395d89b41146105395780639a7a23d61461054d575f80fd5b80634fbee193146104115780635d0044ca1461044857806368018226146104675780636ddd17131461047c57806370a082311461049b575f80fd5b806323b872dd1161023257806323b872dd1461035b578063313ce5671461037a578063395093511461039b57806343668e6d146103ba57806349bd5a5e146103d95780634a62bb65146103f8575f80fd5b806306fdde0314610278578063095ea7b3146102a25780630cc835a3146102d15780631694505e146102f257806318160ddd1461033d575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c610813565b6040516102999190612222565b60405180910390f35b3480156102ad575f80fd5b506102c16102bc366004612281565b6108a3565b6040519015158152602001610299565b3480156102dc575f80fd5b506102f06102eb3660046122ab565b6108b9565b005b3480156102fd575f80fd5b506103257f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610299565b348015610348575f80fd5b506002545b604051908152602001610299565b348015610366575f80fd5b506102c16103753660046122c2565b61090b565b348015610385575f80fd5b5060055460405160ff9091168152602001610299565b3480156103a6575f80fd5b506102c16103b5366004612281565b6109b8565b3480156103c5575f80fd5b506102f06103d436600461230d565b6109f3565b3480156103e4575f80fd5b50600654610325906001600160a01b031681565b348015610403575f80fd5b50600c546102c19060ff1681565b34801561041c575f80fd5b506102c161042b366004612344565b6001600160a01b03165f9081526015602052604090205460ff1690565b348015610453575f80fd5b506102f06104623660046122ab565b610a1e565b348015610472575f80fd5b5061034d60135481565b348015610487575f80fd5b50600c546102c19062010000900460ff1681565b3480156104a6575f80fd5b5061034d6104b5366004612344565b6001600160a01b03165f9081526020819052604090205490565b3480156104da575f80fd5b506102f0610af0565b3480156104ee575f80fd5b5061034d60145481565b348015610503575f80fd5b506102f06105123660046122ab565b610b03565b348015610522575f80fd5b5060055461010090046001600160a01b0316610325565b348015610544575f80fd5b5061028c610b4e565b348015610558575f80fd5b506102f061056736600461235f565b610b5d565b348015610577575f80fd5b506102c1610586366004612281565b610c2e565b348015610596575f80fd5b506102c16105a5366004612281565b610cc6565b3480156105b5575f80fd5b506102f06105c43660046122ab565b610cd2565b3480156105d4575f80fd5b506102c16105e33660046122ab565b610daa565b3480156105f3575f80fd5b506102c1610602366004612344565b60176020525f908152604090205460ff1681565b348015610621575f80fd5b50600c546102c190610100900460ff1681565b34801561063f575f80fd5b5061034d60095481565b348015610654575f80fd5b5061034d60125481565b348015610669575f80fd5b50600e546102c19060ff1681565b6102f0610f0d565b34801561068a575f80fd5b506102f061069936600461237b565b6112f8565b3480156106a9575f80fd5b506102f06106b836600461235f565b61134b565b3480156106c8575f80fd5b506102f06106d736600461235f565b6113b1565b3480156106e7575f80fd5b5061034d6106f6366004612396565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561072b575f80fd5b5061034d60105481565b348015610740575f80fd5b506102c161074f366004612344565b60166020525f908152604090205460ff1681565b34801561076e575f80fd5b5061034d600a5481565b348015610783575f80fd5b5061034d600f5481565b348015610798575f80fd5b506102c161141b565b3480156107ac575f80fd5b506102f06107bb366004612344565b611434565b3480156107cb575f80fd5b506102f06107da366004612344565b611485565b3480156107ea575f80fd5b50600754610325906001600160a01b031681565b348015610809575f80fd5b5061034d600b5481565b606060038054610822906123c2565b80601f016020809104026020016040519081016040528092919081815260200182805461084e906123c2565b80156108995780601f1061087057610100808354040283529160200191610899565b820191905f5260205f20905b81548152906001019060200180831161087c57829003601f168201915b5050505050905090565b5f6108af3384846114fe565b5060015b92915050565b6108c1611621565b600f8190556101f48111156108d4575f80fd5b6040518181527fa872edbd15308577c98aad0962f729a1875f28e00ab28cba83ab55653ad3d1c3906020015b60405180910390a150565b5f610917848484611681565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109a05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109ad85338584036114fe565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108af9185906109ee90869061240e565b6114fe565b6109fb611621565b600c805461ffff19166101009315159390930260ff191692909217901515179055565b610a26611621565b612710610a3260025490565b610a3d906032612421565b610a479190612438565b811015610aa25760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610997565b60055460ff16610ab390600a612537565b610abd9082612421565b600b556040518181527f1730415ef59f304dd1da6ed28821f819b979f6efbab42c44aebefaa4b7b5131e90602001610900565b610af8611621565b610b015f611de0565b565b610b0b611621565b60108190556101f4811115610b1e575f80fd5b6040518181527fe1435708d333edbd00af16b969ad0814c8a957a37fefc22afda088dfebec2cd090602001610900565b606060048054610822906123c2565b610b65611621565b6006546001600160a01b0390811690831603610be95760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610997565b610bf38282611e39565b604051811515906001600160a01b038416907f6fd08642eb227264836bd314a2faad34ea890d67a077763e0809e9acd2aa892d905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610caf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610997565b610cbc33858584036114fe565b5060019392505050565b5f6108af338484611681565b610cda611621565b612710610ce660025490565b610cf190600a612421565b610cfb9190612438565b811015610d5c5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610997565b60055460ff16610d6d90600a612537565b610d779082612421565b6009556040518181527f93f578c61e9ff613008cec299dd781e522b70349dcd321ca43de1c00d6778ea490602001610900565b5f610db3611621565b620186a0610dc060025490565b610dcb906001612421565b610dd59190612438565b821015610e425760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610997565b612710610e4e60025490565b610e59906064612421565b610e639190612438565b821115610ecd5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101892903a37ba30b61039bab838363c9760711b6064820152608401610997565b600a8290556040518281527f3bd8f1497f38289f05933d46fadc4ebe49ab69ae55fb2cc2efe549e15bb73cf69060200160405180910390a1506001919050565b610f15611621565b600c54610100900460ff1615610f6d5760405162461bcd60e51b815260206004820152601960248201527f74726164696e6720697320616c726561647920616374697665000000000000006044820152606401610997565b610f9b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6109ee60025490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101b9190612545565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611086573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110aa9190612545565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111189190612545565b600680546001600160a01b0319166001600160a01b039290921691821790556111429060016113b1565b600654611159906001600160a01b03166001611e39565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71947306111a8306001600160a01b03165f9081526020819052604090205490565b5f806111c26005546001600160a01b036101009091041690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611228573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061124d9190612560565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af11580156112c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e4919061258b565b50600c805462ffff00191662010100179055565b611300611621565b600c8054821515620100000262ff0000199091161790556040517f0a02a9777cf03eb2f9c8a2400ac5f4142480e5844e543d81cf6f03416519077d9061090090831515815260200190565b611353611621565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f9cc19e08ba758837142b0e92d33f07d6494311434625fa20b5cfc51195abab61910160405180910390a25050565b6113b9611621565b6001600160a01b0382165f81815260166020908152604091829020805460ff19168515159081179091558251938452908301527f7f654cd58ed27e5f937ca593d4b7b6c2712dd47aae3a8980c67dddf81430257a910160405180910390a15050565b5f611424611621565b50600e805460ff19169055600190565b61143c611621565b600880546001600160a01b0319166001600160a01b0383169081179091556040517fc314153aca90d62d1eb1c8798d85eb9eb192a82c4775f818897bec6858c54b26905f90a250565b61148d611621565b6001600160a01b0381166114f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610997565b6114fb81611de0565b50565b6001600160a01b0383166115605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610997565b6001600160a01b0382166115c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610997565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03610100909104163314610b015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610997565b6001600160a01b0383166116a75760405162461bcd60e51b8152600401610997906125a6565b6001600160a01b0382166116cd5760405162461bcd60e51b8152600401610997906125eb565b805f036116e4576116df83835f611e8c565b505050565b600c5460ff1615611b75576005546001600160a01b03848116610100909204161480159061172557506005546001600160a01b038381166101009092041614155b801561173957506001600160a01b03821615155b801561175057506001600160a01b03821661dead14155b80156117665750600754600160a01b900460ff16155b15611b7557600c54610100900460ff166117fc576001600160a01b0383165f9081526015602052604090205460ff16806117b757506001600160a01b0382165f9081526015602052604090205460ff165b6117fc5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610997565b600e5460ff1615611922576005546001600160a01b03838116610100909204161480159061185c57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561187657506006546001600160a01b03838116911614155b1561192257325f908152600d602052604090205443116119105760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610997565b325f908152600d602052604090204390555b6001600160a01b0383165f9081526017602052604090205460ff16801561196157506001600160a01b0382165f9081526016602052604090205460ff16155b15611a3e576009548111156119d05760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610997565b600b546001600160a01b0383165f908152602081905260409020546119f5908361240e565b1115611a395760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610997565b611b75565b6001600160a01b0382165f9081526017602052604090205460ff168015611a7d57506001600160a01b0383165f9081526016602052604090205460ff16155b15611aed57600954811115611a395760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610997565b6001600160a01b0382165f9081526016602052604090205460ff16611b7557600b546001600160a01b0383165f90815260208190526040902054611b31908361240e565b1115611b755760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610997565b305f90815260208190526040902054600a5481108015908190611ba05750600c5462010000900460ff165b8015611bb65750600754600160a01b900460ff16155b8015611bda57506001600160a01b0385165f9081526017602052604090205460ff16155b8015611bfe57506001600160a01b0385165f9081526015602052604090205460ff16155b8015611c2257506001600160a01b0384165f9081526015602052604090205460ff16155b8015611c315750601254601454115b15611c6e576007805460ff60a01b1916600160a01b179055601154611c6090611c5b908490611fdf565b611ff6565b6007805460ff60a01b191690555b6007546001600160a01b0386165f9081526015602052604090205460ff600160a01b909204821615911680611cba57506001600160a01b0385165f9081526015602052604090205460ff165b15611cc257505f5b5f8115611d9b576001600160a01b0386165f9081526017602052604090205460ff168015611cf157505f601054115b15611d1e57611d17612710611d116010548861205690919063ffffffff16565b90612061565b9050611d7d565b6001600160a01b0387165f9081526017602052604090205460ff168015611d4657505f600f54115b15611d7d57611d66612710611d11600f548861205690919063ffffffff16565b601480549192505f611d778361262e565b91905055505b8015611d8e57611d8e873083611e8c565b611d988186612646565b94505b611da6878787611e8c565b60135460145410158015611dbc5750600c5460ff165b15611dd757600c805460ff191690556101f4600f8190556010555b50505050505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260176020526040808220805460ff191685151590811790915590519092917f6fd08642eb227264836bd314a2faad34ea890d67a077763e0809e9acd2aa892d91a35050565b6001600160a01b038316611eb25760405162461bcd60e51b8152600401610997906125a6565b6001600160a01b038216611ed85760405162461bcd60e51b8152600401610997906125eb565b6001600160a01b0383165f9081526020819052604090205481811015611f4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610997565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f8590849061240e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fd191815260200190565b60405180910390a350505050565b5f818311611fed5782611fef565b815b9392505050565b5f815f03612002575050565b8161200c8161206c565b60085460405147916001600160a01b03169082905f81818185875af1925050503d805f8114611dd7576040519150601f19603f3d011682016040523d82523d5f602084013e611dd7565b5f611fef8284612421565b5f611fef8284612438565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061209f5761209f612659565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213f9190612545565b8160018151811061215257612152612659565b60200260200101906001600160a01b031690816001600160a01b03168152505061219d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114fe565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906121f19085905f9086903090429060040161266d565b5f604051808303815f87803b158015612208575f80fd5b505af115801561221a573d5f803e3d5ffd5b505050505050565b5f6020808352835180828501525f5b8181101561224d57858101830151858201604001528201612231565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114fb575f80fd5b5f8060408385031215612292575f80fd5b823561229d8161226d565b946020939093013593505050565b5f602082840312156122bb575f80fd5b5035919050565b5f805f606084860312156122d4575f80fd5b83356122df8161226d565b925060208401356122ef8161226d565b929592945050506040919091013590565b80151581146114fb575f80fd5b5f806040838503121561231e575f80fd5b823561232981612300565b9150602083013561233981612300565b809150509250929050565b5f60208284031215612354575f80fd5b8135611fef8161226d565b5f8060408385031215612370575f80fd5b82356123298161226d565b5f6020828403121561238b575f80fd5b8135611fef81612300565b5f80604083850312156123a7575f80fd5b82356123b28161226d565b915060208301356123398161226d565b600181811c908216806123d657607f821691505b6020821081036123f457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108b3576108b36123fa565b80820281158282048414176108b3576108b36123fa565b5f8261245257634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561249157815f1904821115612477576124776123fa565b8085161561248457918102915b93841c939080029061245c565b509250929050565b5f826124a7575060016108b3565b816124b357505f6108b3565b81600181146124c957600281146124d3576124ef565b60019150506108b3565b60ff8411156124e4576124e46123fa565b50506001821b6108b3565b5060208310610133831016604e8410600b8410161715612512575081810a6108b3565b61251c8383612457565b805f190482111561252f5761252f6123fa565b029392505050565b5f611fef60ff841683612499565b5f60208284031215612555575f80fd5b8151611fef8161226d565b5f805f60608486031215612572575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561259b575f80fd5b8151611fef81612300565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161263f5761263f6123fa565b5060010190565b818103818111156108b3576108b36123fa565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156126bb5784516001600160a01b031683529383019391830191600101612696565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220741d411b56e17fcbd4f42818c3cfd50c45627be54ce362a3178e3227915d6d0d64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000034fd543115aae04d0f670c06baab6f33bdded26c
-----Decoded View---------------
Arg [0] : _operationsWallet (address): 0x34FD543115aae04d0F670C06baaB6F33BDded26C
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000034fd543115aae04d0f670c06baab6f33bdded26c
Deployed Bytecode Sourcemap
28559:12785:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13674:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14661:194;;;;;;;;;;-1:-1:-1;14661:194:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;14661:194:0;1023:187:1;40533:193:0;;;;;;;;;;-1:-1:-1;40533:193:0;;;;;:::i;:::-;;:::i;:::-;;28637:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1590:32:1;;;1572:51;;1560:2;1545:18;28637:51:0;1400:229:1;14002:108:0;;;;;;;;;;-1:-1:-1;14090:12:0;;14002:108;;;1780:25:1;;;1768:2;1753:18;14002:108:0;1634:177:1;14863:529:0;;;;;;;;;;-1:-1:-1;14863:529:0;;;;;:::i;:::-;;:::i;13894:100::-;;;;;;;;;;-1:-1:-1;13977:9:0;;13894:100;;13977:9;;;;2419:36:1;;2407:2;2392:18;13894:100:0;2277:184:1;15400:290:0;;;;;;;;;;-1:-1:-1;15400:290:0;;;;;:::i;:::-;;:::i;32799:143::-;;;;;;;;;;-1:-1:-1;32799:143:0;;;;;:::i;:::-;;:::i;28695:28::-;;;;;;;;;;-1:-1:-1;28695:28:0;;;;-1:-1:-1;;;;;28695:28:0;;;28983:33;;;;;;;;;;-1:-1:-1;28983:33:0;;;;;;;;33299:126;;;;;;;;;;-1:-1:-1;33299:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;33389:28:0;33365:4;33389:28;;;:19;:28;;;;;;;;;33299:126;39790:327;;;;;;;;;;-1:-1:-1;39790:327:0;;;;;:::i;:::-;;:::i;29365:35::-;;;;;;;;;;;;;;;;29063:31;;;;;;;;;;-1:-1:-1;29063:31:0;;;;;;;;;;;14118:143;;;;;;;;;;-1:-1:-1;14118:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14235:18:0;14208:7;14235:18;;;;;;;;;;;;14118:143;20514:103;;;;;;;;;;;;;:::i;29407:29::-;;;;;;;;;;;;;;;;40734:197;;;;;;;;;;-1:-1:-1;40734:197:0;;;;;:::i;:::-;;:::i;19873:87::-;;;;;;;;;;-1:-1:-1;19946:6:0;;;;;-1:-1:-1;;;;;19946:6:0;19873:87;;13782:104;;;;;;;;;;;;;:::i;38522:353::-;;;;;;;;;;-1:-1:-1;38522:353:0;;;;;:::i;:::-;;:::i;15698:475::-;;;;;;;;;;-1:-1:-1;15698:475:0;;;;;:::i;:::-;;:::i;14269:200::-;;;;;;;;;;-1:-1:-1;14269:200:0;;;;;:::i;:::-;;:::i;39435:347::-;;;;;;;;;;-1:-1:-1;39435:347:0;;;;;:::i;:::-;;:::i;38883:544::-;;;;;;;;;;-1:-1:-1;38883:544:0;;;;;:::i;:::-;;:::i;29568:57::-;;;;;;;;;;-1:-1:-1;29568:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29023:33;;;;;;;;;;-1:-1:-1;29023:33:0;;;;;;;;;;;28874:29;;;;;;;;;;;;;;;;29320:38;;;;;;;;;;;;;;;;29170:39;;;;;;;;;;-1:-1:-1;29170:39:0;;;;;;;;31885:738;;;:::i;40365:160::-;;;;;;;;;;-1:-1:-1;40365:160:0;;;;;:::i;:::-;;:::i;40939:197::-;;;;;;;;;;-1:-1:-1;40939:197:0;;;;;:::i;:::-;;:::i;40125:232::-;;;;;;;;;;-1:-1:-1;40125:232:0;;;;;:::i;:::-;;:::i;14477:176::-;;;;;;;;;;-1:-1:-1;14477:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;14618:18:0;;;14591:7;14618:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14477:176;29247:23;;;;;;;;;;;;;;;;29504:57;;;;;;;;;;-1:-1:-1;29504:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28910:33;;;;;;;;;;;;;;;;29218:22;;;;;;;;;;;;;;;;32950:135;;;;;;;;;;;;;:::i;41144:197::-;;;;;;;;;;-1:-1:-1;41144:197:0;;;;;:::i;:::-;;:::i;20772:238::-;;;;;;;;;;-1:-1:-1;20772:238:0;;;;;:::i;:::-;;:::i;28730:66::-;;;;;;;;;;-1:-1:-1;28730:66:0;;;;-1:-1:-1;;;;;28730:66:0;;;28950:24;;;;;;;;;;;;;;;;13674:100;13728:13;13761:5;13754:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13674:100;:::o;14661:194::-;14769:4;14786:39;12996:10;14809:7;14818:6;14786:8;:39::i;:::-;-1:-1:-1;14843:4:0;14661:194;;;;;:::o;40533:193::-;19759:13;:11;:13::i;:::-;40608:7:::1;:26:::0;;;40664:3:::1;40653:14:::0;::::1;;40645:23;;;::::0;::::1;;40684:34;::::0;1780:25:1;;;40684:34:0::1;::::0;1768:2:1;1753:18;40684:34:0::1;;;;;;;;40533:193:::0;:::o;14863:529::-;15003:4;15020:36;15030:6;15038:9;15049:6;15020:9;:36::i;:::-;-1:-1:-1;;;;;15096:19:0;;15069:24;15096:19;;;:11;:19;;;;;;;;12996:10;15096:33;;;;;;;;15162:26;;;;15140:116;;;;-1:-1:-1;;;15140:116:0;;5043:2:1;15140:116:0;;;5025:21:1;5082:2;5062:18;;;5055:30;5121:34;5101:18;;;5094:62;-1:-1:-1;;;5172:18:1;;;5165:38;5220:19;;15140:116:0;;;;;;;;;15292:57;15301:6;12996:10;15342:6;15323:16;:25;15292:8;:57::i;:::-;-1:-1:-1;15380:4:0;;14863:529;-1:-1:-1;;;;14863:529:0:o;15400:290::-;12996:10;15513:4;15602:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15602:34:0;;;;;;;;;;15513:4;;15530:130;;15580:7;;15602:47;;15639:10;;15602:47;:::i;:::-;15530:8;:130::i;32799:143::-;19759:13;:11;:13::i;:::-;32878::::1;:22:::0;;-1:-1:-1;;32911:23:0;32878:22:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;32911:23:0;;;;;;::::1;;;::::0;;32799:143::o;39790:327::-;19759:13;:11;:13::i;:::-;39930:6:::1;39908:13;14090:12:::0;;;14002:108;39908:13:::1;:18;::::0;39924:2:::1;39908:18;:::i;:::-;39907:29;;;;:::i;:::-;39888:14;:49;;39866:135;;;::::0;-1:-1:-1;;;39866:135:0;;6109:2:1;39866:135:0::1;::::0;::::1;6091:21:1::0;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:34;6282:19;;39866:135:0::1;5907:400:1::0;39866:135:0::1;13977:9:::0;;;;40042:16:::1;::::0;:2:::1;:16;:::i;:::-;40024:35;::::0;:14;:35:::1;:::i;:::-;40012:9;:47:::0;40075:34:::1;::::0;1780:25:1;;;40075:34:0::1;::::0;1768:2:1;1753:18;40075:34:0::1;1634:177:1::0;20514:103:0;19759:13;:11;:13::i;:::-;20579:30:::1;20606:1;20579:18;:30::i;:::-;20514:103::o:0;40734:197::-;19759:13;:11;:13::i;:::-;40810:8:::1;:27:::0;;;40868:3:::1;40856:15:::0;::::1;;40848:24;;;::::0;::::1;;40888:35;::::0;1780:25:1;;;40888:35:0::1;::::0;1768:2:1;1753:18;40888:35:0::1;1634:177:1::0;13782:104:0;13838:13;13871:7;13864:14;;;;;:::i;38522:353::-;19759:13;:11;:13::i;:::-;38647::::1;::::0;-1:-1:-1;;;;;38647:13:0;;::::1;38639:21:::0;;::::1;::::0;38617:128:::1;;;::::0;-1:-1:-1;;;38617:128:0;;7897:2:1;38617:128:0::1;::::0;::::1;7879:21:1::0;7936:2;7916:18;;;7909:30;7975:34;7955:18;;;7948:62;8046:27;8026:18;;;8019:55;8091:19;;38617:128:0::1;7695:421:1::0;38617:128:0::1;38756:45;38785:4;38791:9;38756:28;:45::i;:::-;38817:50;::::0;;::::1;;::::0;-1:-1:-1;;;;;38817:50:0;::::1;::::0;::::1;::::0;;;::::1;38522:353:::0;;:::o;15698:475::-;12996:10;15816:4;15860:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15860:34:0;;;;;;;;;;15927:35;;;;15905:122;;;;-1:-1:-1;;;15905:122:0;;8323:2:1;15905:122:0;;;8305:21:1;8362:2;8342:18;;;8335:30;8401:34;8381:18;;;8374:62;-1:-1:-1;;;8452:18:1;;;8445:35;8497:19;;15905:122:0;8121:401:1;15905:122:0;16063:67;12996:10;16086:7;16114:15;16095:16;:34;16063:8;:67::i;:::-;-1:-1:-1;16161:4:0;;15698:475;-1:-1:-1;;;15698:475:0:o;14269:200::-;14380:4;14397:42;12996:10;14421:9;14432:6;14397:9;:42::i;39435:347::-;19759:13;:11;:13::i;:::-;39580:6:::1;39558:13;14090:12:::0;;;14002:108;39558:13:::1;:18;::::0;39574:2:::1;39558:18;:::i;:::-;39557:29;;;;:::i;:::-;39538:14;:49;;39516:140;;;::::0;-1:-1:-1;;;39516:140:0;;8729:2:1;39516:140:0::1;::::0;::::1;8711:21:1::0;8768:2;8748:18;;;8741:30;8807:34;8787:18;;;8780:62;-1:-1:-1;;;8858:18:1;;;8851:39;8907:19;;39516:140:0::1;8527:405:1::0;39516:140:0::1;13977:9:::0;;;;39702:16:::1;::::0;:2:::1;:16;:::i;:::-;39684:35;::::0;:14;:35:::1;:::i;:::-;39667:14;:52:::0;39735:39:::1;::::0;1780:25:1;;;39735:39:0::1;::::0;1768:2:1;1753:18;39735:39:0::1;1634:177:1::0;38883:544:0;38966:4;19759:13;:11;:13::i;:::-;39045:7:::1;39024:13;14090:12:::0;;;14002:108;39024:13:::1;:17;::::0;39040:1:::1;39024:17;:::i;:::-;39023:29;;;;:::i;:::-;39005:14;:47;;38983:150;;;::::0;-1:-1:-1;;;38983:150:0;;9139:2:1;38983:150:0::1;::::0;::::1;9121:21:1::0;9178:2;9158:18;;;9151:30;9217:34;9197:18;;;9190:62;-1:-1:-1;;;9268:18:1;;;9261:51;9329:19;;38983:150:0::1;8937:417:1::0;38983:150:0::1;39208:6;39185:13;14090:12:::0;;;14002:108;39185:13:::1;:19;::::0;39201:3:::1;39185:19;:::i;:::-;39184:30;;;;:::i;:::-;39166:14;:48;;39144:148;;;::::0;-1:-1:-1;;;39144:148:0;;9561:2:1;39144:148:0::1;::::0;::::1;9543:21:1::0;9600:2;9580:18;;;9573:30;9639:34;9619:18;;;9612:62;-1:-1:-1;;;9690:18:1;;;9683:48;9748:19;;39144:148:0::1;9359:414:1::0;39144:148:0::1;39303:18;:35:::0;;;39354:43:::1;::::0;1780:25:1;;;39354:43:0::1;::::0;1768:2:1;1753:18;39354:43:0::1;;;;;;;-1:-1:-1::0;39415:4:0::1;38883:544:::0;;;:::o;31885:738::-;19759:13;:11;:13::i;:::-;31957::::1;::::0;::::1;::::0;::::1;;;31956:14;31948:51;;;::::0;-1:-1:-1;;;31948:51:0;;9980:2:1;31948:51:0::1;::::0;::::1;9962:21:1::0;10019:2;9999:18;;;9992:30;10058:27;10038:18;;;10031:55;10103:18;;31948:51:0::1;9778:349:1::0;31948:51:0::1;32010:64;32027:4;32042:15;32060:13;14090:12:::0;;;14002:108;32010:64:::1;32119:15;-1:-1:-1::0;;;;;32119:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32101:55:0::1;;32165:4;32172:15;-1:-1:-1::0;;;;;32172:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32101:94;::::0;-1:-1:-1;;;;;;32101:94:0::1;::::0;;;;;;-1:-1:-1;;;;;10618:15:1;;;32101:94:0::1;::::0;::::1;10600:34:1::0;10670:15;;10650:18;;;10643:43;10535:18;;32101:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32085:13;:110:::0;;-1:-1:-1;;;;;;32085:110:0::1;-1:-1:-1::0;;;;;32085:110:0;;;::::1;::::0;;::::1;::::0;;32206:58:::1;::::0;-1:-1:-1;32206:28:0::1;:58::i;:::-;32312:13;::::0;32275:58:::1;::::0;-1:-1:-1;;;;;32312:13:0::1;::::0;32275:28:::1;:58::i;:::-;32344:15;-1:-1:-1::0;;;;;32344:31:0::1;;32383:21;32414:4;32420:24;32438:4;-1:-1:-1::0;;;;;14235:18:0;14208:7;14235:18;;;;;;;;;;;;14118:143;32420:24:::1;32445:1;32447::::0;32449:7:::1;19946:6:::0;;-1:-1:-1;;;;;19946:6:0;;;;;;19873:87;32449:7:::1;32344:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;32344:129:0;;;-1:-1:-1;;;;;11056:15:1;;;32344:129:0::1;::::0;::::1;11038:34:1::0;11088:18;;;11081:34;;;;11131:18;;;11124:34;;;;11174:18;;;11167:34;11238:15;;;11217:19;;;11210:44;32457:15:0::1;11270:19:1::0;;;11263:35;10972:19;;32344:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;32491:13:0::1;::::0;32484:71:::1;::::0;-1:-1:-1;;;32484:71:0;;-1:-1:-1;;;;;32522:15:0::1;11812:32:1::0;;32484:71:0::1;::::0;::::1;11794:51:1::0;-1:-1:-1;;11861:18:1;;;11854:34;32491:13:0;;::::1;::::0;-1:-1:-1;32484:29:0::1;::::0;11767:18:1;;32484:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;32566:11:0::1;:18:::0;;-1:-1:-1;;32595:20:0;;;;;31885:738::o;40365:160::-;19759:13;:11;:13::i;:::-;40441:11:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;40441:23:0;;::::1;;::::0;;40480:37:::1;::::0;::::1;::::0;::::1;::::0;40455:9;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;40939:197:0;19759:13;:11;:13::i;:::-;-1:-1:-1;;;;;41028:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:40;;-1:-1:-1;;41028:40:0::1;::::0;::::1;;::::0;;::::1;::::0;;;41084:44;;1163:41:1;;;41084:44:0::1;::::0;1136:18:1;41084:44:0::1;;;;;;;40939:197:::0;;:::o;40125:232::-;19759:13;:11;:13::i;:::-;-1:-1:-1;;;;;40227:37:0;::::1;;::::0;;;:25:::1;:37;::::0;;;;;;;;:49;;-1:-1:-1;;40227:49:0::1;::::0;::::1;;::::0;;::::1;::::0;;;40292:57;;12317:51:1;;;12384:18;;;12377:50;40292:57:0::1;::::0;12290:18:1;40292:57:0::1;;;;;;;40125:232:::0;;:::o;32950:135::-;33010:4;19759:13;:11;:13::i;:::-;-1:-1:-1;33027:20:0::1;:28:::0;;-1:-1:-1;;33027:28:0::1;::::0;;;32950:135;:::o;41144:197::-;19759:13;:11;:13::i;:::-;41232:16:::1;:38:::0;;-1:-1:-1;;;;;;41232:38:0::1;-1:-1:-1::0;;;;;41232:38:0;::::1;::::0;;::::1;::::0;;;41286:47:::1;::::0;::::1;::::0;-1:-1:-1;;41286:47:0::1;41144:197:::0;:::o;20772:238::-;19759:13;:11;:13::i;:::-;-1:-1:-1;;;;;20875:22:0;::::1;20853:110;;;::::0;-1:-1:-1;;;20853:110:0;;12640:2:1;20853:110:0::1;::::0;::::1;12622:21:1::0;12679:2;12659:18;;;12652:30;12718:34;12698:18;;;12691:62;-1:-1:-1;;;12769:18:1;;;12762:36;12815:19;;20853:110:0::1;12438:402:1::0;20853:110:0::1;20974:28;20993:8;20974:18;:28::i;:::-;20772:238:::0;:::o;17965:380::-;-1:-1:-1;;;;;18101:19:0;;18093:68;;;;-1:-1:-1;;;18093:68:0;;13047:2:1;18093:68:0;;;13029:21:1;13086:2;13066:18;;;13059:30;13125:34;13105:18;;;13098:62;-1:-1:-1;;;13176:18:1;;;13169:34;13220:19;;18093:68:0;12845:400:1;18093:68:0;-1:-1:-1;;;;;18180:21:0;;18172:68;;;;-1:-1:-1;;;18172:68:0;;13452:2:1;18172:68:0;;;13434:21:1;13491:2;13471:18;;;13464:30;13530:34;13510:18;;;13503:62;-1:-1:-1;;;13581:18:1;;;13574:32;13623:19;;18172:68:0;13250:398:1;18172:68:0;-1:-1:-1;;;;;18253:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18305:32;;1780:25:1;;;18305:32:0;;1753:18:1;18305:32:0;;;;;;;17965:380;;;:::o;20038:132::-;19946:6;;-1:-1:-1;;;;;19946:6:0;;;;;12996:10;20102:23;20094:68;;;;-1:-1:-1;;;20094:68:0;;13855:2:1;20094:68:0;;;13837:21:1;;;13874:18;;;13867:30;13933:34;13913:18;;;13906:62;13985:18;;20094:68:0;13653:356:1;33433:4095:0;-1:-1:-1;;;;;33565:18:0;;33557:68;;;;-1:-1:-1;;;33557:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33644:16:0;;33636:64;;;;-1:-1:-1;;;33636:64:0;;;;;;;:::i;:::-;33717:6;33727:1;33717:11;33713:93;;33745:28;33761:4;33767:2;33771:1;33745:15;:28::i;:::-;33433:4095;;;:::o;33713:93::-;33822:14;;;;33818:2272;;;19946:6;;-1:-1:-1;;;;;33875:15:0;;;19946:6;;;;;33875:15;;;;:49;;-1:-1:-1;19946:6:0;;-1:-1:-1;;;;;33911:13:0;;;19946:6;;;;;33911:13;;33875:49;:86;;;;-1:-1:-1;;;;;;33945:16:0;;;;33875:86;:128;;;;-1:-1:-1;;;;;;33982:21:0;;33996:6;33982:21;;33875:128;:158;;;;-1:-1:-1;34025:8:0;;-1:-1:-1;;;34025:8:0;;;;34024:9;33875:158;33853:2226;;;34073:13;;;;;;;34068:223;;-1:-1:-1;;;;;34145:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;34174:23:0;;;;;;:19;:23;;;;;;;;34145:52;34111:160;;;;-1:-1:-1;;;34111:160:0;;15026:2:1;34111:160:0;;;15008:21:1;15065:2;15045:18;;;15038:30;-1:-1:-1;;;15084:18:1;;;15077:52;15146:18;;34111:160:0;14824:346:1;34111:160:0;34315:20;;;;34311:600;;;19946:6;;-1:-1:-1;;;;;34390:13:0;;;19946:6;;;;;34390:13;;;;:72;;;34446:15;-1:-1:-1;;;;;34432:30:0;:2;-1:-1:-1;;;;;34432:30:0;;;34390:72;:129;;;;-1:-1:-1;34505:13:0;;-1:-1:-1;;;;;34491:28:0;;;34505:13;;34491:28;;34390:129;34360:532;;;34633:9;34608:35;;;;:24;:35;;;;;;34646:12;-1:-1:-1;34570:221:0;;;;-1:-1:-1;;;34570:221:0;;15377:2:1;34570:221:0;;;15359:21:1;15416:2;15396:18;;;15389:30;15455:34;15435:18;;;15428:62;15526:34;15506:18;;;15499:62;-1:-1:-1;;;15577:19:1;;;15570:40;15627:19;;34570:221:0;15175:477:1;34570:221:0;34843:9;34818:35;;;;:24;:35;;;;;34856:12;34818:50;;34360:532;-1:-1:-1;;;;;34985:31:0;;;;;;:25;:31;;;;;;;;:86;;;;-1:-1:-1;;;;;;35042:29:0;;;;;;:25;:29;;;;;;;;35041:30;34985:86;34959:1105;;;35158:14;;35148:6;:24;;35114:157;;;;-1:-1:-1;;;35114:157:0;;15859:2:1;35114:157:0;;;15841:21:1;15898:2;15878:18;;;15871:30;15937:34;15917:18;;;15910:62;-1:-1:-1;;;15988:18:1;;;15981:45;16043:19;;35114:157:0;15657:411:1;35114:157:0;35354:9;;-1:-1:-1;;;;;14235:18:0;;14208:7;14235:18;;;;;;;;;;;35328:22;;:6;:22;:::i;:::-;:35;;35294:140;;;;-1:-1:-1;;;35294:140:0;;16275:2:1;35294:140:0;;;16257:21:1;16314:2;16294:18;;;16287:30;-1:-1:-1;;;16333:18:1;;;16326:49;16392:18;;35294:140:0;16073:343:1;35294:140:0;34959:1105;;;-1:-1:-1;;;;;35532:29:0;;;;;;:25;:29;;;;;;;;:86;;;;-1:-1:-1;;;;;;35587:31:0;;;;;;:25;:31;;;;;;;;35586:32;35532:86;35506:558;;;35705:14;;35695:6;:24;;35661:158;;;;-1:-1:-1;;;35661:158:0;;16623:2:1;35661:158:0;;;16605:21:1;16662:2;16642:18;;;16635:30;16701:34;16681:18;;;16674:62;-1:-1:-1;;;16752:18:1;;;16745:46;16808:19;;35661:158:0;16421:412:1;35506:558:0;-1:-1:-1;;;;;35850:29:0;;;;;;:25;:29;;;;;;;;35845:219;;35964:9;;-1:-1:-1;;;;;14235:18:0;;14208:7;14235:18;;;;;;;;;;;35938:22;;:6;:22;:::i;:::-;:35;;35904:140;;;;-1:-1:-1;;;35904:140:0;;16275:2:1;35904:140:0;;;16257:21:1;16314:2;16294:18;;;16287:30;-1:-1:-1;;;16333:18:1;;;16326:49;16392:18;;35904:140:0;16073:343:1;35904:140:0;36151:4;36102:28;14235:18;;;;;;;;;;;36209;;36185:42;;;;;;;36258:35;;-1:-1:-1;36282:11:0;;;;;;;36258:35;:61;;;;-1:-1:-1;36311:8:0;;-1:-1:-1;;;36311:8:0;;;;36310:9;36258:61;:110;;;;-1:-1:-1;;;;;;36337:31:0;;;;;;:25;:31;;;;;;;;36336:32;36258:110;:153;;;;-1:-1:-1;;;;;;36386:25:0;;;;;;:19;:25;;;;;;;;36385:26;36258:153;:194;;;;-1:-1:-1;;;;;;36429:23:0;;;;;;:19;:23;;;;;;;;36428:24;36258:194;:242;;;;;36482:18;;36469:10;;:31;36258:242;36240:415;;;36527:8;:15;;-1:-1:-1;;;;36527:15:0;-1:-1:-1;;;36527:15:0;;;36592:18;;36557:55;;36566:45;;36570:20;;36566:3;:45::i;:::-;36557:8;:55::i;:::-;36627:8;:16;;-1:-1:-1;;;;36627:16:0;;;36240:415;36683:8;;-1:-1:-1;;;;;36708:25:0;;36667:12;36708:25;;;:19;:25;;;;;;36683:8;-1:-1:-1;;;36683:8:0;;;;;36682:9;;36708:25;;:52;;-1:-1:-1;;;;;;36737:23:0;;;;;;:19;:23;;;;;;;;36708:52;36704:100;;;-1:-1:-1;36787:5:0;36704:100;36816:12;36849:7;36845:524;;;-1:-1:-1;;;;;36901:29:0;;;;;;:25;:29;;;;;;;;:45;;;;;36945:1;36934:8;;:12;36901:45;36897:323;;;36974:32;36999:6;36974:20;36985:8;;36974:6;:10;;:20;;;;:::i;:::-;:24;;:32::i;:::-;36967:39;;36897:323;;;-1:-1:-1;;;;;37068:31:0;;;;;;:25;:31;;;;;;;;:46;;;;;37113:1;37103:7;;:11;37068:46;37064:156;;;37142:31;37166:6;37142:19;37153:7;;37142:6;:10;;:19;;;;:::i;:31::-;37192:10;:12;;37135:38;;-1:-1:-1;37192:10:0;:12;;;:::i;:::-;;;;;;37064:156;37240:8;;37236:91;;37269:42;37285:4;37299;37306;37269:15;:42::i;:::-;37343:14;37353:4;37343:14;;:::i;:::-;;;36845:524;37381:33;37397:4;37403:2;37407:6;37381:15;:33::i;:::-;37445:15;;37431:10;;:29;;:47;;;;-1:-1:-1;37464:14:0;;;;37431:47;37427:94;;;32690:14;:22;;-1:-1:-1;;32690:22:0;;;32733:3;32723:7;:13;;;32747:8;:14;37427:94;33546:3982;;;;33433:4095;;;:::o;21170:191::-;21263:6;;;-1:-1:-1;;;;;21280:17:0;;;21263:6;21280:17;;;-1:-1:-1;;;;;;21280:17:0;;;;;;21313:40;;21263:6;;;;;;;;21313:40;;21244:16;;21313:40;21233:128;21170:191;:::o;33093:194::-;-1:-1:-1;;;;;33176:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;33176:39:0;;;;;;;;;;33233:46;;33176:39;;:31;33233:46;;;33093:194;;:::o;16181:770::-;-1:-1:-1;;;;;16321:20:0;;16313:70;;;;-1:-1:-1;;;16313:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16402:23:0;;16394:71;;;;-1:-1:-1;;;16394:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16562:17:0;;16538:21;16562:17;;;;;;;;;;;16612:23;;;;16590:111;;;;-1:-1:-1;;;16590:111:0;;17313:2:1;16590:111:0;;;17295:21:1;17352:2;17332:18;;;17325:30;17391:34;17371:18;;;17364:62;-1:-1:-1;;;17442:18:1;;;17435:36;17488:19;;16590:111:0;17111:402:1;16590:111:0;-1:-1:-1;;;;;16737:17:0;;;:9;:17;;;;;;;;;;;16757:22;;;16737:42;;16801:20;;;;;;;;:30;;16773:6;;16737:9;16801:30;;16773:6;;16801:30;:::i;:::-;;;;;;;;16866:9;-1:-1:-1;;;;;16849:35:0;16858:6;-1:-1:-1;;;;;16849:35:0;;16877:6;16849:35;;;;1780:25:1;;1768:2;1753:18;;1634:177;16849:35:0;;;;;;;;16302:649;16181:770;;;:::o;37536:107::-;37593:7;37625:1;37621;:5;37620:15;;37634:1;37620:15;;;37630:1;37620:15;37613:22;37536:107;-1:-1:-1;;;37536:107:0:o;38134:365::-;38187:12;38216:6;38226:1;38216:11;38212:50;;38244:7;38134:365;:::o;38212:50::-;38303:6;38322:36;38303:6;38322:16;:36::i;:::-;38446:16;;38438:53;;38392:21;;-1:-1:-1;;;;;38446:16:0;;38392:21;;38438:53;;;;38392:21;38446:16;38438:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25105:98;25163:7;25190:5;25194:1;25190;:5;:::i;25504:98::-;25562:7;25589:5;25593:1;25589;:5;:::i;37651:475::-;37741:16;;;37755:1;37741:16;;;;;;;;37717:21;;37741:16;;;;;;;;;;-1:-1:-1;37741:16:0;37717:40;;37786:4;37768;37773:1;37768:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;37768:23:0;;;-1:-1:-1;;;;;37768:23:0;;;;;37812:15;-1:-1:-1;;;;;37812:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37802:4;37807:1;37802:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;37802:32:0;;;-1:-1:-1;;;;;37802:32:0;;;;;37847:62;37864:4;37879:15;37897:11;37847:8;:62::i;:::-;37922:196;;-1:-1:-1;;;37922:196:0;;-1:-1:-1;;;;;37922:15:0;:66;;;;:196;;38003:11;;38029:1;;38045:4;;38072;;38092:15;;37922:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37706:420;37651:475;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:180::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;-1:-1:-1;1366:23:1;;1215:180;-1:-1:-1;1215:180:1:o;1816:456::-;1893:6;1901;1909;1962:2;1950:9;1941:7;1937:23;1933:32;1930:52;;;1978:1;1975;1968:12;1930:52;2017:9;2004:23;2036:31;2061:5;2036:31;:::i;:::-;2086:5;-1:-1:-1;2143:2:1;2128:18;;2115:32;2156:33;2115:32;2156:33;:::i;:::-;1816:456;;2208:7;;-1:-1:-1;;;2262:2:1;2247:18;;;;2234:32;;1816:456::o;2466:118::-;2552:5;2545:13;2538:21;2531:5;2528:32;2518:60;;2574:1;2571;2564:12;2589:376;2651:6;2659;2712:2;2700:9;2691:7;2687:23;2683:32;2680:52;;;2728:1;2725;2718:12;2680:52;2767:9;2754:23;2786:28;2808:5;2786:28;:::i;:::-;2833:5;-1:-1:-1;2890:2:1;2875:18;;2862:32;2903:30;2862:32;2903:30;:::i;:::-;2952:7;2942:17;;;2589:376;;;;;:::o;3178:247::-;3237:6;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3345:9;3332:23;3364:31;3389:5;3364:31;:::i;3430:382::-;3495:6;3503;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;3611:9;3598:23;3630:31;3655:5;3630:31;:::i;3817:241::-;3873:6;3926:2;3914:9;3905:7;3901:23;3897:32;3894:52;;;3942:1;3939;3932:12;3894:52;3981:9;3968:23;4000:28;4022:5;4000:28;:::i;4063:388::-;4131:6;4139;4192:2;4180:9;4171:7;4167:23;4163:32;4160:52;;;4208:1;4205;4198:12;4160:52;4247:9;4234:23;4266:31;4291:5;4266:31;:::i;:::-;4316:5;-1:-1:-1;4373:2:1;4358:18;;4345:32;4386:33;4345:32;4386:33;:::i;4456:380::-;4535:1;4531:12;;;;4578;;;4599:61;;4653:4;4645:6;4641:17;4631:27;;4599:61;4706:2;4698:6;4695:14;4675:18;4672:38;4669:161;;4752:10;4747:3;4743:20;4740:1;4733:31;4787:4;4784:1;4777:15;4815:4;4812:1;4805:15;4669:161;;4456:380;;;:::o;5250:127::-;5311:10;5306:3;5302:20;5299:1;5292:31;5342:4;5339:1;5332:15;5366:4;5363:1;5356:15;5382:125;5447:9;;;5468:10;;;5465:36;;;5481:18;;:::i;5512:168::-;5585:9;;;5616;;5633:15;;;5627:22;;5613:37;5603:71;;5654:18;;:::i;5685:217::-;5725:1;5751;5741:132;;5795:10;5790:3;5786:20;5783:1;5776:31;5830:4;5827:1;5820:15;5858:4;5855:1;5848:15;5741:132;-1:-1:-1;5887:9:1;;5685:217::o;6312:422::-;6401:1;6444:5;6401:1;6458:270;6479:7;6469:8;6466:21;6458:270;;;6538:4;6534:1;6530:6;6526:17;6520:4;6517:27;6514:53;;;6547:18;;:::i;:::-;6597:7;6587:8;6583:22;6580:55;;;6617:16;;;;6580:55;6696:22;;;;6656:15;;;;6458:270;;;6462:3;6312:422;;;;;:::o;6739:806::-;6788:5;6818:8;6808:80;;-1:-1:-1;6859:1:1;6873:5;;6808:80;6907:4;6897:76;;-1:-1:-1;6944:1:1;6958:5;;6897:76;6989:4;7007:1;7002:59;;;;7075:1;7070:130;;;;6982:218;;7002:59;7032:1;7023:10;;7046:5;;;7070:130;7107:3;7097:8;7094:17;7091:43;;;7114:18;;:::i;:::-;-1:-1:-1;;7170:1:1;7156:16;;7185:5;;6982:218;;7284:2;7274:8;7271:16;7265:3;7259:4;7256:13;7252:36;7246:2;7236:8;7233:16;7228:2;7222:4;7219:12;7215:35;7212:77;7209:159;;;-1:-1:-1;7321:19:1;;;7353:5;;7209:159;7400:34;7425:8;7419:4;7400:34;:::i;:::-;7470:6;7466:1;7462:6;7458:19;7449:7;7446:32;7443:58;;;7481:18;;:::i;:::-;7519:20;;6739:806;-1:-1:-1;;;6739:806:1:o;7550:140::-;7608:5;7637:47;7678:4;7668:8;7664:19;7658:4;7637:47;:::i;10132:251::-;10202:6;10255:2;10243:9;10234:7;10230:23;10226:32;10223:52;;;10271:1;10268;10261:12;10223:52;10303:9;10297:16;10322:31;10347:5;10322:31;:::i;11309:306::-;11397:6;11405;11413;11466:2;11454:9;11445:7;11441:23;11437:32;11434:52;;;11482:1;11479;11472:12;11434:52;11511:9;11505:16;11495:26;;11561:2;11550:9;11546:18;11540:25;11530:35;;11605:2;11594:9;11590:18;11584:25;11574:35;;11309:306;;;;;:::o;11899:245::-;11966:6;12019:2;12007:9;11998:7;11994:23;11990:32;11987:52;;;12035:1;12032;12025:12;11987:52;12067:9;12061:16;12086:28;12108:5;12086:28;:::i;14014:401::-;14216:2;14198:21;;;14255:2;14235:18;;;14228:30;14294:34;14289:2;14274:18;;14267:62;-1:-1:-1;;;14360:2:1;14345:18;;14338:35;14405:3;14390:19;;14014:401::o;14420:399::-;14622:2;14604:21;;;14661:2;14641:18;;;14634:30;14700:34;14695:2;14680:18;;14673:62;-1:-1:-1;;;14766:2:1;14751:18;;14744:33;14809:3;14794:19;;14420:399::o;16838:135::-;16877:3;16898:17;;;16895:43;;16918:18;;:::i;:::-;-1:-1:-1;16965:1:1;16954:13;;16838:135::o;16978:128::-;17045:9;;;17066:11;;;17063:37;;;17080:18;;:::i;17860:127::-;17921:10;17916:3;17912:20;17909:1;17902:31;17952:4;17949:1;17942:15;17976:4;17973:1;17966:15;17992:980;18254:4;18302:3;18291:9;18287:19;18333:6;18322:9;18315:25;18359:2;18397:6;18392:2;18381:9;18377:18;18370:34;18440:3;18435:2;18424:9;18420:18;18413:31;18464:6;18499;18493:13;18530:6;18522;18515:22;18568:3;18557:9;18553:19;18546:26;;18607:2;18599:6;18595:15;18581:29;;18628:1;18638:195;18652:6;18649:1;18646:13;18638:195;;;18717:13;;-1:-1:-1;;;;;18713:39:1;18701:52;;18808:15;;;;18773:12;;;;18749:1;18667:9;18638:195;;;-1:-1:-1;;;;;;;18889:32:1;;;;18884:2;18869:18;;18862:60;-1:-1:-1;;;18953:3:1;18938:19;18931:35;18850:3;17992:980;-1:-1:-1;;;17992:980:1:o
Swarm Source
ipfs://741d411b56e17fcbd4f42818c3cfd50c45627be54ce362a3178e3227915d6d0d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.