ERC-20
Overview
Max Total Supply
1,000,000,000 GruxFi
Holders
6
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
997,354,801.570808757319066817 GruxFiValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GruxFi
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT /** TG: https://T.me/GruxFi WEB: https://Grux.finance/ X: https://Twitter.com/GruxFi **/ pragma solidity ^0.8.17; import "./IERC20.sol"; import "./SafeMath.sol"; import "./Address.sol"; import "./Ownable.sol"; import "./UniswapInterfaces.sol"; interface ILiquiLendHub { function totalSupply() external view returns (uint256); } contract GruxFi is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromLimit; uint256 private _tTotal = 1000000000 * 10**18; address payable public _marketingAddress = payable(address(0x2F31eaa072BE055EA9D29b51117D6b23aA937a95)); string private _name = "GruxFi"; string private _symbol = "GruxFi"; uint8 private _decimals = 18; ILiquiLendHub public LiquiLendHub; struct BuyFee { uint8 liquidity; uint8 marketing; } struct SellFee { uint8 liquidity; uint8 marketing; } BuyFee public buyFee; SellFee public sellFee; uint8 private _liquidityFee; uint8 private _marketingFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = _tTotal.div(1000).mul(20); //2% uint256 private numTokensSellToAddToLiquidity = _tTotal.div(1000).mul(2); //2% uint256 public _maxWalletSize = _tTotal.div(1000).mul(20); // 2% event botAddedToBlacklist(address account); event botRemovedFromBlacklist(address account); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } uint256 public deadBlocks = 1; uint256 launchedAt = 0; bool tradingOpen = true; mapping (address => uint256) _lastTrade; constructor() { _rOwned[_msgSender()] = _tTotal; buyFee.liquidity = 1; buyFee.marketing = 2; sellFee.liquidity = 1; sellFee.marketing = 2; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // exclude owner, and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingAddress] = true; _isExcludedFromLimit[_marketingAddress] = true; _isExcludedFromLimit[owner()] = true; _isExcludedFromLimit[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _rOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function excludeFromLimit(address account) public onlyOwner { _isExcludedFromLimit[account] = true; } function setNumTokensSellToAddToLiquidity(uint256 numTokens) external onlyOwner { numTokensSellToAddToLiquidity = numTokens; } function removeLimits() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swapping receive() external payable {} function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256 ) { uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tWallet = calculateMarketingFee(tAmount); uint256 tTransferAmount = tAmount.sub(tLiquidity).sub(tWallet); return (tTransferAmount, tLiquidity, tWallet); } function _takeLiquidity(uint256 tLiquidity) private { _rOwned[address(this)] = _rOwned[address(this)].add(tLiquidity); } function _takeWalletFee(uint256 tWallet) private { _rOwned[address(this)] = _rOwned[address(this)].add(tWallet); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**2); } function calculateMarketingFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingFee).div(10**2); } function removeAllFee() public { _liquidityFee = 0; _marketingFee = 0; } function setBuy() private { _liquidityFee = buyFee.liquidity; _marketingFee = buyFee.marketing; } function setSell() private { _liquidityFee = sellFee.liquidity; _marketingFee = sellFee.marketing; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function isExcludedFromLimit(address account) public view returns (bool) { return _isExcludedFromLimit[account]; } function _approve( address owner, address spender, uint256 amount ) private { 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 _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if ( from != owner() && to != owner() ) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } if (takeFee) { if (!_isExcludedFromLimit[from] && !_isExcludedFromLimit[to]) { require( amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount." ); if (to != uniswapV2Pair) { require( amount + balanceOf(to) <= _maxWalletSize, "Recipient exceeds max wallet size." ); } } } //transfer amount, it will take liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 tokens) private lockTheSwap { // Split the contract balance into halves uint256 denominator = (buyFee.liquidity + sellFee.liquidity + buyFee.marketing + sellFee.marketing) * 2; uint256 tokensToAddLiquidityWith = (tokens * (buyFee.liquidity + sellFee.liquidity)) / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForEth(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity)); uint256 ethToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity); if (ethToAddLiquidityWith > 0) { // Add liquidity to uniswap addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } // Send ETH to marketing uint256 marketingAmt = unitBalance * 2 * (buyFee.marketing + sellFee.marketing); if (marketingAmt > 0) { payable(_marketingAddress).transfer(marketingAmt); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function openTrading(bool _status,uint256 _deadBlocks) external onlyOwner() { tradingOpen = _status; if(tradingOpen && launchedAt == 0){ launchedAt = block.number; deadBlocks = _deadBlocks; } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (takeFee) { removeAllFee(); if (sender == uniswapV2Pair) { setBuy(); } if (recipient == uniswapV2Pair) { setSell(); } } _transferStandard(sender, recipient, amount); removeAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 tTransferAmount, uint256 tLiquidity, uint256 tWallet ) = _getTValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(tAmount); _rOwned[recipient] = _rOwned[recipient].add(tTransferAmount); _takeLiquidity(tLiquidity); _takeWalletFee(tWallet); emit Transfer(sender, recipient, tTransferAmount); } function setLiquiLendHub(address _LiquiLendHubAddress) external onlyOwner { LiquiLendHub = ILiquiLendHub(_LiquiLendHubAddress); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "./Context.sol"; contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface 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; } interface IUniswapV2Router01 { 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 removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"LiquiLendHub","outputs":[{"internalType":"contract ILiquiLendHub","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","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":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_LiquiLendHubAddress","type":"address"}],"name":"setLiquiLendHub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6b033b2e3c9fd0803ce80000006006908155600780546001600160a01b031916732f31eaa072be055ea9d29b51117d6b23aa937a9517905561010060405260c09081526547727578466960d01b60e0526008906200005e908262000645565b5060408051808201909152600681526547727578466960d01b60208201526009906200008b908262000645565b50600a805460ff19166012179055600d805463ff00000019166301000000179055600654620000e890601490620000d4906103e862000b6962000483602090811b91909117901c565b620004d660201b62000bb21790919060201c565b600e556200010f6002620000d46103e86006546200048360201b62000b691790919060201c565b600f55620001366014620000d46103e86006546200048360201b62000b691790919060201c565b6010556001601181905560006012556013805460ff191690911790553480156200015f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255600b805461020161ffff199182168117909255600c80549091169091179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000711565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000711565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000335919062000711565b6001600160a01b0390811660a0528116608052600160046000620003616000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600484528281208054861660019081179091556007805484168352848320805488168317905554909216815260059384905291822080549094168117909355620003e46000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260059092529020805490911660011790556200042c3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200047491815260200190565b60405180910390a350620007d5565b6000620004cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056460201b60201c565b90505b92915050565b600082600003620004ea57506000620004d0565b6000620004f883856200073c565b90508262000507858362000762565b14620004cd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b60008183620005885760405162461bcd60e51b81526004016200055b919062000785565b50600062000597848662000762565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005cb57607f821691505b602082108103620005ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200064057600081815260208120601f850160051c810160208610156200061b5750805b601f850160051c820191505b818110156200063c5782815560010162000627565b5050505b505050565b81516001600160401b03811115620006615762000661620005a0565b6200067981620006728454620005b6565b84620005f2565b602080601f831160018114620006b15760008415620006985750858301515b600019600386901b1c1916600185901b1785556200063c565b600085815260208120601f198616915b82811015620006e257888601518255948401946001909101908401620006c1565b5085821015620007015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200072457600080fd5b81516001600160a01b0381168114620004cd57600080fd5b8082028115828204841417620004d057634e487b7160e01b600052601160045260246000fd5b6000826200078057634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620007b45785810183015185820160400152820162000796565b506000604082860101526040601f19601f8301168501019250505092915050565b60805160a051611d3e6200083a600039600081816103ec01528181610f47015281816110a1015281816113a4015261140a015260008181610282015281816114e60152818161159f015281816115db0152818161164d01526116a90152611d3e6000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063c49b9a8011610095578063e46eaa3311610064578063e46eaa331461062b578063f0f165af1461064b578063f2fde38b1461066b578063fabb0b4f1461068b57600080fd5b8063c49b9a801461056c578063caac79341461058c578063d94160e0146105ac578063dd62ed3e146105e557600080fd5b80638f9a55c0116100d15780638f9a55c0146104fc57806395d89b41146105125780639d8d3d0214610527578063a9059cbb1461054c57600080fd5b8063715018a61461049e578063751039fc146104b35780637d1db4a5146104c85780638da5cb5b146104de57600080fd5b8063301370af1161017a57806349bd5a5e1161014957806349bd5a5e146103da5780634a74bb021461040e5780635342acb41461042f57806370a082311461046857600080fd5b8063301370af14610358578063313ce56714610375578063437823ec1461039757806347062402146103b757600080fd5b806318160ddd116101b657806318160ddd146102bc57806323b872dd146102db5780632b14ca56146102fb5780632d4103d61461033857600080fd5b806306fdde03146101f3578063095ea7b31461021e5780630bd3a7f91461024e5780631694505e1461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086106a1565b6040516102159190611960565b60405180910390f35b34801561022a57600080fd5b5061023e6102393660046119c6565b610733565b6040519015158152602001610215565b34801561025a57600080fd5b5061026e6102693660046119f2565b61074a565b005b34801561027c57600080fd5b506102a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610215565b3480156102c857600080fd5b506006545b604051908152602001610215565b3480156102e757600080fd5b5061023e6102f6366004611a0f565b6107a1565b34801561030757600080fd5b50600c5461031e9060ff8082169161010090041682565b6040805160ff938416815292909116602083015201610215565b34801561034457600080fd5b5061026e610353366004611a65565b61080a565b34801561036457600080fd5b5061026e600d805461ffff19169055565b34801561038157600080fd5b50600a5460405160ff9091168152602001610215565b3480156103a357600080fd5b5061026e6103b23660046119f2565b610867565b3480156103c357600080fd5b50600b5461031e9060ff8082169161010090041682565b3480156103e657600080fd5b506102a47f000000000000000000000000000000000000000000000000000000000000000081565b34801561041a57600080fd5b50600d5461023e906301000000900460ff1681565b34801561043b57600080fd5b5061023e61044a3660046119f2565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561047457600080fd5b506102cd6104833660046119f2565b6001600160a01b031660009081526002602052604090205490565b3480156104aa57600080fd5b5061026e6108b5565b3480156104bf57600080fd5b5061026e610929565b3480156104d457600080fd5b506102cd600e5481565b3480156104ea57600080fd5b506000546001600160a01b03166102a4565b34801561050857600080fd5b506102cd60105481565b34801561051e57600080fd5b50610208610960565b34801561053357600080fd5b50600a546102a49061010090046001600160a01b031681565b34801561055857600080fd5b5061023e6105673660046119c6565b61096f565b34801561057857600080fd5b5061026e610587366004611a81565b61097c565b34801561059857600080fd5b506007546102a4906001600160a01b031681565b3480156105b857600080fd5b5061023e6105c73660046119f2565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f157600080fd5b506102cd610600366004611a9c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561063757600080fd5b5061026e6106463660046119f2565b6109fe565b34801561065757600080fd5b5061026e610666366004611ad5565b610a50565b34801561067757600080fd5b5061026e6106863660046119f2565b610a7f565b34801561069757600080fd5b506102cd60115481565b6060600880546106b090611aee565b80601f01602080910402602001604051908101604052809291908181526020018280546106dc90611aee565b80156107295780601f106106fe57610100808354040283529160200191610729565b820191906000526020600020905b81548152906001019060200180831161070c57829003601f168201915b5050505050905090565b6000610740338484610c34565b5060015b92915050565b6000546001600160a01b0316331461077d5760405162461bcd60e51b815260040161077490611b28565b60405180910390fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b60006107ae848484610d58565b61080084336107fb85604051806060016040528060288152602001611ce1602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061116b565b610c34565b5060019392505050565b6000546001600160a01b031633146108345760405162461bcd60e51b815260040161077490611b28565b6013805460ff191683151590811790915560ff1680156108545750601254155b15610863574360125560118190555b5050565b6000546001600160a01b031633146108915760405162461bcd60e51b815260040161077490611b28565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146108df5760405162461bcd60e51b815260040161077490611b28565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109535760405162461bcd60e51b815260040161077490611b28565b600654600e819055601055565b6060600980546106b090611aee565b6000610740338484610d58565b6000546001600160a01b031633146109a65760405162461bcd60e51b815260040161077490611b28565b600d805482151563010000000263ff000000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109f390831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610a285760405162461bcd60e51b815260040161077490611b28565b600a80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161077490611b28565b600f55565b6000546001600160a01b03163314610aa95760405162461bcd60e51b815260040161077490611b28565b6001600160a01b038116610b0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610774565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111a5565b9392505050565b600082600003610bc457506000610744565b6000610bd08385611b73565b905082610bdd8583611b8a565b14610bab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610774565b6001600160a01b038316610c965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610774565b6001600160a01b038216610cf75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610774565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dbc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610774565b6001600160a01b038216610e1e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610774565b60008111610e805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610774565b6000546001600160a01b03848116911614801590610eac57506000546001600160a01b03838116911614155b15610f035760135460ff16610f035760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610774565b30600090815260026020526040902054600e548110610f215750600e545b600f5481108015908190610f3e5750600d5462010000900460ff16155b8015610f7c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015610f915750600d546301000000900460ff165b15610fa457600f549150610fa4826111d3565b6001600160a01b03851660009081526004602052604090205460019060ff1680610fe657506001600160a01b03851660009081526004602052604090205460ff165b15610fef575060005b8015611157576001600160a01b03861660009081526005602052604090205460ff1615801561103757506001600160a01b03851660009081526005602052604090205460ff16155b1561115757600e5484111561109f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610774565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614611157576010546001600160a01b0386166000908152600260205260409020546110fe9086611bac565b11156111575760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b6064820152608401610774565b6111638686868461138c565b505050505050565b6000818484111561118f5760405162461bcd60e51b81526004016107749190611960565b50600061119c8486611bbf565b95945050505050565b600081836111c65760405162461bcd60e51b81526004016107749190611960565b50600061119c8486611b8a565b600d805462ff0000191662010000179055600c54600b5460009161010080820460ff9081169391820481169261120d929082169116611bd2565b6112179190611bd2565b6112219190611bd2565b61122c906002611beb565b600c54600b5460ff9283169350600092849261124c929082169116611bd2565b6112599060ff1685611b73565b6112639190611b8a565b905060006112718285611bbf565b90504761127d8261148f565b60006112898247611bbf565b600c54600b549192506000916112a59160ff9081169116611bd2565b6112b29060ff1687611bbf565b6112bc9083611b8a565b600c54600b549192506000916112d89160ff9081169116611bd2565b6112e59060ff1683611b73565b905080156112f7576112f78682611647565b600c54600b546000916113199160ff6101009283900481169290910416611bd2565b60ff16611327846002611b73565b6113319190611b73565b90508015611375576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611373573d6000803e3d6000fd5b505b5050600d805462ff00001916905550505050505050565b801561146e576113a2600d805461ffff19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361140857611408600b54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361146e5761146e600c54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b611479848484611727565b611489600d805461ffff19169055565b50505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114c4576114c4611c0e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190611c24565b8160018151811061157957611579611c0e565b60200260200101906001600160a01b031690816001600160a01b0316815250506115c4307f000000000000000000000000000000000000000000000000000000000000000084610c34565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611619908590600090869030904290600401611c41565b600060405180830381600087803b15801561163357600080fd5b505af1158015611163573d6000803e3d6000fd5b611672307f000000000000000000000000000000000000000000000000000000000000000084610c34565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156116fb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117209190611cb2565b5050505050565b60008060006117358461180f565b6001600160a01b03891660009081526002602052604090205492955090935091506117609085611851565b6001600160a01b03808816600090815260026020526040808220939093559087168152205461178f9084611893565b6001600160a01b0386166000908152600260205260409020556117b1826118f2565b6117ba816118f2565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117ff91815260200190565b60405180910390a3505050505050565b60008060008061181e8561191f565b9050600061182b86611940565b905060006118438261183d8986611851565b90611851565b979296509094509092505050565b6000610bab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061116b565b6000806118a08385611bac565b905083811015610bab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610774565b3060009081526002602052604090205461190c9082611893565b3060009081526002602052604090205550565b600d546000906107449060649061193a90859060ff16610bb2565b90610b69565b600d546000906107449060649061193a908590610100900460ff16610bb2565b600060208083528351808285015260005b8181101561198d57858101830151858201604001528201611971565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119c357600080fd5b50565b600080604083850312156119d957600080fd5b82356119e4816119ae565b946020939093013593505050565b600060208284031215611a0457600080fd5b8135610bab816119ae565b600080600060608486031215611a2457600080fd5b8335611a2f816119ae565b92506020840135611a3f816119ae565b929592945050506040919091013590565b80358015158114611a6057600080fd5b919050565b60008060408385031215611a7857600080fd5b6119e483611a50565b600060208284031215611a9357600080fd5b610bab82611a50565b60008060408385031215611aaf57600080fd5b8235611aba816119ae565b91506020830135611aca816119ae565b809150509250929050565b600060208284031215611ae757600080fd5b5035919050565b600181811c90821680611b0257607f821691505b602082108103611b2257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761074457610744611b5d565b600082611ba757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074457610744611b5d565b8181038181111561074457610744611b5d565b60ff818116838216019081111561074457610744611b5d565b60ff8181168382160290811690818114611c0757611c07611b5d565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c3657600080fd5b8151610bab816119ae565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c915784516001600160a01b031683529383019391830191600101611c6c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cc757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c800daed8b7db60bfb00a5c1f780a52ca7910dcfa6eef848d6d638fc434db94964736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063715018a611610102578063c49b9a8011610095578063e46eaa3311610064578063e46eaa331461062b578063f0f165af1461064b578063f2fde38b1461066b578063fabb0b4f1461068b57600080fd5b8063c49b9a801461056c578063caac79341461058c578063d94160e0146105ac578063dd62ed3e146105e557600080fd5b80638f9a55c0116100d15780638f9a55c0146104fc57806395d89b41146105125780639d8d3d0214610527578063a9059cbb1461054c57600080fd5b8063715018a61461049e578063751039fc146104b35780637d1db4a5146104c85780638da5cb5b146104de57600080fd5b8063301370af1161017a57806349bd5a5e1161014957806349bd5a5e146103da5780634a74bb021461040e5780635342acb41461042f57806370a082311461046857600080fd5b8063301370af14610358578063313ce56714610375578063437823ec1461039757806347062402146103b757600080fd5b806318160ddd116101b657806318160ddd146102bc57806323b872dd146102db5780632b14ca56146102fb5780632d4103d61461033857600080fd5b806306fdde03146101f3578063095ea7b31461021e5780630bd3a7f91461024e5780631694505e1461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086106a1565b6040516102159190611960565b60405180910390f35b34801561022a57600080fd5b5061023e6102393660046119c6565b610733565b6040519015158152602001610215565b34801561025a57600080fd5b5061026e6102693660046119f2565b61074a565b005b34801561027c57600080fd5b506102a47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610215565b3480156102c857600080fd5b506006545b604051908152602001610215565b3480156102e757600080fd5b5061023e6102f6366004611a0f565b6107a1565b34801561030757600080fd5b50600c5461031e9060ff8082169161010090041682565b6040805160ff938416815292909116602083015201610215565b34801561034457600080fd5b5061026e610353366004611a65565b61080a565b34801561036457600080fd5b5061026e600d805461ffff19169055565b34801561038157600080fd5b50600a5460405160ff9091168152602001610215565b3480156103a357600080fd5b5061026e6103b23660046119f2565b610867565b3480156103c357600080fd5b50600b5461031e9060ff8082169161010090041682565b3480156103e657600080fd5b506102a47f000000000000000000000000934b14a6ac13ea5ea0b6f3139815aba0ac43010a81565b34801561041a57600080fd5b50600d5461023e906301000000900460ff1681565b34801561043b57600080fd5b5061023e61044a3660046119f2565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561047457600080fd5b506102cd6104833660046119f2565b6001600160a01b031660009081526002602052604090205490565b3480156104aa57600080fd5b5061026e6108b5565b3480156104bf57600080fd5b5061026e610929565b3480156104d457600080fd5b506102cd600e5481565b3480156104ea57600080fd5b506000546001600160a01b03166102a4565b34801561050857600080fd5b506102cd60105481565b34801561051e57600080fd5b50610208610960565b34801561053357600080fd5b50600a546102a49061010090046001600160a01b031681565b34801561055857600080fd5b5061023e6105673660046119c6565b61096f565b34801561057857600080fd5b5061026e610587366004611a81565b61097c565b34801561059857600080fd5b506007546102a4906001600160a01b031681565b3480156105b857600080fd5b5061023e6105c73660046119f2565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f157600080fd5b506102cd610600366004611a9c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561063757600080fd5b5061026e6106463660046119f2565b6109fe565b34801561065757600080fd5b5061026e610666366004611ad5565b610a50565b34801561067757600080fd5b5061026e6106863660046119f2565b610a7f565b34801561069757600080fd5b506102cd60115481565b6060600880546106b090611aee565b80601f01602080910402602001604051908101604052809291908181526020018280546106dc90611aee565b80156107295780601f106106fe57610100808354040283529160200191610729565b820191906000526020600020905b81548152906001019060200180831161070c57829003601f168201915b5050505050905090565b6000610740338484610c34565b5060015b92915050565b6000546001600160a01b0316331461077d5760405162461bcd60e51b815260040161077490611b28565b60405180910390fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b60006107ae848484610d58565b61080084336107fb85604051806060016040528060288152602001611ce1602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061116b565b610c34565b5060019392505050565b6000546001600160a01b031633146108345760405162461bcd60e51b815260040161077490611b28565b6013805460ff191683151590811790915560ff1680156108545750601254155b15610863574360125560118190555b5050565b6000546001600160a01b031633146108915760405162461bcd60e51b815260040161077490611b28565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146108df5760405162461bcd60e51b815260040161077490611b28565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109535760405162461bcd60e51b815260040161077490611b28565b600654600e819055601055565b6060600980546106b090611aee565b6000610740338484610d58565b6000546001600160a01b031633146109a65760405162461bcd60e51b815260040161077490611b28565b600d805482151563010000000263ff000000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109f390831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610a285760405162461bcd60e51b815260040161077490611b28565b600a80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161077490611b28565b600f55565b6000546001600160a01b03163314610aa95760405162461bcd60e51b815260040161077490611b28565b6001600160a01b038116610b0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610774565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111a5565b9392505050565b600082600003610bc457506000610744565b6000610bd08385611b73565b905082610bdd8583611b8a565b14610bab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610774565b6001600160a01b038316610c965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610774565b6001600160a01b038216610cf75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610774565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dbc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610774565b6001600160a01b038216610e1e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610774565b60008111610e805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610774565b6000546001600160a01b03848116911614801590610eac57506000546001600160a01b03838116911614155b15610f035760135460ff16610f035760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610774565b30600090815260026020526040902054600e548110610f215750600e545b600f5481108015908190610f3e5750600d5462010000900460ff16155b8015610f7c57507f000000000000000000000000934b14a6ac13ea5ea0b6f3139815aba0ac43010a6001600160a01b0316856001600160a01b031614155b8015610f915750600d546301000000900460ff165b15610fa457600f549150610fa4826111d3565b6001600160a01b03851660009081526004602052604090205460019060ff1680610fe657506001600160a01b03851660009081526004602052604090205460ff165b15610fef575060005b8015611157576001600160a01b03861660009081526005602052604090205460ff1615801561103757506001600160a01b03851660009081526005602052604090205460ff16155b1561115757600e5484111561109f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610774565b7f000000000000000000000000934b14a6ac13ea5ea0b6f3139815aba0ac43010a6001600160a01b0316856001600160a01b031614611157576010546001600160a01b0386166000908152600260205260409020546110fe9086611bac565b11156111575760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b6064820152608401610774565b6111638686868461138c565b505050505050565b6000818484111561118f5760405162461bcd60e51b81526004016107749190611960565b50600061119c8486611bbf565b95945050505050565b600081836111c65760405162461bcd60e51b81526004016107749190611960565b50600061119c8486611b8a565b600d805462ff0000191662010000179055600c54600b5460009161010080820460ff9081169391820481169261120d929082169116611bd2565b6112179190611bd2565b6112219190611bd2565b61122c906002611beb565b600c54600b5460ff9283169350600092849261124c929082169116611bd2565b6112599060ff1685611b73565b6112639190611b8a565b905060006112718285611bbf565b90504761127d8261148f565b60006112898247611bbf565b600c54600b549192506000916112a59160ff9081169116611bd2565b6112b29060ff1687611bbf565b6112bc9083611b8a565b600c54600b549192506000916112d89160ff9081169116611bd2565b6112e59060ff1683611b73565b905080156112f7576112f78682611647565b600c54600b546000916113199160ff6101009283900481169290910416611bd2565b60ff16611327846002611b73565b6113319190611b73565b90508015611375576007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611373573d6000803e3d6000fd5b505b5050600d805462ff00001916905550505050505050565b801561146e576113a2600d805461ffff19169055565b7f000000000000000000000000934b14a6ac13ea5ea0b6f3139815aba0ac43010a6001600160a01b0316846001600160a01b03160361140857611408600b54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b7f000000000000000000000000934b14a6ac13ea5ea0b6f3139815aba0ac43010a6001600160a01b0316836001600160a01b03160361146e5761146e600c54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b611479848484611727565b611489600d805461ffff19169055565b50505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114c4576114c4611c0e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190611c24565b8160018151811061157957611579611c0e565b60200260200101906001600160a01b031690816001600160a01b0316815250506115c4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610c34565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611619908590600090869030904290600401611c41565b600060405180830381600087803b15801561163357600080fd5b505af1158015611163573d6000803e3d6000fd5b611672307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610c34565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156116fb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117209190611cb2565b5050505050565b60008060006117358461180f565b6001600160a01b03891660009081526002602052604090205492955090935091506117609085611851565b6001600160a01b03808816600090815260026020526040808220939093559087168152205461178f9084611893565b6001600160a01b0386166000908152600260205260409020556117b1826118f2565b6117ba816118f2565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117ff91815260200190565b60405180910390a3505050505050565b60008060008061181e8561191f565b9050600061182b86611940565b905060006118438261183d8986611851565b90611851565b979296509094509092505050565b6000610bab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061116b565b6000806118a08385611bac565b905083811015610bab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610774565b3060009081526002602052604090205461190c9082611893565b3060009081526002602052604090205550565b600d546000906107449060649061193a90859060ff16610bb2565b90610b69565b600d546000906107449060649061193a908590610100900460ff16610bb2565b600060208083528351808285015260005b8181101561198d57858101830151858201604001528201611971565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119c357600080fd5b50565b600080604083850312156119d957600080fd5b82356119e4816119ae565b946020939093013593505050565b600060208284031215611a0457600080fd5b8135610bab816119ae565b600080600060608486031215611a2457600080fd5b8335611a2f816119ae565b92506020840135611a3f816119ae565b929592945050506040919091013590565b80358015158114611a6057600080fd5b919050565b60008060408385031215611a7857600080fd5b6119e483611a50565b600060208284031215611a9357600080fd5b610bab82611a50565b60008060408385031215611aaf57600080fd5b8235611aba816119ae565b91506020830135611aca816119ae565b809150509250929050565b600060208284031215611ae757600080fd5b5035919050565b600181811c90821680611b0257607f821691505b602082108103611b2257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761074457610744611b5d565b600082611ba757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074457610744611b5d565b8181038181111561074457610744611b5d565b60ff818116838216019081111561074457610744611b5d565b60ff8181168382160290811690818114611c0757611c07611b5d565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c3657600080fd5b8151610bab816119ae565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c915784516001600160a01b031683529383019391830191600101611c6c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cc757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c800daed8b7db60bfb00a5c1f780a52ca7910dcfa6eef848d6d638fc434db94964736f6c63430008110033
Deployed Bytecode Sourcemap
389:13664:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4321:193;;;;;;;;;;-1:-1:-1;4321:193:2;;;;;:::i;:::-;;:::i;:::-;;;1188:14:7;;1181:22;1163:41;;1151:2;1136:18;4321:193:2;1023:187:7;5095:115:2;;;;;;;;;;-1:-1:-1;5095:115:2;;;;;:::i;:::-;;:::i;:::-;;1371:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:7;;;1640:51;;1628:2;1613:18;1371:51:2;1467:230:7;3694:95:2;;;;;;;;;;-1:-1:-1;3774:7:2;;3694:95;;;1848:25:7;;;1836:2;1821:18;3694:95:2;1702:177:7;4522:446:2;;;;;;;;;;-1:-1:-1;4522:446:2;;;;;:::i;:::-;;:::i;1270:22::-;;;;;;;;;;-1:-1:-1;1270:22:2;;;;;;;;;;;;;;;;;;;2541:4:7;2529:17;;;2511:36;;2583:17;;;;2578:2;2563:18;;2556:45;2484:18;1270:22:2;2345:262:7;12024:251:2;;;;;;;;;;-1:-1:-1;12024:251:2;;;;;:::i;:::-;;:::i;6849:102::-;;;;;;;;;;;;6891:13;:17;;-1:-1:-1;;6919:17:2;;;6849:102;3603:83;;;;;;;;;;-1:-1:-1;3669:9:2;;3603:83;;3669:9;;;;3172:36:7;;3160:2;3145:18;3603:83:2;3030:184:7;4976:111:2;;;;;;;;;;-1:-1:-1;4976:111:2;;;;;:::i;:::-;;:::i;1243:20::-;;;;;;;;;;-1:-1:-1;1243:20:2;;;;;;;;;;;;;;;1429:38;;;;;;;;;;;;;;;1504:40;;;;;;;;;;-1:-1:-1;1504:40:2;;;;;;;;;;;7234:124;;;;;;;;;;-1:-1:-1;7234:124:2;;;;;:::i;:::-;-1:-1:-1;;;;;7323:27:2;7299:4;7323:27;;;:18;:27;;;;;;;;;7234:124;3797:117;;;;;;;;;;-1:-1:-1;3797:117:2;;;;;:::i;:::-;-1:-1:-1;;;;;3890:16:2;3863:7;3890:16;;;:7;:16;;;;;;;3797:117;1281:148:4;;;;;;;;;;;;;:::i;5366:120:2:-;;;;;;;;;;;;;:::i;1553:55::-;;;;;;;;;;;;;;;;639:79:4;;;;;;;;;;-1:-1:-1;677:7:4;704:6;-1:-1:-1;;;;;704:6:4;639:79;;1704:57:2;;;;;;;;;;;;;;;;3508:87;;;;;;;;;;;;;:::i;1036:33::-;;;;;;;;;;-1:-1:-1;1036:33:2;;;;;;;-1:-1:-1;;;;;1036:33:2;;;3922:199;;;;;;;;;;-1:-1:-1;3922:199:2;;;;;:::i;:::-;;:::i;5494:171::-;;;;;;;;;;-1:-1:-1;5494:171:2;;;;;:::i;:::-;;:::i;809:103::-;;;;;;;;;;-1:-1:-1;809:103:2;;;;-1:-1:-1;;;;;809:103:2;;;7366:128;;;;;;;;;;-1:-1:-1;7366:128:2;;;;;:::i;:::-;-1:-1:-1;;;;;7457:29:2;7433:4;7457:29;;;:20;:29;;;;;;;;;7366:128;4129:184;;;;;;;;;;-1:-1:-1;4129:184:2;;;;;:::i;:::-;-1:-1:-1;;;;;4278:18:2;;;4246:7;4278:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4129:184;13907:143;;;;;;;;;;-1:-1:-1;13907:143:2;;;;;:::i;:::-;;:::i;5218:140::-;;;;;;;;;;-1:-1:-1;5218:140:2;;;;;:::i;:::-;;:::i;1584:281:4:-;;;;;;;;;;-1:-1:-1;1584:281:4;;;;;:::i;:::-;;:::i;2256:29:2:-;;;;;;;;;;;;;;;;3417:83;3454:13;3487:5;3480:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:83;:::o;4321:193::-;4423:4;4445:39;190:10:1;4468:7:2;4477:6;4445:8;:39::i;:::-;-1:-1:-1;4502:4:2;4321:193;;;;;:::o;5095:115::-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;5166:29:2::1;;::::0;;;:20:::1;:29;::::0;;;;:36;;-1:-1:-1;;5166:36:2::1;5198:4;5166:36;::::0;;5095:115::o;4522:446::-;4654:4;4671:36;4681:6;4689:9;4700:6;4671:9;:36::i;:::-;4718:220;4741:6;190:10:1;4789:138:2;4845:6;4789:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4789:19:2;;;;;;:11;:19;;;;;;;;190:10:1;4789:33:2;;;;;;;;;;:37;:138::i;:::-;4718:8;:220::i;:::-;-1:-1:-1;4956:4:2;4522:446;;;;;:::o;12024:251::-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;12111:11:2::1;:21:::0;;-1:-1:-1;;12111:21:2::1;::::0;::::1;;::::0;;::::1;::::0;;;::::1;12146:11:::0;:30;::::1;;;-1:-1:-1::0;12161:10:2::1;::::0;:15;12146:30:::1;12143:125;;;12205:12;12192:10;:25:::0;12232:10:::1;:24:::0;;;12143:125:::1;12024:251:::0;;:::o;4976:111::-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;5045:27:2::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;5045:34:2::1;5075:4;5045:34;::::0;;4976:111::o;1281:148:4:-;851:6;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;1388:1:::1;1372:6:::0;;1351:40:::1;::::0;-1:-1:-1;;;;;1372:6:4;;::::1;::::0;1351:40:::1;::::0;1388:1;;1351:40:::1;1419:1;1402:19:::0;;-1:-1:-1;;;;;;1402:19:4::1;::::0;;1281:148::o;5366:120:2:-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;5435:7:2::1;::::0;5420:12:::1;:22:::0;;;5454:14:::1;:24:::0;5366:120::o;3508:87::-;3547:13;3580:7;3573:14;;;;;:::i;3922:199::-;4027:4;4049:42;190:10:1;4073:9:2;4084:6;4049:9;:42::i;5494:171::-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;5571:21:2::1;:32:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;5571:32:2;;::::1;;::::0;;5619:38:::1;::::0;::::1;::::0;::::1;::::0;5595:8;1188:14:7;1181:22;1163:41;;1151:2;1136:18;;1023:187;5619:38:2::1;;;;;;;;5494:171:::0;:::o;13907:143::-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;13992:12:2::1;:50:::0;;-1:-1:-1;;;;;13992:50:2;;::::1;;;-1:-1:-1::0;;;;;;13992:50:2;;::::1;::::0;;;::::1;::::0;;13907:143::o;5218:140::-;851:6:4;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;5309:29:2::1;:41:::0;5218:140::o;1584:281:4:-;851:6;;-1:-1:-1;;;;;851:6:4;190:10:1;851:22:4;843:67;;;;-1:-1:-1;;;843:67:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;1687:22:4;::::1;1665:110;;;::::0;-1:-1:-1;;;1665:110:4;;5591:2:7;1665:110:4::1;::::0;::::1;5573:21:7::0;5630:2;5610:18;;;5603:30;5669:34;5649:18;;;5642:62;-1:-1:-1;;;5720:18:7;;;5713:36;5766:19;;1665:110:4::1;5389:402:7::0;1665:110:4::1;1812:6;::::0;;1791:38:::1;::::0;-1:-1:-1;;;;;1791:38:4;;::::1;::::0;1812:6;::::1;::::0;1791:38:::1;::::0;::::1;1840:6;:17:::0;;-1:-1:-1;;;;;;1840:17:4::1;-1:-1:-1::0;;;;;1840:17:4;;;::::1;::::0;;;::::1;::::0;;1584:281::o;2204:132:5:-;2262:7;2289:39;2293:1;2296;2289:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2282:46;2204:132;-1:-1:-1;;;2204:132:5:o;1709:252::-;1767:7;1793:1;1798;1793:6;1789:47;;-1:-1:-1;1823:1:5;1816:8;;1789:47;1848:9;1860:5;1864:1;1860;:5;:::i;:::-;1848:17;-1:-1:-1;1893:1:5;1884:5;1888:1;1848:17;1884:5;:::i;:::-;:10;1876:56;;;;-1:-1:-1;;;1876:56:5;;6525:2:7;1876:56:5;;;6507:21:7;6564:2;6544:18;;;6537:30;6603:34;6583:18;;;6576:62;-1:-1:-1;;;6654:18:7;;;6647:31;6695:19;;1876:56:5;6323:397:7;7502:371:2;-1:-1:-1;;;;;7629:19:2;;7621:68;;;;-1:-1:-1;;;7621:68:2;;6927:2:7;7621:68:2;;;6909:21:7;6966:2;6946:18;;;6939:30;7005:34;6985:18;;;6978:62;-1:-1:-1;;;7056:18:7;;;7049:34;7100:19;;7621:68:2;6725:400:7;7621:68:2;-1:-1:-1;;;;;7708:21:2;;7700:68;;;;-1:-1:-1;;;7700:68:2;;7332:2:7;7700:68:2;;;7314:21:7;7371:2;7351:18;;;7344:30;7410:34;7390:18;;;7383:62;-1:-1:-1;;;7461:18:7;;;7454:32;7503:19;;7700:68:2;7130:398:7;7700:68:2;-1:-1:-1;;;;;7781:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7833:32;;1848:25:7;;;7833:32:2;;1821:18:7;7833:32:2;;;;;;;7502:371;;;:::o;7881:2331::-;-1:-1:-1;;;;;8003:18:2;;7995:68;;;;-1:-1:-1;;;7995:68:2;;7735:2:7;7995:68:2;;;7717:21:7;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:7;;;7857:35;7909:19;;7995:68:2;7533:401:7;7995:68:2;-1:-1:-1;;;;;8082:16:2;;8074:64;;;;-1:-1:-1;;;8074:64:2;;8141:2:7;8074:64:2;;;8123:21:7;8180:2;8160:18;;;8153:30;8219:34;8199:18;;;8192:62;-1:-1:-1;;;8270:18:7;;;8263:33;8313:19;;8074:64:2;7939:399:7;8074:64:2;8166:1;8157:6;:10;8149:64;;;;-1:-1:-1;;;8149:64:2;;8545:2:7;8149:64:2;;;8527:21:7;8584:2;8564:18;;;8557:30;8623:34;8603:18;;;8596:62;-1:-1:-1;;;8674:18:7;;;8667:39;8723:19;;8149:64:2;8343:405:7;8149:64:2;677:7:4;704:6;-1:-1:-1;;;;;8239:15:2;;;704:6:4;;8239:15:2;;;;:32;;-1:-1:-1;677:7:4;704:6;-1:-1:-1;;;;;8258:13:2;;;704:6:4;;8258:13:2;;8239:32;8234:88;;;8282:11;;;;8274:48;;;;-1:-1:-1;;;8274:48:2;;8955:2:7;8274:48:2;;;8937:21:7;8994:2;8974:18;;;8967:30;9033:26;9013:18;;;9006:54;9077:18;;8274:48:2;8753:348:7;8274:48:2;8706:4;8657:28;3890:16;;;:7;:16;;;;;;8753:12;;8729:36;;8725:104;;-1:-1:-1;8805:12:2;;8725:104;8905:29;;8868:66;;;;;;;8963:53;;-1:-1:-1;9000:16:2;;;;;;;8999:17;8963:53;:91;;;;;9041:13;-1:-1:-1;;;;;9033:21:2;:4;-1:-1:-1;;;;;9033:21:2;;;8963:91;:129;;;;-1:-1:-1;9071:21:2;;;;;;;8963:129;8945:318;;;9142:29;;9119:52;;9215:36;9230:20;9215:14;:36::i;:::-;-1:-1:-1;;;;;9456:24:2;;9336:12;9456:24;;;:18;:24;;;;;;9351:4;;9456:24;;;:50;;-1:-1:-1;;;;;;9484:22:2;;;;;;:18;:22;;;;;;;;9456:50;9452:98;;;-1:-1:-1;9533:5:2;9452:98;9564:7;9560:536;;;-1:-1:-1;;;;;9593:26:2;;;;;;:20;:26;;;;;;;;9592:27;:56;;;;-1:-1:-1;;;;;;9624:24:2;;;;;;:20;:24;;;;;;;;9623:25;9592:56;9588:497;;;9709:12;;9699:6;:22;;9669:136;;;;-1:-1:-1;;;9669:136:2;;9308:2:7;9669:136:2;;;9290:21:7;9347:2;9327:18;;;9320:30;9386:34;9366:18;;;9359:62;-1:-1:-1;;;9437:18:7;;;9430:38;9485:19;;9669:136:2;9106:404:7;9669:136:2;9834:13;-1:-1:-1;;;;;9828:19:2;:2;-1:-1:-1;;;;;9828:19:2;;9824:228;;9932:14;;-1:-1:-1;;;;;3890:16:2;;3863:7;3890:16;;;:7;:16;;;;;;9906:22;;:6;:22;:::i;:::-;:40;;9872:160;;;;-1:-1:-1;;;9872:160:2;;9847:2:7;9872:160:2;;;9829:21:7;9886:2;9866:18;;;9859:30;9925:34;9905:18;;;9898:62;-1:-1:-1;;;9976:18:7;;;9969:32;10018:19;;9872:160:2;9645:398:7;9872:160:2;10163:41;10178:4;10184:2;10188:6;10196:7;10163:14;:41::i;:::-;7984:2228;;;7881:2331;;;:::o;1224:226:5:-;1344:7;1380:12;1372:6;;;;1364:29;;;;-1:-1:-1;;;1364:29:5;;;;;;;;:::i;:::-;-1:-1:-1;1404:9:5;1416:5;1420:1;1416;:5;:::i;:::-;1404:17;1224:226;-1:-1:-1;;;;;1224:226:5:o;2832:312::-;2952:7;2987:12;2980:5;2972:28;;;;-1:-1:-1;;;2972:28:5;;;;;;;;:::i;:::-;-1:-1:-1;3011:9:5;3023:5;3027:1;3023;:5;:::i;10220:1195:2:-;2170:16;:23;;-1:-1:-1;;2170:23:2;;;;;10423:7:::1;:17:::0;10404:6:::1;:16:::0;2170:23;;;10423:17;;::::1;2170:23:::0;10423:17;;::::1;::::0;10404:16;;::::1;::::0;::::1;::::0;10365:36:::1;::::0;10384:17;;::::1;::::0;10365:16:::1;:36;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;10364:81;::::0;10444:1:::1;10364:81;:::i;:::-;10521:7;:17:::0;10502:6:::1;:16:::0;10342:103:::1;::::0;;::::1;::::0;-1:-1:-1;10456:32:2::1;::::0;10342:103;;10502:36:::1;::::0;10521:17;;::::1;::::0;10502:16:::1;:36;:::i;:::-;10492:47;::::0;::::1;;:6:::0;:47:::1;:::i;:::-;10491:63;;;;:::i;:::-;10456:98:::0;-1:-1:-1;10565:14:2::1;10582:33;10456:98:::0;10582:6;:33:::1;:::i;:::-;10565:50:::0;-1:-1:-1;10653:21:2::1;10687:24;10565:50:::0;10687:16:::1;:24::i;:::-;10724:20;10747:38;10771:14:::0;10747:21:::1;:38;:::i;:::-;10868:7;:17:::0;10849:6:::1;:16:::0;10724:61;;-1:-1:-1;10796:19:2::1;::::0;10849:36:::1;::::0;10868:17:::1;::::0;;::::1;::::0;10849:16:::1;:36;:::i;:::-;10834:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;10818:69;::::0;:12;:69:::1;:::i;:::-;10964:7;:17:::0;10945:6:::1;:16:::0;10796:91;;-1:-1:-1;10898:29:2::1;::::0;10945:36:::1;::::0;10964:17:::1;::::0;;::::1;::::0;10945:16:::1;:36;:::i;:::-;10930:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;10898:84:::0;-1:-1:-1;10999:25:2;;10995:160:::1;;11082:61;11095:24;11121:21;11082:12;:61::i;:::-;11262:7;:17:::0;11243:6:::1;:16:::0;11201:20:::1;::::0;11243:36:::1;::::0;11262:17:::1;;::::0;;;::::1;::::0;::::1;::::0;11243:16;;::::1;;:36;:::i;:::-;11224:56;;:15;:11:::0;11238:1:::1;11224:15;:::i;:::-;:56;;;;:::i;:::-;11201:79:::0;-1:-1:-1;11306:16:2;;11302:98:::1;;11347:17;::::0;11339:49:::1;::::0;-1:-1:-1;;;;;11347:17:2;;::::1;::::0;11339:49;::::1;;;::::0;11375:12;;11347:17:::1;11339:49:::0;11347:17;11339:49;11375:12;11347:17;11339:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11302:98;-1:-1:-1::0;;2216:16:2;:24;;-1:-1:-1;;2216:24:2;;;-1:-1:-1;;;;;;;10220:1195:2:o;12883:472::-;13038:7;13034:230;;;13062:14;6891:13;:17;;-1:-1:-1;;6919:17:2;;;6849:102;13062:14;13105:13;-1:-1:-1;;;;;13095:23:2;:6;-1:-1:-1;;;;;13095:23:2;;13091:72;;13139:8;7012:6;:16;6996:13;:32;;7012:16;7055;;;7012;7055;;;7039:32;;;-1:-1:-1;;7039:32:2;;;7012:16;;7039:32;;;;;;;;;;6959:128;13139:8;13194:13;-1:-1:-1;;;;;13181:26:2;:9;-1:-1:-1;;;;;13181:26:2;;13177:76;;13228:9;7149:7;:17;7133:13;:33;;7149:17;7193;;;7149;7193;;;7177:33;;;-1:-1:-1;;7177:33:2;;;7149:17;;7177:33;;;;;;;;;;7095:131;13228:9;13276:44;13294:6;13302:9;13313:6;13276:17;:44::i;:::-;13333:14;6891:13;:17;;-1:-1:-1;;6919:17:2;;;6849:102;13333:14;12883:472;;;;:::o;11423:589::-;11573:16;;;11587:1;11573:16;;;;;;;;11549:21;;11573:16;;;;;;;;;;-1:-1:-1;11573:16:2;11549:40;;11618:4;11600;11605:1;11600:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11600:23:2;;;-1:-1:-1;;;;;11600:23:2;;;;;11644:15;-1:-1:-1;;;;;11644:20:2;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11634:4;11639:1;11634:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;11634:32:2;;;-1:-1:-1;;;;;11634:32:2;;;;;11679:62;11696:4;11711:15;11729:11;11679:8;:62::i;:::-;11780:224;;-1:-1:-1;;;11780:224:2;;-1:-1:-1;;;;;11780:15:2;:66;;;;:224;;11861:11;;11887:1;;11931:4;;11958;;11978:15;;11780:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12283:519;12431:62;12448:4;12463:15;12481:11;12431:8;:62::i;:::-;12536:258;;-1:-1:-1;;;12536:258:2;;12608:4;12536:258;;;12410:34:7;;;12460:18;;;12453:34;;;12654:1:2;12503:18:7;;;12496:34;;;12546:18;;;12539:34;12589:19;;;12582:44;12768:15:2;12642:19:7;;;12635:35;12536:15:2;-1:-1:-1;;;;;12536:31:2;;;;12575:9;;12344:19:7;;12536:258:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12283:519;;:::o;13363:536::-;13510:23;13548:18;13581:15;13610:20;13622:7;13610:11;:20::i;:::-;-1:-1:-1;;;;;13661:15:2;;;;;;:7;:15;;;;;;13495:135;;-1:-1:-1;13495:135:2;;-1:-1:-1;13495:135:2;-1:-1:-1;13661:28:2;;13681:7;13661:19;:28::i;:::-;-1:-1:-1;;;;;13643:15:2;;;;;;;:7;:15;;;;;;:46;;;;13721:18;;;;;;;:39;;13744:15;13721:22;:39::i;:::-;-1:-1:-1;;;;;13700:18:2;;;;;;:7;:18;;;;;:60;13771:26;13786:10;13771:14;:26::i;:::-;13808:23;13823:7;13808:14;:23::i;:::-;13864:9;-1:-1:-1;;;;;13847:44:2;13856:6;-1:-1:-1;;;;;13847:44:2;;13875:15;13847:44;;;;1848:25:7;;1836:2;1821:18;;1702:177;13847:44:2;;;;;;;;13484:415;;;13363:536;;;:::o;5767:429::-;5868:7;5890;5912;5947:18;5968:30;5990:7;5968:21;:30::i;:::-;5947:51;;6009:15;6027:30;6049:7;6027:21;:30::i;:::-;6009:48;-1:-1:-1;6068:23:2;6094:36;6009:48;6094:23;:7;6106:10;6094:11;:23::i;:::-;:27;;:36::i;:::-;6068:62;6168:10;;-1:-1:-1;6180:7:2;;-1:-1:-1;5767:429:2;;-1:-1:-1;;;5767:429:2:o;785:136:5:-;843:7;870:43;874:1;877;870:43;;;;;;;;;;;;;;;;;:3;:43::i;321:181::-;379:7;;411:5;415:1;411;:5;:::i;:::-;399:17;;440:1;435;:6;;427:46;;;;-1:-1:-1;;;427:46:5;;13194:2:7;427:46:5;;;13176:21:7;13233:2;13213:18;;;13206:30;13272:29;13252:18;;;13245:57;13319:18;;427:46:5;12992:351:7;6204:134:2;6308:4;6292:22;;;;:7;:22;;;;;;:38;;6319:10;6292:26;:38::i;:::-;6283:4;6267:22;;;;:7;:22;;;;;:63;-1:-1:-1;6204:134:2:o;6482:174::-;6623:13;;6579:7;;6611:37;;6642:5;;6611:26;;:7;;6623:13;;6611:11;:26::i;:::-;:30;;:37::i;6664:174::-;6805:13;;6761:7;;6793:37;;6824:5;;6793:26;;:7;;6805:13;;;;;6793:11;:26::i;14:548:7:-;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:7;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;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:7:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:7;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:7;2315:18;;;;2302:32;;1884:456::o;2612:160::-;2677:20;;2733:13;;2726:21;2716:32;;2706:60;;2762:1;2759;2752:12;2706:60;2612:160;;;:::o;2777:248::-;2842:6;2850;2903:2;2891:9;2882:7;2878:23;2874:32;2871:52;;;2919:1;2916;2909:12;2871:52;2942:26;2958:9;2942:26;:::i;3656:180::-;3712:6;3765:2;3753:9;3744:7;3740:23;3736:32;3733:52;;;3781:1;3778;3771:12;3733:52;3804:26;3820:9;3804:26;:::i;4065:388::-;4133:6;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:52;;;4210:1;4207;4200:12;4162:52;4249:9;4236:23;4268:31;4293:5;4268:31;:::i;:::-;4318:5;-1:-1:-1;4375:2:7;4360:18;;4347:32;4388:33;4347:32;4388:33;:::i;:::-;4440:7;4430:17;;;4065:388;;;;;:::o;4458:180::-;4517:6;4570:2;4558:9;4549:7;4545:23;4541:32;4538:52;;;4586:1;4583;4576:12;4538:52;-1:-1:-1;4609:23:7;;4458:180;-1:-1:-1;4458:180:7:o;4643:380::-;4722:1;4718:12;;;;4765;;;4786:61;;4840:4;4832:6;4828:17;4818:27;;4786:61;4893:2;4885:6;4882:14;4862:18;4859:38;4856:161;;4939:10;4934:3;4930:20;4927:1;4920:31;4974:4;4971:1;4964:15;5002:4;4999:1;4992:15;4856:161;;4643:380;;;:::o;5028:356::-;5230:2;5212:21;;;5249:18;;;5242:30;5308:34;5303:2;5288:18;;5281:62;5375:2;5360:18;;5028:356::o;5796:127::-;5857:10;5852:3;5848:20;5845:1;5838:31;5888:4;5885:1;5878:15;5912:4;5909:1;5902:15;5928:168;6001:9;;;6032;;6049:15;;;6043:22;;6029:37;6019:71;;6070:18;;:::i;6101:217::-;6141:1;6167;6157:132;;6211:10;6206:3;6202:20;6199:1;6192:31;6246:4;6243:1;6236:15;6274:4;6271:1;6264:15;6157:132;-1:-1:-1;6303:9:7;;6101:217::o;9515:125::-;9580:9;;;9601:10;;;9598:36;;;9614:18;;:::i;10048:128::-;10115:9;;;10136:11;;;10133:37;;;10150:18;;:::i;10181:148::-;10269:4;10248:12;;;10262;;;10244:31;;10287:13;;10284:39;;;10303:18;;:::i;10334:225::-;10438:4;10417:12;;;10431;;;10413:31;10464:22;;;;10505:24;;;10495:58;;10533:18;;:::i;:::-;10495:58;10334:225;;;;:::o;10696:127::-;10757:10;10752:3;10748:20;10745:1;10738:31;10788:4;10785:1;10778:15;10812:4;10809:1;10802:15;10828:251;10898:6;10951:2;10939:9;10930:7;10926:23;10922:32;10919:52;;;10967:1;10964;10957:12;10919:52;10999:9;10993:16;11018:31;11043:5;11018:31;:::i;11084:980::-;11346:4;11394:3;11383:9;11379:19;11425:6;11414:9;11407:25;11451:2;11489:6;11484:2;11473:9;11469:18;11462:34;11532:3;11527:2;11516:9;11512:18;11505:31;11556:6;11591;11585:13;11622:6;11614;11607:22;11660:3;11649:9;11645:19;11638:26;;11699:2;11691:6;11687:15;11673:29;;11720:1;11730:195;11744:6;11741:1;11738:13;11730:195;;;11809:13;;-1:-1:-1;;;;;11805:39:7;11793:52;;11900:15;;;;11865:12;;;;11841:1;11759:9;11730:195;;;-1:-1:-1;;;;;;;11981:32:7;;;;11976:2;11961:18;;11954:60;-1:-1:-1;;;12045:3:7;12030:19;12023:35;11942:3;11084:980;-1:-1:-1;;;11084:980:7:o;12681:306::-;12769:6;12777;12785;12838:2;12826:9;12817:7;12813:23;12809:32;12806:52;;;12854:1;12851;12844:12;12806:52;12883:9;12877:16;12867:26;;12933:2;12922:9;12918:18;12912:25;12902:35;;12977:2;12966:9;12962:18;12956:25;12946:35;;12681:306;;;;;:::o
Swarm Source
ipfs://c800daed8b7db60bfb00a5c1f780a52ca7910dcfa6eef848d6d638fc434db949
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.