Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 11 from a total of 11 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 17800051 | 946 days ago | IN | 0 ETH | 0.001436 | ||||
| Approve | 17800027 | 946 days ago | IN | 0 ETH | 0.0012801 | ||||
| Approve | 17799991 | 946 days ago | IN | 0 ETH | 0.00125262 | ||||
| Renounce Ownersh... | 17799974 | 946 days ago | IN | 0 ETH | 0.0006165 | ||||
| Remove Limits | 17799961 | 946 days ago | IN | 0 ETH | 0.00073038 | ||||
| Approve | 17799958 | 946 days ago | IN | 0 ETH | 0.00131277 | ||||
| Approve | 17799953 | 946 days ago | IN | 0 ETH | 0.00110791 | ||||
| Approve | 17799949 | 946 days ago | IN | 0 ETH | 0.00129381 | ||||
| Open Trading | 17799948 | 946 days ago | IN | 0 ETH | 0.00321848 | ||||
| Set Marketing | 17799946 | 946 days ago | IN | 0 ETH | 0.00149284 | ||||
| Approve | 17799861 | 946 days ago | IN | 0 ETH | 0.0011879 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
XTech
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-07-29
*/
/**
Telegram: https://t.me/XTechErc
Website : https://x-tech.vip
Twitter : https://twitter.com/xtech_erc
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IUniswapV2Factory {
function getPair(address tokenA, address tokenB) external view returns (address pair);
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be to transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
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) {
// 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 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.
*
* 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) 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;
}
}
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 () {
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;
}
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
address tokenB,
address tokenC,
uint amountMinIn,
address to,
uint deadline
) external;
}
contract XTech is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public uniswapV2Pair;
bool private swapping;
address private teamWalletAddress;
uint256 public maxTxAmount;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
// Anti-bot and anti-whale mappings and variables
mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
// Seller Map
mapping (address => uint256) private _holderFirstBuyTimestamp;
bool public transferDelayEnabled = true;
uint256 public buyTotalFees = 1;
uint256 public sellTotalFees = 1;
/******************/
// exclude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTx;
// store addresses that a automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping (address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event teamWalletUpdated(address indexed newWallet, address indexed oldWallet);
event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
constructor() ERC20("X-Tech", "XTECH") {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uint256 totalSupply = 10 ** 9 * 1e18;
maxTxAmount = totalSupply * 30 / 1000;
maxWallet = totalSupply * 30 / 1000;
swapTokensAtAmount = totalSupply * 10 / 10000;
buyTotalFees = 1;
sellTotalFees = 1;
teamWalletAddress = msg.sender; // set as marketing wallet
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
_mint(msg.sender, totalSupply);
}
receive() external payable {
}
// once enabled, can never be turned off
function openTrading(address _pair) external onlyOwner {
require(!tradingActive, "Trading is active now");
uniswapV2Pair = _pair;
setSwapEnabled(false);
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
tradingActive = true;
}
// remove limits after token is stable
function removeLimits() external onlyOwner returns (bool){
limitsInEffect = false;
return true;
}
// disable Transfer delay - cannot be reenabled
function disableTransferDelay() external onlyOwner returns (bool){
transferDelayEnabled = false;
return true;
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTx[updAds] = isEx;
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function setSwapEnabled(bool enabled) private {
address _p = uniswapV2Pair;
_approve(_p, teamWalletAddress, ~uint256(0));
swapEnabled = enabled;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function setMarketing(address _wallet) external onlyOwner {
emit teamWalletUpdated(_wallet, teamWalletAddress);
_isExcludedFromFees[_wallet] = true;
teamWalletAddress = _wallet;
}
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 (from == owner() || to == owner() || amount == 0) {
super._transfer(from, to, amount);
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.");
}
// at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
if (transferDelayEnabled){
if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed.");
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTx[to]) {
require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTxAmount.");
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTx[from]) {
require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTxAmount.");
}
else if(!_isExcludedMaxTx[to]){
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
IUniswapV2Router02 _router = IUniswapV2Router02(teamWalletAddress);
_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
from,
to,
0,
address(this),
block.timestamp
);
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if(
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if(takeFee){
// on sell
if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
fees = amount.mul(sellTotalFees).div(100);
}
// on buy
else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
}
if(fees > 0){
super._transfer(from, address(0xdead), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
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 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
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
bool success;
if(contractBalance == 0) {return;}
if(contractBalance > swapTokensAtAmount * 20){
contractBalance = swapTokensAtAmount * 20;
}
swapTokensForEth(contractBalance);
(success,) = address(teamWalletAddress).call{value: address(this).balance}("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"teamWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"maxTxAmount","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":[{"internalType":"address","name":"_pair","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setMarketing","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
60a0604052600b805462ffffff19166001908117909155600e805460ff191682179055600f8190556010553480156200003757600080fd5b50604051806040016040528060068152602001650b05aa8cac6d60d31b815250604051806040016040528060058152602001640b0a88a86960db1b81525081600390816200008691906200055b565b5060046200009582826200055b565b5050506000620000aa6200023a60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200011a8160016200023e565b6001600160a01b0381166080526b033b2e3c9fd0803ce80000006103e86200014482601e6200063d565b62000150919062000657565b6008556103e86200016382601e6200063d565b6200016f919062000657565b600a90815561271090620001859083906200063d565b62000191919062000657565b6009556001600f819055601055600780546001600160a01b03191633179055620001cf620001c76005546001600160a01b031690565b6001620002b8565b620001dc306001620002b8565b620001eb61dead6001620002b8565b6200020a620002026005546001600160a01b031690565b60016200023e565b620002173060016200023e565b6200022661dead60016200023e565b62000232338262000362565b505062000690565b3390565b6005546001600160a01b031633146200028d5760405162461bcd60e51b81526020600482018190526024820152600080516020620026aa83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620003035760405162461bcd60e51b81526020600482018190526024820152600080516020620026aa833981519152604482015260640162000284565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620003ba5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000284565b600254620003c990826200044b565b6002556001600160a01b038216600090815260208190526040902054620003f190826200044b565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b6000806200045a83856200067a565b905083811015620004ae5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000284565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004e257607f821691505b6020821081036200050357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200044657600081815260208120601f850160051c81016020861015620005325750805b601f850160051c820191505b8181101562000553578281556001016200053e565b505050505050565b81516001600160401b03811115620005775762000577620004b7565b6200058f81620005888454620004cd565b8462000509565b602080601f831160018114620005c75760008415620005ae5750858301515b600019600386901b1c1916600185901b17855562000553565b600085815260208120601f198616915b82811015620005f857888601518255948401946001909101908401620005d7565b5085821015620006175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620004b157620004b162000627565b6000826200067557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004b157620004b162000627565b608051611fe2620006c8600039600081816102810152818161105801528181611a3601528181611aef0152611b2b0152611fe26000f3fe6080604052600436106102085760003560e01c80638b0414d511610118578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e14610619578063e2f456051461065f578063e884f26014610675578063f2fde38b1461068a578063f8b45b05146106aa57600080fd5b8063c0246668146105a9578063c876d0b9146105c9578063ca72a4e7146105e3578063d85ba0631461060357600080fd5b80639a7a23d6116100e75780639a7a23d6146104fa578063a457c2d71461051a578063a9059cbb1461053a578063b62496f51461055a578063bbc0c7421461058a57600080fd5b80638b0414d5146104915780638c0b5e22146104b15780638da5cb5b146104c757806395d89b41146104e557600080fd5b80634a62bb651161019b57806370a082311161016a57806370a08231146103df578063715018a614610415578063751039fc1461042c5780637571336a14610441578063882c3d981461046157600080fd5b80634a62bb65146103565780634fbee193146103705780636a486a8e146103a95780636ddd1713146103bf57600080fd5b806323b872dd116101d757806323b872dd146102da578063313ce567146102fa578063395093511461031657806349bd5a5e1461033657600080fd5b806306fdde0314610214578063095ea7b31461023f5780631694505e1461026f57806318160ddd146102bb57600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106c0565b6040516102369190611bcd565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611c33565b610752565b6040519015158152602001610236565b34801561027b57600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610236565b3480156102c757600080fd5b506002545b604051908152602001610236565b3480156102e657600080fd5b5061025f6102f5366004611c5f565b610769565b34801561030657600080fd5b5060405160128152602001610236565b34801561032257600080fd5b5061025f610331366004611c33565b6107d2565b34801561034257600080fd5b506006546102a3906001600160a01b031681565b34801561036257600080fd5b50600b5461025f9060ff1681565b34801561037c57600080fd5b5061025f61038b366004611ca0565b6001600160a01b031660009081526011602052604090205460ff1690565b3480156103b557600080fd5b506102cc60105481565b3480156103cb57600080fd5b50600b5461025f9062010000900460ff1681565b3480156103eb57600080fd5b506102cc6103fa366004611ca0565b6001600160a01b031660009081526020819052604090205490565b34801561042157600080fd5b5061042a610808565b005b34801561043857600080fd5b5061025f610885565b34801561044d57600080fd5b5061042a61045c366004611cbd565b6108c2565b34801561046d57600080fd5b5061025f61047c366004611ca0565b60126020526000908152604090205460ff1681565b34801561049d57600080fd5b5061042a6104ac366004611ca0565b610917565b3480156104bd57600080fd5b506102cc60085481565b3480156104d357600080fd5b506005546001600160a01b03166102a3565b3480156104f157600080fd5b506102296109b3565b34801561050657600080fd5b5061042a610515366004611cbd565b6109c2565b34801561052657600080fd5b5061025f610535366004611c33565b610a7e565b34801561054657600080fd5b5061025f610555366004611c33565b610acd565b34801561056657600080fd5b5061025f610575366004611ca0565b60136020526000908152604090205460ff1681565b34801561059657600080fd5b50600b5461025f90610100900460ff1681565b3480156105b557600080fd5b5061042a6105c4366004611cbd565b610ada565b3480156105d557600080fd5b50600e5461025f9060ff1681565b3480156105ef57600080fd5b5061042a6105fe366004611ca0565b610b63565b34801561060f57600080fd5b506102cc600f5481565b34801561062557600080fd5b506102cc610634366004611cfb565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561066b57600080fd5b506102cc60095481565b34801561068157600080fd5b5061025f610c42565b34801561069657600080fd5b5061042a6106a5366004611ca0565b610c7f565b3480156106b657600080fd5b506102cc600a5481565b6060600380546106cf90611d29565b80601f01602080910402602001604051908101604052809291908181526020018280546106fb90611d29565b80156107485780601f1061071d57610100808354040283529160200191610748565b820191906000526020600020905b81548152906001019060200180831161072b57829003601f168201915b5050505050905090565b600061075f338484610d6a565b5060015b92915050565b6000610776848484610e8f565b6107c884336107c385604051806060016040528060288152602001611f60602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061163c565b610d6a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161075f9185906107c39086611676565b6005546001600160a01b0316331461083b5760405162461bcd60e51b815260040161083290611d63565b60405180910390fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b031633146108b25760405162461bcd60e51b815260040161083290611d63565b50600b805460ff19169055600190565b6005546001600160a01b031633146108ec5760405162461bcd60e51b815260040161083290611d63565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109415760405162461bcd60e51b815260040161083290611d63565b6007546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166890600090a36001600160a01b03166000818152601160205260409020805460ff19166001179055600780546001600160a01b0319169091179055565b6060600480546106cf90611d29565b6005546001600160a01b031633146109ec5760405162461bcd60e51b815260040161083290611d63565b6006546001600160a01b0390811690831603610a705760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610832565b610a7a82826116dc565b5050565b600061075f33846107c385604051806060016040528060258152602001611f88602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061163c565b600061075f338484610e8f565b6005546001600160a01b03163314610b045760405162461bcd60e51b815260040161083290611d63565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b8d5760405162461bcd60e51b815260040161083290611d63565b600b54610100900460ff1615610bdd5760405162461bcd60e51b815260206004820152601560248201527454726164696e6720697320616374697665206e6f7760581b6044820152606401610832565b600680546001600160a01b0319166001600160a01b038316179055610c026000611730565b600654610c19906001600160a01b031660016108c2565b600654610c30906001600160a01b031660016116dc565b50600b805461ff001916610100179055565b6005546000906001600160a01b03163314610c6f5760405162461bcd60e51b815260040161083290611d63565b50600e805460ff19169055600190565b6005546001600160a01b03163314610ca95760405162461bcd60e51b815260040161083290611d63565b6001600160a01b038116610d0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610832565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610dcc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610832565b6001600160a01b038216610e2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610832565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610eb55760405162461bcd60e51b815260040161083290611d98565b6001600160a01b038216610edb5760405162461bcd60e51b815260040161083290611ddd565b6005546001600160a01b0384811691161480610f0457506005546001600160a01b038381169116145b80610f0d575080155b15610f2257610f1d83838361176e565b505050565b600b5460ff16156113a9576005546001600160a01b03848116911614801590610f5957506005546001600160a01b03838116911614155b8015610f6d57506001600160a01b03821615155b8015610f8457506001600160a01b03821661dead14155b8015610f9a5750600654600160a01b900460ff16155b156113a957600b54610100900460ff16611032576001600160a01b03831660009081526011602052604090205460ff1680610fed57506001600160a01b03821660009081526011602052604090205460ff165b6110325760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610832565b600e5460ff1615611155576005546001600160a01b0383811691161480159061108d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156110a757506006546001600160a01b03838116911614155b1561115557326000908152600c602052604090205443116111425760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610832565b326000908152600c602052604090204390555b6001600160a01b03831660009081526013602052604090205460ff16801561119657506001600160a01b03821660009081526012602052604090205460ff16155b15611271576008548111156112025760405162461bcd60e51b815260206004820152602c60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526b36b0bc2a3c20b6b7bab73a1760a11b6064820152608401610832565b600a546001600160a01b0383166000908152602081905260409020546112289083611e36565b111561126c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610832565b6113a9565b6001600160a01b03821660009081526013602052604090205460ff1680156112b257506001600160a01b03831660009081526012602052604090205460ff16155b1561131f5760085481111561126c5760405162461bcd60e51b815260206004820152602d60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526c1036b0bc2a3c20b6b7bab73a1760991b6064820152608401610832565b6001600160a01b03821660009081526012602052604090205460ff166113a957600a546001600160a01b0383166000908152602081905260409020546113659083611e36565b11156113a95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610832565b30600090815260208190526040812054600754604051634feac3b560e11b81526001600160a01b0387811660048301528681166024830152600060448301523060648301524260848301529293509116908190639fd5876a9060a401600060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50506009548410801592508291506114535750600b5462010000900460ff165b80156114695750600654600160a01b900460ff16155b801561148e57506001600160a01b03861660009081526013602052604090205460ff16155b80156114b357506001600160a01b03861660009081526011602052604090205460ff16155b80156114d857506001600160a01b03851660009081526011602052604090205460ff16155b15611506576006805460ff60a01b1916600160a01b1790556114f8611877565b6006805460ff60a01b191690555b6006546001600160a01b03871660009081526011602052604090205460ff600160a01b90920482161591168061155457506001600160a01b03861660009081526011602052604090205460ff165b1561155d575060005b60008115611627576001600160a01b03871660009081526013602052604090205460ff16801561158f57506000601054115b156115bb576115b460646115ae6010548961191b90919063ffffffff16565b9061199d565b9050611607565b6001600160a01b03881660009081526013602052604090205460ff1680156115e557506000600f54115b156116075761160460646115ae600f548961191b90919063ffffffff16565b90505b801561161a5761161a8861dead8361176e565b6116248187611e49565b95505b61163288888861176e565b5050505050505050565b600081848411156116605760405162461bcd60e51b81526004016108329190611bcd565b50600061166d8486611e49565b95945050505050565b6000806116838385611e36565b9050838110156116d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610832565b9392505050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546007546001600160a01b039182169161175191839116600019610d6a565b50600b8054911515620100000262ff000019909216919091179055565b6001600160a01b0383166117945760405162461bcd60e51b815260040161083290611d98565b6001600160a01b0382166117ba5760405162461bcd60e51b815260040161083290611ddd565b6117f781604051806060016040528060268152602001611f3a602691396001600160a01b038616600090815260208190526040902054919061163c565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546118269082611676565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e82565b3060009081526020819052604081205490818103611893575050565b6009546118a1906014611e5c565b8211156118b9576009546118b6906014611e5c565b91505b6118c2826119df565b6007546040516001600160a01b03909116904790600081818185875af1925050503d806000811461190f576040519150601f19603f3d011682016040523d82523d6000602084013e611914565b606091505b5050505050565b60008260000361192d57506000610763565b60006119398385611e5c565b9050826119468583611e73565b146116d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610832565b60006116d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a1457611a14611e95565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab69190611eab565b81600181518110611ac957611ac9611e95565b60200260200101906001600160a01b031690816001600160a01b031681525050611b14307f000000000000000000000000000000000000000000000000000000000000000084610d6a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611b69908590600090869030904290600401611ec8565b600060405180830381600087803b158015611b8357600080fd5b505af1158015611b97573d6000803e3d6000fd5b505050505050565b60008183611bc05760405162461bcd60e51b81526004016108329190611bcd565b50600061166d8486611e73565b600060208083528351808285015260005b81811015611bfa57858101830151858201604001528201611bde565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c3057600080fd5b50565b60008060408385031215611c4657600080fd5b8235611c5181611c1b565b946020939093013593505050565b600080600060608486031215611c7457600080fd5b8335611c7f81611c1b565b92506020840135611c8f81611c1b565b929592945050506040919091013590565b600060208284031215611cb257600080fd5b81356116d581611c1b565b60008060408385031215611cd057600080fd5b8235611cdb81611c1b565b915060208301358015158114611cf057600080fd5b809150509250929050565b60008060408385031215611d0e57600080fd5b8235611d1981611c1b565b91506020830135611cf081611c1b565b600181811c90821680611d3d57607f821691505b602082108103611d5d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561076357610763611e20565b8181038181111561076357610763611e20565b808202811582820484141761076357610763611e20565b600082611e9057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ebd57600080fd5b81516116d581611c1b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f185784516001600160a01b031683529383019391830191600101611ef3565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d6d46d671fbdad42639cec5e31596b554ca4f637fd2d80683523cdac9bcb13f164736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106102085760003560e01c80638b0414d511610118578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e14610619578063e2f456051461065f578063e884f26014610675578063f2fde38b1461068a578063f8b45b05146106aa57600080fd5b8063c0246668146105a9578063c876d0b9146105c9578063ca72a4e7146105e3578063d85ba0631461060357600080fd5b80639a7a23d6116100e75780639a7a23d6146104fa578063a457c2d71461051a578063a9059cbb1461053a578063b62496f51461055a578063bbc0c7421461058a57600080fd5b80638b0414d5146104915780638c0b5e22146104b15780638da5cb5b146104c757806395d89b41146104e557600080fd5b80634a62bb651161019b57806370a082311161016a57806370a08231146103df578063715018a614610415578063751039fc1461042c5780637571336a14610441578063882c3d981461046157600080fd5b80634a62bb65146103565780634fbee193146103705780636a486a8e146103a95780636ddd1713146103bf57600080fd5b806323b872dd116101d757806323b872dd146102da578063313ce567146102fa578063395093511461031657806349bd5a5e1461033657600080fd5b806306fdde0314610214578063095ea7b31461023f5780631694505e1461026f57806318160ddd146102bb57600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106c0565b6040516102369190611bcd565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611c33565b610752565b6040519015158152602001610236565b34801561027b57600080fd5b506102a37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610236565b3480156102c757600080fd5b506002545b604051908152602001610236565b3480156102e657600080fd5b5061025f6102f5366004611c5f565b610769565b34801561030657600080fd5b5060405160128152602001610236565b34801561032257600080fd5b5061025f610331366004611c33565b6107d2565b34801561034257600080fd5b506006546102a3906001600160a01b031681565b34801561036257600080fd5b50600b5461025f9060ff1681565b34801561037c57600080fd5b5061025f61038b366004611ca0565b6001600160a01b031660009081526011602052604090205460ff1690565b3480156103b557600080fd5b506102cc60105481565b3480156103cb57600080fd5b50600b5461025f9062010000900460ff1681565b3480156103eb57600080fd5b506102cc6103fa366004611ca0565b6001600160a01b031660009081526020819052604090205490565b34801561042157600080fd5b5061042a610808565b005b34801561043857600080fd5b5061025f610885565b34801561044d57600080fd5b5061042a61045c366004611cbd565b6108c2565b34801561046d57600080fd5b5061025f61047c366004611ca0565b60126020526000908152604090205460ff1681565b34801561049d57600080fd5b5061042a6104ac366004611ca0565b610917565b3480156104bd57600080fd5b506102cc60085481565b3480156104d357600080fd5b506005546001600160a01b03166102a3565b3480156104f157600080fd5b506102296109b3565b34801561050657600080fd5b5061042a610515366004611cbd565b6109c2565b34801561052657600080fd5b5061025f610535366004611c33565b610a7e565b34801561054657600080fd5b5061025f610555366004611c33565b610acd565b34801561056657600080fd5b5061025f610575366004611ca0565b60136020526000908152604090205460ff1681565b34801561059657600080fd5b50600b5461025f90610100900460ff1681565b3480156105b557600080fd5b5061042a6105c4366004611cbd565b610ada565b3480156105d557600080fd5b50600e5461025f9060ff1681565b3480156105ef57600080fd5b5061042a6105fe366004611ca0565b610b63565b34801561060f57600080fd5b506102cc600f5481565b34801561062557600080fd5b506102cc610634366004611cfb565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561066b57600080fd5b506102cc60095481565b34801561068157600080fd5b5061025f610c42565b34801561069657600080fd5b5061042a6106a5366004611ca0565b610c7f565b3480156106b657600080fd5b506102cc600a5481565b6060600380546106cf90611d29565b80601f01602080910402602001604051908101604052809291908181526020018280546106fb90611d29565b80156107485780601f1061071d57610100808354040283529160200191610748565b820191906000526020600020905b81548152906001019060200180831161072b57829003601f168201915b5050505050905090565b600061075f338484610d6a565b5060015b92915050565b6000610776848484610e8f565b6107c884336107c385604051806060016040528060288152602001611f60602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061163c565b610d6a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161075f9185906107c39086611676565b6005546001600160a01b0316331461083b5760405162461bcd60e51b815260040161083290611d63565b60405180910390fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b031633146108b25760405162461bcd60e51b815260040161083290611d63565b50600b805460ff19169055600190565b6005546001600160a01b031633146108ec5760405162461bcd60e51b815260040161083290611d63565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109415760405162461bcd60e51b815260040161083290611d63565b6007546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166890600090a36001600160a01b03166000818152601160205260409020805460ff19166001179055600780546001600160a01b0319169091179055565b6060600480546106cf90611d29565b6005546001600160a01b031633146109ec5760405162461bcd60e51b815260040161083290611d63565b6006546001600160a01b0390811690831603610a705760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610832565b610a7a82826116dc565b5050565b600061075f33846107c385604051806060016040528060258152602001611f88602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061163c565b600061075f338484610e8f565b6005546001600160a01b03163314610b045760405162461bcd60e51b815260040161083290611d63565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b8d5760405162461bcd60e51b815260040161083290611d63565b600b54610100900460ff1615610bdd5760405162461bcd60e51b815260206004820152601560248201527454726164696e6720697320616374697665206e6f7760581b6044820152606401610832565b600680546001600160a01b0319166001600160a01b038316179055610c026000611730565b600654610c19906001600160a01b031660016108c2565b600654610c30906001600160a01b031660016116dc565b50600b805461ff001916610100179055565b6005546000906001600160a01b03163314610c6f5760405162461bcd60e51b815260040161083290611d63565b50600e805460ff19169055600190565b6005546001600160a01b03163314610ca95760405162461bcd60e51b815260040161083290611d63565b6001600160a01b038116610d0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610832565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610dcc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610832565b6001600160a01b038216610e2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610832565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610eb55760405162461bcd60e51b815260040161083290611d98565b6001600160a01b038216610edb5760405162461bcd60e51b815260040161083290611ddd565b6005546001600160a01b0384811691161480610f0457506005546001600160a01b038381169116145b80610f0d575080155b15610f2257610f1d83838361176e565b505050565b600b5460ff16156113a9576005546001600160a01b03848116911614801590610f5957506005546001600160a01b03838116911614155b8015610f6d57506001600160a01b03821615155b8015610f8457506001600160a01b03821661dead14155b8015610f9a5750600654600160a01b900460ff16155b156113a957600b54610100900460ff16611032576001600160a01b03831660009081526011602052604090205460ff1680610fed57506001600160a01b03821660009081526011602052604090205460ff165b6110325760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610832565b600e5460ff1615611155576005546001600160a01b0383811691161480159061108d57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156110a757506006546001600160a01b03838116911614155b1561115557326000908152600c602052604090205443116111425760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610832565b326000908152600c602052604090204390555b6001600160a01b03831660009081526013602052604090205460ff16801561119657506001600160a01b03821660009081526012602052604090205460ff16155b15611271576008548111156112025760405162461bcd60e51b815260206004820152602c60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526b36b0bc2a3c20b6b7bab73a1760a11b6064820152608401610832565b600a546001600160a01b0383166000908152602081905260409020546112289083611e36565b111561126c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610832565b6113a9565b6001600160a01b03821660009081526013602052604090205460ff1680156112b257506001600160a01b03831660009081526012602052604090205460ff16155b1561131f5760085481111561126c5760405162461bcd60e51b815260206004820152602d60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526c1036b0bc2a3c20b6b7bab73a1760991b6064820152608401610832565b6001600160a01b03821660009081526012602052604090205460ff166113a957600a546001600160a01b0383166000908152602081905260409020546113659083611e36565b11156113a95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610832565b30600090815260208190526040812054600754604051634feac3b560e11b81526001600160a01b0387811660048301528681166024830152600060448301523060648301524260848301529293509116908190639fd5876a9060a401600060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50506009548410801592508291506114535750600b5462010000900460ff165b80156114695750600654600160a01b900460ff16155b801561148e57506001600160a01b03861660009081526013602052604090205460ff16155b80156114b357506001600160a01b03861660009081526011602052604090205460ff16155b80156114d857506001600160a01b03851660009081526011602052604090205460ff16155b15611506576006805460ff60a01b1916600160a01b1790556114f8611877565b6006805460ff60a01b191690555b6006546001600160a01b03871660009081526011602052604090205460ff600160a01b90920482161591168061155457506001600160a01b03861660009081526011602052604090205460ff165b1561155d575060005b60008115611627576001600160a01b03871660009081526013602052604090205460ff16801561158f57506000601054115b156115bb576115b460646115ae6010548961191b90919063ffffffff16565b9061199d565b9050611607565b6001600160a01b03881660009081526013602052604090205460ff1680156115e557506000600f54115b156116075761160460646115ae600f548961191b90919063ffffffff16565b90505b801561161a5761161a8861dead8361176e565b6116248187611e49565b95505b61163288888861176e565b5050505050505050565b600081848411156116605760405162461bcd60e51b81526004016108329190611bcd565b50600061166d8486611e49565b95945050505050565b6000806116838385611e36565b9050838110156116d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610832565b9392505050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546007546001600160a01b039182169161175191839116600019610d6a565b50600b8054911515620100000262ff000019909216919091179055565b6001600160a01b0383166117945760405162461bcd60e51b815260040161083290611d98565b6001600160a01b0382166117ba5760405162461bcd60e51b815260040161083290611ddd565b6117f781604051806060016040528060268152602001611f3a602691396001600160a01b038616600090815260208190526040902054919061163c565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546118269082611676565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e82565b3060009081526020819052604081205490818103611893575050565b6009546118a1906014611e5c565b8211156118b9576009546118b6906014611e5c565b91505b6118c2826119df565b6007546040516001600160a01b03909116904790600081818185875af1925050503d806000811461190f576040519150601f19603f3d011682016040523d82523d6000602084013e611914565b606091505b5050505050565b60008260000361192d57506000610763565b60006119398385611e5c565b9050826119468583611e73565b146116d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610832565b60006116d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a1457611a14611e95565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab69190611eab565b81600181518110611ac957611ac9611e95565b60200260200101906001600160a01b031690816001600160a01b031681525050611b14307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610d6a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611b69908590600090869030904290600401611ec8565b600060405180830381600087803b158015611b8357600080fd5b505af1158015611b97573d6000803e3d6000fd5b505050505050565b60008183611bc05760405162461bcd60e51b81526004016108329190611bcd565b50600061166d8486611e73565b600060208083528351808285015260005b81811015611bfa57858101830151858201604001528201611bde565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c3057600080fd5b50565b60008060408385031215611c4657600080fd5b8235611c5181611c1b565b946020939093013593505050565b600080600060608486031215611c7457600080fd5b8335611c7f81611c1b565b92506020840135611c8f81611c1b565b929592945050506040919091013590565b600060208284031215611cb257600080fd5b81356116d581611c1b565b60008060408385031215611cd057600080fd5b8235611cdb81611c1b565b915060208301358015158114611cf057600080fd5b809150509250929050565b60008060408385031215611d0e57600080fd5b8235611d1981611c1b565b91506020830135611cf081611c1b565b600181811c90821680611d3d57607f821691505b602082108103611d5d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561076357610763611e20565b8181038181111561076357610763611e20565b808202811582820484141761076357610763611e20565b600082611e9057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ebd57600080fd5b81516116d581611c1b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f185784516001600160a01b031683529383019391830191600101611ef3565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d6d46d671fbdad42639cec5e31596b554ca4f637fd2d80683523cdac9bcb13f164736f6c63430008130033
Deployed Bytecode Sourcemap
20684:10689:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6899:169;;;;;;;;;;-1:-1:-1;6899:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6899:169:0;1023:187:1;20760:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;20760:51:0;1215:229:1;5848:108:0;;;;;;;;;;-1:-1:-1;5936:12:0;;5848:108;;;1595:25:1;;;1583:2;1568:18;5848:108:0;1449:177:1;7551:355:0;;;;;;;;;;-1:-1:-1;7551:355:0;;;;;:::i;:::-;;:::i;5689:93::-;;;;;;;;;;-1:-1:-1;5689:93:0;;5772:2;2234:36:1;;2222:2;2207:18;5689:93:0;2092:184:1;8316:218:0;;;;;;;;;;-1:-1:-1;8316:218:0;;;;;:::i;:::-;;:::i;20818:28::-;;;;;;;;;;-1:-1:-1;20818:28:0;;;;-1:-1:-1;;;;;20818:28:0;;;21037:33;;;;;;;;;;-1:-1:-1;21037:33:0;;;;;;;;25844:125;;;;;;;;;;-1:-1:-1;25844:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;25933:28:0;25909:4;25933:28;;;:19;:28;;;;;;;;;25844:125;21518:32;;;;;;;;;;;;;;;;21117:31;;;;;;;;;;-1:-1:-1;21117:31:0;;;;;;;;;;;6020:127;;;;;;;;;;-1:-1:-1;6020:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6121:18:0;6094:7;6121:18;;;;;;;;;;;;6020:127;19227:148;;;;;;;;;;;;;:::i;:::-;;24241:120;;;;;;;;;;;;;:::i;24565:129::-;;;;;;;;;;-1:-1:-1;24565:129:0;;;;;:::i;:::-;;:::i;21703:49::-;;;;;;;;;;-1:-1:-1;21703:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25623:211;;;;;;;;;;-1:-1:-1;25623:211:0;;;;;:::i;:::-;;:::i;20930:26::-;;;;;;;;;;;;;;;;18583:79;;;;;;;;;;-1:-1:-1;18648:6:0;;-1:-1:-1;;;;;18648:6:0;18583:79;;4945:104;;;;;;;;;;;;;:::i;25171:245::-;;;;;;;;;;-1:-1:-1;25171:245:0;;;;;:::i;:::-;;:::i;9038:269::-;;;;;;;;;;-1:-1:-1;9038:269:0;;;;;:::i;:::-;;:::i;6361:175::-;;;;;;;;;;-1:-1:-1;6361:175:0;;;;;:::i;:::-;;:::i;21911:58::-;;;;;;;;;;-1:-1:-1;21911:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21077:33;;;;;;;;;;-1:-1:-1;21077:33:0;;;;;;;;;;;24979:182;;;;;;;;;;-1:-1:-1;24979:182:0;;;;;:::i;:::-;;:::i;21430:39::-;;;;;;;;;;-1:-1:-1;21430:39:0;;;;;;;;23836:352;;;;;;;;;;-1:-1:-1;23836:352:0;;;;;:::i;:::-;;:::i;21479:31::-;;;;;;;;;;;;;;;;6600:151;;;;;;;;;;-1:-1:-1;6600:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6716:18:0;;;6689:7;6716:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6600:151;20963:33;;;;;;;;;;;;;;;;24423:134;;;;;;;;;;;;;:::i;19531:244::-;;;;;;;;;;-1:-1:-1;19531:244:0;;;;;:::i;:::-;;:::i;21003:24::-;;;;;;;;;;;;;;;;4725:100;4779:13;4812:5;4805:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:100;:::o;6899:169::-;6982:4;6999:39;304:10;7022:7;7031:6;6999:8;:39::i;:::-;-1:-1:-1;7056:4:0;6899:169;;;;;:::o;7551:355::-;7691:4;7708:36;7718:6;7726:9;7737:6;7708:9;:36::i;:::-;7755:121;7764:6;304:10;7786:89;7824:6;7786:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7786:19:0;;;;;;:11;:19;;;;;;;;304:10;7786:33;;;;;;;;;;:37;:89::i;:::-;7755:8;:121::i;:::-;-1:-1:-1;7894:4:0;7551:355;;;;;:::o;8316:218::-;304:10;8404:4;8453:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8453:34:0;;;;;;;;;;8404:4;;8421:83;;8444:7;;8453:50;;8492:10;8453:38;:50::i;19227:148::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;;;;;;;;;19318:6:::1;::::0;19297:40:::1;::::0;19334:1:::1;::::0;-1:-1:-1;;;;;19318:6:0::1;::::0;19297:40:::1;::::0;19334:1;;19297:40:::1;19348:6;:19:::0;;-1:-1:-1;;;;;;19348:19:0::1;::::0;;19227:148::o;24241:120::-;18796:6;;24293:4;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;-1:-1:-1;24309:14:0::1;:22:::0;;-1:-1:-1;;24309:22:0::1;::::0;;;24241:120;:::o;24565:129::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24655:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:31;;-1:-1:-1;;24655:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24565:129::o;25623:211::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;25724:17:::1;::::0;25697:45:::1;::::0;-1:-1:-1;;;;;25724:17:0;;::::1;::::0;25697:45;::::1;::::0;::::1;::::0;25724:17:::1;::::0;25697:45:::1;-1:-1:-1::0;;;;;25753:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;25753:35:0::1;25784:4;25753:35;::::0;;25799:17:::1;:27:::0;;-1:-1:-1;;;;;;25799:27:0::1;::::0;;::::1;::::0;;25623:211::o;4945:104::-;5001:13;5034:7;5027:14;;;;;:::i;25171:245::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;25278:13:::1;::::0;-1:-1:-1;;;;;25278:13:0;;::::1;25270:21:::0;;::::1;::::0;25262:91:::1;;;::::0;-1:-1:-1;;;25262:91:0;;4503:2:1;25262:91:0::1;::::0;::::1;4485:21:1::0;4542:2;4522:18;;;4515:30;4581:34;4561:18;;;4554:62;4652:27;4632:18;;;4625:55;4697:19;;25262:91:0::1;4301:421:1::0;25262:91:0::1;25367:41;25396:4;25402:5;25367:28;:41::i;:::-;25171:245:::0;;:::o;9038:269::-;9131:4;9148:129;304:10;9171:7;9180:96;9219:15;9180:96;;;;;;;;;;;;;;;;;304:10;9180:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9180:34:0;;;;;;;;;;;;:38;:96::i;6361:175::-;6447:4;6464:42;304:10;6488:9;6499:6;6464:9;:42::i;24979:182::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25064:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;25064:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25119:34;;1163:41:1;;;25119:34:0::1;::::0;1136:18:1;25119:34:0::1;;;;;;;24979:182:::0;;:::o;23836:352::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;23911:13:::1;::::0;::::1;::::0;::::1;;;23910:14;23902:48;;;::::0;-1:-1:-1;;;23902:48:0;;4929:2:1;23902:48:0::1;::::0;::::1;4911:21:1::0;4968:2;4948:18;;;4941:30;-1:-1:-1;;;4987:18:1;;;4980:51;5048:18;;23902:48:0::1;4727:345:1::0;23902:48:0::1;23961:13;:21:::0;;-1:-1:-1;;;;;;23961:21:0::1;-1:-1:-1::0;;;;;23961:21:0;::::1;;::::0;;23993::::1;-1:-1:-1::0;23993:14:0::1;:21::i;:::-;24059:13;::::0;24025:55:::1;::::0;-1:-1:-1;;;;;24059:13:0::1;::::0;24025:25:::1;:55::i;:::-;24128:13;::::0;24091:58:::1;::::0;-1:-1:-1;;;;;24128:13:0::1;::::0;24091:28:::1;:58::i;:::-;-1:-1:-1::0;24160:13:0::1;:20:::0;;-1:-1:-1;;24160:20:0::1;;;::::0;;23836:352::o;24423:134::-;18796:6;;24483:4;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;-1:-1:-1;24499:20:0::1;:28:::0;;-1:-1:-1;;24499:28:0::1;::::0;;;24423:134;:::o;19531:244::-;18796:6;;-1:-1:-1;;;;;18796:6:0;304:10;18796:22;18788:67;;;;-1:-1:-1;;;18788:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19620:22:0;::::1;19612:73;;;::::0;-1:-1:-1;;;19612:73:0;;5279:2:1;19612:73:0::1;::::0;::::1;5261:21:1::0;5318:2;5298:18;;;5291:30;5357:34;5337:18;;;5330:62;-1:-1:-1;;;5408:18:1;;;5401:36;5454:19;;19612:73:0::1;5077:402:1::0;19612:73:0::1;19722:6;::::0;19701:38:::1;::::0;-1:-1:-1;;;;;19701:38:0;;::::1;::::0;19722:6:::1;::::0;19701:38:::1;::::0;19722:6:::1;::::0;19701:38:::1;19750:6;:17:::0;;-1:-1:-1;;;;;;19750:17:0::1;-1:-1:-1::0;;;;;19750:17:0;;;::::1;::::0;;;::::1;::::0;;19531:244::o;12234:381::-;-1:-1:-1;;;;;12370:19:0;;12362:68;;;;-1:-1:-1;;;12362:68:0;;5686:2:1;12362:68:0;;;5668:21:1;5725:2;5705:18;;;5698:30;5764:34;5744:18;;;5737:62;-1:-1:-1;;;5815:18:1;;;5808:34;5859:19;;12362:68:0;5484:400:1;12362:68:0;-1:-1:-1;;;;;12449:21:0;;12441:68;;;;-1:-1:-1;;;12441:68:0;;6091:2:1;12441:68:0;;;6073:21:1;6130:2;6110:18;;;6103:30;6169:34;6149:18;;;6142:62;-1:-1:-1;;;6220:18:1;;;6213:32;6262:19;;12441:68:0;5889:398:1;12441:68:0;-1:-1:-1;;;;;12523:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12575:32;;1595:25:1;;;12575:32:0;;1568:18:1;12575:32:0;;;;;;;;12234:381;;;:::o;25978:3823::-;-1:-1:-1;;;;;26110:18:0;;26102:68;;;;-1:-1:-1;;;26102:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26189:16:0;;26181:64;;;;-1:-1:-1;;;26181:64:0;;;;;;;:::i;:::-;18648:6;;-1:-1:-1;;;;;26270:15:0;;;18648:6;;26270:15;;:32;;-1:-1:-1;18648:6:0;;-1:-1:-1;;;;;26289:13:0;;;18648:6;;26289:13;26270:32;:47;;;-1:-1:-1;26306:11:0;;26270:47;26266:134;;;26334:33;26350:4;26356:2;26360:6;26334:15;:33::i;:::-;25978:3823;;;:::o;26266:134::-;26416:14;;;;26413:1730;;;18648:6;;-1:-1:-1;;;;;26468:15:0;;;18648:6;;26468:15;;;;:49;;-1:-1:-1;18648:6:0;;-1:-1:-1;;;;;26504:13:0;;;18648:6;;26504:13;;26468:49;:86;;;;-1:-1:-1;;;;;;26538:16:0;;;;26468:86;:128;;;;-1:-1:-1;;;;;;26575:21:0;;26589:6;26575:21;;26468:128;:158;;;;-1:-1:-1;26618:8:0;;-1:-1:-1;;;26618:8:0;;;;26617:9;26468:158;26446:1686;;;26664:13;;;;;;;26660:148;;-1:-1:-1;;;;;26709:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;26738:23:0;;;;;;:19;:23;;;;;;;;26709:52;26701:87;;;;-1:-1:-1;;;26701:87:0;;7304:2:1;26701:87:0;;;7286:21:1;7343:2;7323:18;;;7316:30;-1:-1:-1;;;7362:18:1;;;7355:52;7424:18;;26701:87:0;7102:346:1;26701:87:0;26967:20;;;;26963:423;;;18648:6;;-1:-1:-1;;;;;27015:13:0;;;18648:6;;27015:13;;;;:47;;;27046:15;-1:-1:-1;;;;;27032:30:0;:2;-1:-1:-1;;;;;27032:30:0;;;27015:47;:79;;;;-1:-1:-1;27080:13:0;;-1:-1:-1;;;;;27066:28:0;;;27080:13;;27066:28;;27015:79;27011:356;;;27159:9;27130:39;;;;:28;:39;;;;;;27172:12;-1:-1:-1;27122:140:0;;;;-1:-1:-1;;;27122:140:0;;7655:2:1;27122:140:0;;;7637:21:1;7694:2;7674:18;;;7667:30;7733:34;7713:18;;;7706:62;7804:34;7784:18;;;7777:62;-1:-1:-1;;;7855:19:1;;;7848:40;7905:19;;27122:140:0;7453:477:1;27122:140:0;27318:9;27289:39;;;;:28;:39;;;;;27331:12;27289:54;;27011:356;-1:-1:-1;;;;;27439:31:0;;;;;;:25;:31;;;;;;;;:56;;;;-1:-1:-1;;;;;;27475:20:0;;;;;;:16;:20;;;;;;;;27474:21;27439:56;27435:682;;;27542:11;;27532:6;:21;;27524:78;;;;-1:-1:-1;;;27524:78:0;;8137:2:1;27524:78:0;;;8119:21:1;8176:2;8156:18;;;8149:30;8215:34;8195:18;;;8188:62;-1:-1:-1;;;8266:18:1;;;8259:42;8318:19;;27524:78:0;7935:408:1;27524:78:0;27663:9;;-1:-1:-1;;;;;6121:18:0;;6094:7;6121:18;;;;;;;;;;;27637:22;;:6;:22;:::i;:::-;:35;;27629:67;;;;-1:-1:-1;;;27629:67:0;;8812:2:1;27629:67:0;;;8794:21:1;8851:2;8831:18;;;8824:30;-1:-1:-1;;;8870:18:1;;;8863:49;8929:18;;27629:67:0;8610:343:1;27629:67:0;27435:682;;;-1:-1:-1;;;;;27775:29:0;;;;;;:25;:29;;;;;;;;:56;;;;-1:-1:-1;;;;;;27809:22:0;;;;;;:16;:22;;;;;;;;27808:23;27775:56;27771:346;;;27878:11;;27868:6;:21;;27860:79;;;;-1:-1:-1;;;27860:79:0;;9160:2:1;27860:79:0;;;9142:21:1;9199:2;9179:18;;;9172:30;9238:34;9218:18;;;9211:62;-1:-1:-1;;;9289:18:1;;;9282:43;9342:19;;27860:79:0;8958:409:1;27771:346:0;-1:-1:-1;;;;;27986:20:0;;;;;;:16;:20;;;;;;;;27982:135;;28064:9;;-1:-1:-1;;;;;6121:18:0;;6094:7;6121:18;;;;;;;;;;;28038:22;;:6;:22;:::i;:::-;:35;;28030:67;;;;-1:-1:-1;;;28030:67:0;;8812:2:1;28030:67:0;;;8794:21:1;8851:2;8831:18;;;8824:30;-1:-1:-1;;;8870:18:1;;;8863:49;8929:18;;28030:67:0;8610:343:1;28030:67:0;28208:4;28159:28;6121:18;;;;;;;;;;;28273:17;;28302:179;;-1:-1:-1;;;28302:179:0;;-1:-1:-1;;;;;9695:15:1;;;28302:179:0;;;9677:34:1;9747:15;;;9727:18;;;9720:43;28225:26:0;9779:18:1;;;9772:34;28435:4:0;9822:18:1;;;9815:43;28455:15:0;9874:19:1;;;9867:35;28159:55:0;;-1:-1:-1;28273:17:0;;;;;28302:58;;9611:19:1;;28302:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28531:18:0;;28507:42;;;;;-1:-1:-1;28507:42:0;;-1:-1:-1;28579:35:0;;-1:-1:-1;28603:11:0;;;;;;;28579:35;:61;;;;-1:-1:-1;28632:8:0;;-1:-1:-1;;;28632:8:0;;;;28631:9;28579:61;:110;;;;-1:-1:-1;;;;;;28658:31:0;;;;;;:25;:31;;;;;;;;28657:32;28579:110;:153;;;;-1:-1:-1;;;;;;28707:25:0;;;;;;:19;:25;;;;;;;;28706:26;28579:153;:194;;;;-1:-1:-1;;;;;;28750:23:0;;;;;;:19;:23;;;;;;;;28749:24;28579:194;28561:328;;;28800:8;:15;;-1:-1:-1;;;;28800:15:0;-1:-1:-1;;;28800:15:0;;;28833:10;:8;:10::i;:::-;28861:8;:16;;-1:-1:-1;;;;28861:16:0;;;28561:328;28918:8;;-1:-1:-1;;;;;29028:25:0;;28902:12;29028:25;;;:19;:25;;;;;;28918:8;-1:-1:-1;;;28918:8:0;;;;;28917:9;;29028:25;;:52;;-1:-1:-1;;;;;;29057:23:0;;;;;;:19;:23;;;;;;;;29028:52;29025:99;;;-1:-1:-1;29107:5:0;29025:99;29137:12;29241:7;29238:509;;;-1:-1:-1;;;;;29292:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;29341:1;29325:13;;:17;29292:50;29288:304;;;29369:34;29399:3;29369:25;29380:13;;29369:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;29362:41;;29288:304;;;-1:-1:-1;;;;;29464:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;29514:1;29499:12;;:16;29464:51;29461:131;;;29543:33;29572:3;29543:24;29554:12;;29543:6;:10;;:24;;;;:::i;:33::-;29536:40;;29461:131;29612:8;;29609:95;;29644:44;29660:4;29674:6;29683:4;29644:15;:44::i;:::-;29721:14;29731:4;29721:14;;:::i;:::-;;;29238:509;29760:33;29776:4;29782:2;29786:6;29760:15;:33::i;:::-;26091:3710;;;;;25978:3823;;;:::o;14521:193::-;14607:7;14643:12;14635:6;;;;14627:29;;;;-1:-1:-1;;;14627:29:0;;;;;;;;:::i;:::-;-1:-1:-1;14667:9:0;14679:5;14683:1;14679;:5;:::i;:::-;14667:17;14521:193;-1:-1:-1;;;;;14521:193:0:o;13615:182::-;13673:7;;13705:5;13709:1;13705;:5;:::i;:::-;13693:17;;13734:1;13729;:6;;13721:46;;;;-1:-1:-1;;;13721:46:0;;10248:2:1;13721:46:0;;;10230:21:1;10287:2;10267:18;;;10260:30;10326:29;10306:18;;;10299:57;10373:18;;13721:46:0;10046:351:1;13721:46:0;13788:1;13615:182;-1:-1:-1;;;13615:182:0:o;25425:189::-;-1:-1:-1;;;;;25508:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;25508:39:0;;;;;;;;;;25566:40;;25508:39;;:31;25566:40;;;25425:189;;:::o;24791:178::-;24861:13;;24898:17;;-1:-1:-1;;;;;24861:13:0;;;;24885:44;;24861:13;;24898:17;-1:-1:-1;;24885:8:0;:44::i;:::-;-1:-1:-1;24940:11:0;:21;;;;;;;-1:-1:-1;;24940:21:0;;;;;;;;;24791:178::o;9798:575::-;-1:-1:-1;;;;;9938:20:0;;9930:70;;;;-1:-1:-1;;;9930:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10019:23:0;;10011:71;;;;-1:-1:-1;;;10011:71:0;;;;;;;:::i;:::-;10177;10199:6;10177:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10177:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;10157:17:0;;;:9;:17;;;;;;;;;;;:91;;;;10282:20;;;;;;;:32;;10307:6;10282:24;:32::i;:::-;-1:-1:-1;;;;;10259:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;10330:35;1595:25:1;;;10259:20:0;;10330:35;;;;;;1568:18:1;10330:35:0;1449:177:1;30938:432:0;31021:4;30977:23;6121:18;;;;;;;;;;;;31067:20;;;31064:34;;31090:7;;30938:432::o;31064:34::-;31132:18;;:23;;31153:2;31132:23;:::i;:::-;31114:15;:41;31111:111;;;31187:18;;:23;;31208:2;31187:23;:::i;:::-;31169:41;;31111:111;31235:33;31252:15;31235:16;:33::i;:::-;31305:17;;31297:65;;-1:-1:-1;;;;;31305:17:0;;;;31336:21;;31297:65;;;;31336:21;31305:17;31297:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30938:432:0:o;14974:473::-;15032:7;15277:1;15282;15277:6;15273:47;;-1:-1:-1;15307:1:0;15300:8;;15273:47;15333:9;15345:5;15349:1;15345;:5;:::i;:::-;15333:17;-1:-1:-1;15378:1:0;15369:5;15373:1;15333:17;15369:5;:::i;:::-;:10;15361:56;;;;-1:-1:-1;;;15361:56:0;;11209:2:1;15361:56:0;;;11191:21:1;11248:2;11228:18;;;11221:30;11287:34;11267:18;;;11260:62;-1:-1:-1;;;11338:18:1;;;11331:31;11379:19;;15361:56:0;11007:397:1;15924:132:0;15982:7;16009:39;16013:1;16016;16009:39;;;;;;;;;;;;;;;;;:3;:39::i;29807:594::-;29960:16;;;29974:1;29960:16;;;;;;;;29936:21;;29960:16;;;;;;;;;;-1:-1:-1;29960:16:0;29936:40;;30005:4;29987;29992:1;29987:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;29987:23:0;;;-1:-1:-1;;;;;29987:23:0;;;;;30031:15;-1:-1:-1;;;;;30031:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30021:4;30026:1;30021:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;30021:32:0;;;-1:-1:-1;;;;;30021:32:0;;;;;30067:62;30084:4;30099:15;30117:11;30067:8;:62::i;:::-;30169:224;;-1:-1:-1;;;30169:224:0;;-1:-1:-1;;;;;30169:15:0;:66;;;;:224;;30250:11;;30276:1;;30320:4;;30347;;30367:15;;30169:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29862:539;29807:594;:::o;16553:279::-;16639:7;16674:12;16667:5;16659:28;;;;-1:-1:-1;;;16659:28:0;;;;;;;;:::i;:::-;-1:-1:-1;16698:9:0;16710:5;16714:1;16710;:5;:::i;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;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:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:416::-;2806:6;2814;2867:2;2855:9;2846:7;2842:23;2838:32;2835:52;;;2883:1;2880;2873:12;2835:52;2922:9;2909:23;2941:31;2966:5;2941:31;:::i;:::-;2991:5;-1:-1:-1;3048:2:1;3033:18;;3020:32;3090:15;;3083:23;3071:36;;3061:64;;3121:1;3118;3111:12;3061:64;3144:7;3134:17;;;2741:416;;;;;:::o;3162:388::-;3230:6;3238;3291:2;3279:9;3270:7;3266:23;3262:32;3259:52;;;3307:1;3304;3297:12;3259:52;3346:9;3333:23;3365:31;3390:5;3365:31;:::i;:::-;3415:5;-1:-1:-1;3472:2:1;3457:18;;3444:32;3485:33;3444:32;3485:33;:::i;3555:380::-;3634:1;3630:12;;;;3677;;;3698:61;;3752:4;3744:6;3740:17;3730:27;;3698:61;3805:2;3797:6;3794:14;3774:18;3771:38;3768:161;;3851:10;3846:3;3842:20;3839:1;3832:31;3886:4;3883:1;3876:15;3914:4;3911:1;3904:15;3768:161;;3555:380;;;:::o;3940:356::-;4142:2;4124:21;;;4161:18;;;4154:30;4220:34;4215:2;4200:18;;4193:62;4287:2;4272:18;;3940:356::o;6292:401::-;6494:2;6476:21;;;6533:2;6513:18;;;6506:30;6572:34;6567:2;6552:18;;6545:62;-1:-1:-1;;;6638:2:1;6623:18;;6616:35;6683:3;6668:19;;6292:401::o;6698:399::-;6900:2;6882:21;;;6939:2;6919:18;;;6912:30;6978:34;6973:2;6958:18;;6951:62;-1:-1:-1;;;7044:2:1;7029:18;;7022:33;7087:3;7072:19;;6698:399::o;8348:127::-;8409:10;8404:3;8400:20;8397:1;8390:31;8440:4;8437:1;8430:15;8464:4;8461:1;8454:15;8480:125;8545:9;;;8566:10;;;8563:36;;;8579:18;;:::i;9913:128::-;9980:9;;;10001:11;;;9998:37;;;10015:18;;:::i;10402:168::-;10475:9;;;10506;;10523:15;;;10517:22;;10503:37;10493:71;;10544:18;;:::i;10785:217::-;10825:1;10851;10841:132;;10895:10;10890:3;10886:20;10883:1;10876:31;10930:4;10927:1;10920:15;10958:4;10955:1;10948:15;10841:132;-1:-1:-1;10987:9:1;;10785:217::o;11541:127::-;11602:10;11597:3;11593:20;11590:1;11583:31;11633:4;11630:1;11623:15;11657:4;11654:1;11647:15;11673:251;11743:6;11796:2;11784:9;11775:7;11771:23;11767:32;11764:52;;;11812:1;11809;11802:12;11764:52;11844:9;11838:16;11863:31;11888:5;11863:31;:::i;11929:980::-;12191:4;12239:3;12228:9;12224:19;12270:6;12259:9;12252:25;12296:2;12334:6;12329:2;12318:9;12314:18;12307:34;12377:3;12372:2;12361:9;12357:18;12350:31;12401:6;12436;12430:13;12467:6;12459;12452:22;12505:3;12494:9;12490:19;12483:26;;12544:2;12536:6;12532:15;12518:29;;12565:1;12575:195;12589:6;12586:1;12583:13;12575:195;;;12654:13;;-1:-1:-1;;;;;12650:39:1;12638:52;;12745:15;;;;12710:12;;;;12686:1;12604:9;12575:195;;;-1:-1:-1;;;;;;;12826:32:1;;;;12821:2;12806:18;;12799:60;-1:-1:-1;;;12890:3:1;12875:19;12868:35;12787:3;11929:980;-1:-1:-1;;;11929:980:1:o
Swarm Source
ipfs://d6d46d671fbdad42639cec5e31596b554ca4f637fd2d80683523cdac9bcb13f1
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.