ERC-20
Overview
Max Total Supply
100,000,000 TPUAi
Holders
64
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
474,958.107465047675194783 TPUAiValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TPUAi
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-26 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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 default value returned by this function, unless * it's 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer( address to, uint256 amount ) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /// Uniswap factory interface interface IFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } /// Uniswap Router interface interface IUniswapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function getAmountsOut( uint256 amountIn, address[] calldata path ) external view returns (uint256[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable; } /// @title TPUAi: ERC20 token with 5/5 tax contract TPUAi is ERC20, Ownable { /// @notice MAX SUPPLY 100 million tokens uint256 private constant MAX_SUPPLY = 100_000_000 * 1e18; /// @notice max buy/sell per tx uint256 maxAmountPerTx = (MAX_SUPPLY * 12) / 1000; // 1.2% of the supply /// @notice max wallet amount uint256 maxWalletAmount = (MAX_SUPPLY * 3) / 100; // 3% of the supply /// @notice marketing wallet address address public marketingWallet = address(0x52Cb9E9D202D439EA1545decA2bB962A5DbC3a9b); /// @notice development wallet address address public developmentWallet = address(0x991F58014E46320659671b4A75a686Bda97f16cb); /// @notice lp receiver wallet address public lpReceiverWallet = msg.sender; /// @notice uniswapV2Router IUniswapRouter public immutable uniswapV2Router; /// @notice uniswapPair address public immutable uniswapPair; /// fees struct struct BuyFee { uint256 marketing; uint256 development; uint256 autoLP; } struct SellFee { uint256 marketing; uint256 development; uint256 autoLP; } /// @notice buyFee BuyFee public buyFee; /// @notice sellFee SellFee public sellFee; /// @notice total buy fee uint256 public totalBuyFee; /// @notice total sell fee uint256 public totalSellFee; /// @notice swapping status bool swapping = false; /// @notice high tax mode status bool initialHighTaxMode = true; /// @notice first buy time uint256 firstTrade; /// @notice manage exclude / incclude from fees mapping(address => bool) isExcludedFromFees; /// errors error OnlyMarketingWallet(); error MaxBuyPerTxExceeds(); error MaxSellPerTxExceeds(); error MinOnePercent(); error EthClaimFailed(); error ZeroAddress(); constructor() ERC20("TPUAi", "TPUAi") { uniswapV2Router = IUniswapRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapPair = IFactory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); buyFee.marketing = 3; buyFee.development = 1; buyFee.autoLP = 1; totalBuyFee = 5; sellFee.marketing = 3; sellFee.development = 1; sellFee.autoLP = 1; totalSellFee = 5; isExcludedFromFees[owner()] = true; isExcludedFromFees[address(this)] = true; isExcludedFromFees[marketingWallet] = true; isExcludedFromFees[developmentWallet] = true; _mint(msg.sender, MAX_SUPPLY); } receive() external payable {} /// @dev claim any erc20 token, accidently sent to token contract /// @param token: token to rescue /// @param amount: amount to rescue /// Requirements - /// only marketing wallet can rescue stucked tokens function claimStuckedERC20(address token, uint256 amount) external { if (msg.sender != marketingWallet) { revert OnlyMarketingWallet(); } // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, marketingWallet, amount) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "BARC: TOKEN_CLAIM_FAILED" ); } /// @dev claim stucked eth function claimStuckedEth(address wallet) external { if (msg.sender != marketingWallet) { revert OnlyMarketingWallet(); } (bool sent, ) = wallet.call{value: address(this).balance}(""); if (!sent) { revert EthClaimFailed(); } } /// @dev exclude or include a address from / to fees /// @param user: user address to exclude or include /// @param excluded: true to exclude, false to include function exlcudeFromFees(address user, bool excluded) external onlyOwner { isExcludedFromFees[user] = excluded; } /// @dev update max buy/ sell amount per tx globally /// @param _percent: pecent of total supply /// Requirements - /// must be 1 or more function updateMaxTxAmount(uint256 _percent) external onlyOwner { if (_percent < 1) { revert MinOnePercent(); } maxAmountPerTx = (totalSupply() * _percent) / 100; } /// @dev update max wallet amount /// /// @param _percent: pecent of total supply /// Requirements - /// must be 1 or more function updateMaxWalletAmount(uint256 _percent) external onlyOwner { if (_percent < 1) { revert MinOnePercent(); } maxWalletAmount = (totalSupply() * _percent) / 100; } /// @dev restore normal tax globally function restoreDefaultTax() external { require(msg.sender == owner() || msg.sender == marketingWallet); initialHighTaxMode = false; } /// @dev update buy tax globally /// @param _marketing: new marketing tax on buy /// @param _dev: new wei wu tax on buy /// @param _lp: new lp tax on buy function updateBuyTax( uint256 _marketing, uint256 _dev, uint256 _lp ) external onlyOwner { if (_marketing + _dev + _lp <= 10) { buyFee.marketing = _marketing; buyFee.development = _dev; buyFee.autoLP = _lp; totalBuyFee = _marketing + _lp + _dev; } } /// @dev update sell tax globally /// @param _marketing: new marketing tax on sell /// @param _dev: new wei wu tax on sell /// @param _lp: new lp tax on sell function updateSellTax( uint256 _marketing, uint256 _dev, uint256 _lp ) external onlyOwner { if (_marketing + _dev + _lp <= 10) { sellFee.marketing = _marketing; sellFee.development = _dev; sellFee.autoLP = _lp; totalSellFee = _marketing + _lp + _dev; } } /// @dev update fee wallets globally /// @param _mkt: new marketing wallet /// @param _dev: new development wallet /// @param _lpReceiver: new lp receiver wallet function updateWallets( address _mkt, address _dev, address _lpReceiver ) external onlyOwner { if (_mkt == address(0) || _dev == address(0)) { revert ZeroAddress(); } marketingWallet = _mkt; developmentWallet = _dev; lpReceiverWallet = _lpReceiver; } /// @notice manage token transfer and fees /// high fees is applicable for first 30 minutes from first buy /// after 30 minutes / if owner reset fees, will restore to 5/5 /// @dev See {ERC20-_transfer} function _transfer( address from, address to, uint256 amount ) internal override { bool takeFee = true; if (isExcludedFromFees[from] || isExcludedFromFees[to]) { takeFee = false; } if (takeFee) { uint256 fee; if (from == uniswapPair) { if (amount > maxAmountPerTx) { revert MaxBuyPerTxExceeds(); } if (firstTrade == 0) { firstTrade = block.timestamp; } if (totalBuyFee > 0) { fee = (amount * totalBuyFee) / 100; if ( initialHighTaxMode && block.timestamp - firstTrade < 30 minutes ) { fee = fee * 4; } } } else if (to == uniswapPair) { if (amount > maxAmountPerTx) { revert MaxSellPerTxExceeds(); } if (totalSellFee > 0) { fee = (amount * totalSellFee) / 100; if ( initialHighTaxMode && block.timestamp - firstTrade < 30 minutes ) { fee = fee * 4; } } } amount = amount - fee; if (fee > 0) { super._transfer(from, address(this), fee); } } uint256 contractBalance = balanceOf(address(this)); bool canSwap = contractBalance >= 100e18 && from != uniswapPair && (!isExcludedFromFees[from]) && !swapping; if (canSwap) { swapping = true; swapAndLiquify(contractBalance); swapping = false; } super._transfer(from, to, amount); } /// @notice swap and liquify /// transfer collected tax to designated addresses as per there share function swapAndLiquify(uint256 tokens) private { uint256 total = totalBuyFee + totalSellFee; uint256 lpHalf = ((buyFee.autoLP + sellFee.autoLP) * tokens) / (total * 2); uint256 tokensForSwap = (tokens - lpHalf); uint256 marketingTokens = (tokens * (buyFee.marketing + sellFee.marketing)) / total; swapTokensForETH(tokensForSwap); uint256 ethBalance = address(this).balance; uint256 lpEth = (ethBalance * lpHalf) / tokensForSwap; uint256 marketingEth = (ethBalance * marketingTokens) / tokensForSwap; if (lpEth > 0 && lpHalf > 0) { addLiquidity(lpEth, lpHalf); } if (marketingEth > 0) { bool sent; (sent, ) = marketingWallet.call{value: address(this).balance}(""); } if (address(this).balance > 0) { bool sent; (sent, ) = developmentWallet.call{value: address(this).balance}(""); } } ///@notice swap the tax tokens for eth and send to marketing wallet function swapTokensForETH(uint256 tokenAmount) private { // generate the uniswap pair path of token -> wbnb address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); if (allowance(address(this), address(uniswapV2Router)) < tokenAmount) { _approve( address(this), address(uniswapV2Router), type(uint256).max ); } uint256 out = uniswapV2Router.getAmountsOut(tokenAmount, path)[1]; // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, (out * 80) / 100, //20% Slippage path, address(this), block.timestamp + 360 ); } /// add liquidity function addLiquidity(uint256 ethAmount, uint256 tokens) private { uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokens, 0, 0, lpReceiverWallet, block.timestamp + 360 ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EthClaimFailed","type":"error"},{"inputs":[],"name":"MaxBuyPerTxExceeds","type":"error"},{"inputs":[],"name":"MaxSellPerTxExceeds","type":"error"},{"inputs":[],"name":"MinOnePercent","type":"error"},{"inputs":[],"name":"OnlyMarketingWallet","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"autoLP","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStuckedERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"claimStuckedEth","outputs":[],"stateMutability":"nonpayable","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"exlcudeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpReceiverWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restoreDefaultTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"autoLP","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_lp","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_lp","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mkt","type":"address"},{"internalType":"address","name":"_dev","type":"address"},{"internalType":"address","name":"_lpReceiver","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526103e86200001f6a52b7d2dcc80cd2e4000000600c62000496565b6200002b9190620004b6565b6006556064620000486a52b7d2dcc80cd2e4000000600362000496565b620000549190620004b6565b600755600880546001600160a01b03199081167352cb9e9d202d439ea1545deca2bb962a5dbc3a9b1790915560098054821673991f58014e46320659671b4a75a686bda97f16cb179055600a8054909116331790556013805461ffff1916610100179055348015620000c4575f80fd5b50604080518082018252600580825264545055416960d81b602080840182905284518086019095529184529083015290600362000102838262000575565b50600462000111828262000575565b5050506200012e620001286200036460201b60201c565b62000368565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000182573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a891906200063d565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021c91906200063d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000267573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028d91906200063d565b6001600160a01b031660a0526003600b8190556001600c819055600d81905560056011819055600e92909255600f819055601081905560129190915560155f620002df6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260159093528183208054851660019081179091556008548216845282842080548616821790556009549091168352912080549092161790556200035e336a52b7d2dcc80cd2e4000000620003b9565b62000682565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200042791906200066c565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620004b057620004b062000482565b92915050565b5f82620004d157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004ff57607f821691505b6020821081036200051e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200047d575f81815260208120601f850160051c810160208610156200054c5750805b601f850160051c820191505b818110156200056d5782815560010162000558565b505050505050565b81516001600160401b03811115620005915762000591620004d6565b620005a981620005a28454620004ea565b8462000524565b602080601f831160018114620005df575f8415620005c75750858301515b5f19600386901b1c1916600185901b1785556200056d565b5f85815260208120601f198616915b828110156200060f57888601518255948401946001909101908401620005ee565b50858210156200062d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200064e575f80fd5b81516001600160a01b038116811462000665575f80fd5b9392505050565b80820180821115620004b057620004b062000482565b60805160a051611c98620006e35f395f81816105b801528181610ea501528181610f71015261106d01525f8181610293015281816114eb015281816115a3015281816115d301528181611612015281816116a8015261175c0152611c985ff3fe6080604052600436106101de575f3560e01c806370a08231116100fd578063a0a485ca11610092578063c18bc19511610062578063c18bc19514610588578063c816841b146105a7578063dd62ed3e146105da578063f2fde38b146105f9575f80fd5b8063a0a485ca1461050c578063a457c2d71461052b578063a9059cbb1461054a578063c04a541414610569575f80fd5b8063877b6eec116100cd578063877b6eec146104a75780638da5cb5b146104c657806395d89b41146104e35780639d9241ec146104f7575f80fd5b806370a0823114610421578063715018a61461045557806375f0a874146104695780637a20d3da14610488575f80fd5b806327be21d611610173578063395093511161014357806339509351146103b057806347062402146103cf57806359b107b9146103ed5780636256d18114610402575f80fd5b806327be21d6146103295780632b14ca561461033d5780632fb97b3714610376578063313ce56714610395575f80fd5b80631694505e116101ae5780631694505e146102825780631706fbc5146102cd57806318160ddd146102ec57806323b872dd1461030a575f80fd5b806305f93650146101e957806306fdde031461020a578063095ea7b314610234578063147c9f6d14610263575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b50610208610203366004611801565b610618565b005b348015610215575f80fd5b5061021e610669565b60405161022b919061184c565b60405180910390f35b34801561023f575f80fd5b5061025361024e366004611892565b6106f9565b604051901515815260200161022b565b34801561026e575f80fd5b5061020861027d3660046118bc565b610712565b34801561028d575f80fd5b506102b57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161022b565b3480156102d8575f80fd5b506102086102e7366004611911565b610794565b3480156102f7575f80fd5b506002545b60405190815260200161022b565b348015610315575f80fd5b50610253610324366004611948565b6107c6565b348015610334575f80fd5b506102086107e9565b348015610348575f80fd5b50600e54600f5460105461035b92919083565b6040805193845260208401929092529082015260600161022b565b348015610381575f80fd5b50600a546102b5906001600160a01b031681565b3480156103a0575f80fd5b506040516012815260200161022b565b3480156103bb575f80fd5b506102536103ca366004611892565b610821565b3480156103da575f80fd5b50600b54600c54600d5461035b92919083565b3480156103f8575f80fd5b506102fc60115481565b34801561040d575f80fd5b5061020861041c366004611986565b610842565b34801561042c575f80fd5b506102fc61043b36600461199d565b6001600160a01b03165f9081526020819052604090205490565b348015610460575f80fd5b50610208610892565b348015610474575f80fd5b506008546102b5906001600160a01b031681565b348015610493575f80fd5b506102086104a2366004611892565b6108a5565b3480156104b2575f80fd5b506102086104c136600461199d565b6109ed565b3480156104d1575f80fd5b506005546001600160a01b03166102b5565b3480156104ee575f80fd5b5061021e610a8c565b348015610502575f80fd5b506102fc60125481565b348015610517575f80fd5b50610208610526366004611801565b610a9b565b348015610536575f80fd5b50610253610545366004611892565b610aeb565b348015610555575f80fd5b50610253610564366004611892565b610b65565b348015610574575f80fd5b506009546102b5906001600160a01b031681565b348015610593575f80fd5b506102086105a2366004611986565b610b72565b3480156105b2575f80fd5b506102b57f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e5575f80fd5b506102fc6105f43660046119bf565b610bc2565b348015610604575f80fd5b5061020861061336600461199d565b610bec565b610620610c65565b600a8161062d84866119ff565b61063791906119ff565b1161066457600e839055600f82905560108190558161065682856119ff565b61066091906119ff565b6012555b505050565b60606003805461067890611a12565b80601f01602080910402602001604051908101604052809291908181526020018280546106a490611a12565b80156106ef5780601f106106c6576101008083540402835291602001916106ef565b820191905f5260205f20905b8154815290600101906020018083116106d257829003601f168201915b5050505050905090565b5f33610706818585610cbf565b60019150505b92915050565b61071a610c65565b6001600160a01b038316158061073757506001600160a01b038216155b156107555760405163d92e233d60e01b815260040160405180910390fd5b600880546001600160a01b039485166001600160a01b0319918216179091556009805493851693821693909317909255600a8054919093169116179055565b61079c610c65565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f336107d3858285610de2565b6107de858585610e54565b506001949350505050565b6005546001600160a01b031633148061080c57506008546001600160a01b031633145b610814575f80fd5b6013805461ff0019169055565b5f336107068185856108338383610bc2565b61083d91906119ff565b610cbf565b61084a610c65565b600181101561086c5760405163f921e6df60e01b815260040160405180910390fd5b60648161087860025490565b6108829190611a4a565b61088c9190611a61565b60065550565b61089a610c65565b6108a35f611111565b565b6008546001600160a01b031633146108d05760405163e734c0b760e01b815260040160405180910390fd5b600854604080516001600160a01b039283166024820152604480820185905282518083039091018152606490910182526020810180516001600160e01b031663a9059cbb60e01b17905290515f9283929086169161092e9190611a80565b5f604051808303815f865af19150503d805f8114610967576040519150601f19603f3d011682016040523d82523d5f602084013e61096c565b606091505b50915091508180156109965750805115806109965750808060200190518101906109969190611a9b565b6109e75760405162461bcd60e51b815260206004820152601860248201527f424152433a20544f4b454e5f434c41494d5f4641494c4544000000000000000060448201526064015b60405180910390fd5b50505050565b6008546001600160a01b03163314610a185760405163e734c0b760e01b815260040160405180910390fd5b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a61576040519150601f19603f3d011682016040523d82523d5f602084013e610a66565b606091505b5050905080610a8857604051631b9cb44960e31b815260040160405180910390fd5b5050565b60606004805461067890611a12565b610aa3610c65565b600a81610ab084866119ff565b610aba91906119ff565b1161066457600b839055600c829055600d81905581610ad982856119ff565b610ae391906119ff565b601155505050565b5f3381610af88286610bc2565b905083811015610b585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109de565b6107de8286868403610cbf565b5f33610706818585610e54565b610b7a610c65565b6001811015610b9c5760405163f921e6df60e01b815260040160405180910390fd5b606481610ba860025490565b610bb29190611a4a565b610bbc9190611a61565b60075550565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610bf4610c65565b6001600160a01b038116610c595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b610c6281611111565b50565b6005546001600160a01b031633146108a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6001600160a01b038316610d215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b6001600160a01b038216610d825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109de565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610ded8484610bc2565b90505f1981146109e75781811015610e475760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109de565b6109e78484848403610cbf565b6001600160a01b0383165f9081526015602052604090205460019060ff1680610e9457506001600160a01b0383165f9081526015602052604090205460ff165b15610e9c57505f5b8015611047575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610f6f57600654831115610eff5760405163acdd04e360e01b815260040160405180910390fd5b6014545f03610f0d57426014555b60115415610f6a57606460115484610f259190611a4a565b610f2f9190611a61565b601354909150610100900460ff168015610f57575061070860145442610f559190611ab6565b105b15610f6a57610f67816004611a4a565b90505b611028565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361102857600654831115610fcb57604051630992619960e31b815260040160405180910390fd5b6012541561102857606460125484610fe39190611a4a565b610fed9190611a61565b601354909150610100900460ff1680156110155750610708601454426110139190611ab6565b105b1561102857611025816004611a4a565b90505b6110328184611ab6565b9250801561104557611045853083611162565b505b305f908152602081905260408120549068056bc75e2d6310000082108015906110a257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b80156110c657506001600160a01b0386165f9081526015602052604090205460ff16155b80156110d5575060135460ff16155b905080156110fe576013805460ff191660011790556110f382611304565b6013805460ff191690555b611109868686611162565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166111c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109de565b6001600160a01b0382166112285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109de565b6001600160a01b0383165f908152602081905260409020548181101561129f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109de565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109e7565b5f60125460115461131591906119ff565b90505f611323826002611a4a565b601054600d548591611334916119ff565b61133e9190611a4a565b6113489190611a61565b90505f6113558285611ab6565b600e54600b549192505f91859161136b916119ff565b6113759087611a4a565b61137f9190611a61565b905061138a82611496565b475f836113978684611a4a565b6113a19190611a61565b90505f846113af8585611a4a565b6113b99190611a61565b90505f821180156113c957505f86115b156113d8576113d8828761174f565b8015611432576008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611428576040519150601f19603f3d011682016040523d82523d5f602084013e61142d565b606091505b505050505b471561148c576009546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611482576040519150601f19603f3d011682016040523d82523d5f602084013e611487565b606091505b505050505b5050505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114c9576114c9611add565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611545573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115699190611af1565b8160018151811061157c5761157c611add565b60200260200101906001600160a01b031690816001600160a01b031681525050816115c7307f0000000000000000000000000000000000000000000000000000000000000000610bc2565b10156115f9576115f9307f00000000000000000000000000000000000000000000000000000000000000005f19610cbf565b60405163d06ca61f60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f906116499086908690600401611b4e565b5f60405180830381865afa158015611663573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261168a9190810190611b6e565b60018151811061169c5761169c611add565b602002602001015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478460648460506116e59190611a4a565b6116ef9190611a61565b85306116fd426101686119ff565b6040518663ffffffff1660e01b815260040161171d959493929190611c27565b5f604051808303815f87803b158015611734575f80fd5b505af1158015611746573d5f803e3d5ffd5b50505050505050565b600a546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163f305d719918591309186915f9182911661179b426101686119ff565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4015f604051808303818588803b158015611734575f80fd5b5f805f60608486031215611813575f80fd5b505081359360208301359350604090920135919050565b5f5b8381101561184457818101518382015260200161182c565b50505f910152565b602081525f825180602084015261186a81604085016020870161182a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c62575f80fd5b5f80604083850312156118a3575f80fd5b82356118ae8161187e565b946020939093013593505050565b5f805f606084860312156118ce575f80fd5b83356118d98161187e565b925060208401356118e98161187e565b915060408401356118f98161187e565b809150509250925092565b8015158114610c62575f80fd5b5f8060408385031215611922575f80fd5b823561192d8161187e565b9150602083013561193d81611904565b809150509250929050565b5f805f6060848603121561195a575f80fd5b83356119658161187e565b925060208401356119758161187e565b929592945050506040919091013590565b5f60208284031215611996575f80fd5b5035919050565b5f602082840312156119ad575f80fd5b81356119b88161187e565b9392505050565b5f80604083850312156119d0575f80fd5b82356119db8161187e565b9150602083013561193d8161187e565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561070c5761070c6119eb565b600181811c90821680611a2657607f821691505b602082108103611a4457634e487b7160e01b5f52602260045260245ffd5b50919050565b808202811582820484141761070c5761070c6119eb565b5f82611a7b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8251611a9181846020870161182a565b9190910192915050565b5f60208284031215611aab575f80fd5b81516119b881611904565b8181038181111561070c5761070c6119eb565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b01575f80fd5b81516119b88161187e565b5f8151808452602080850194508084015f5b83811015611b435781516001600160a01b031687529582019590820190600101611b1e565b509495945050505050565b828152604060208201525f611b666040830184611b0c565b949350505050565b5f6020808385031215611b7f575f80fd5b825167ffffffffffffffff80821115611b96575f80fd5b818501915085601f830112611ba9575f80fd5b815181811115611bbb57611bbb611ac9565b8060051b604051601f19603f83011681018181108582111715611be057611be0611ac9565b604052918252848201925083810185019188831115611bfd575f80fd5b938501935b82851015611c1b57845184529385019392850192611c02565b98975050505050505050565b85815284602082015260a060408201525f611c4560a0830186611b0c565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122064a4348cdd647567af893d35e5b94b67fd8132f7441ee4fc620b276d46a2a7c864736f6c63430008150033
Deployed Bytecode
0x6080604052600436106101de575f3560e01c806370a08231116100fd578063a0a485ca11610092578063c18bc19511610062578063c18bc19514610588578063c816841b146105a7578063dd62ed3e146105da578063f2fde38b146105f9575f80fd5b8063a0a485ca1461050c578063a457c2d71461052b578063a9059cbb1461054a578063c04a541414610569575f80fd5b8063877b6eec116100cd578063877b6eec146104a75780638da5cb5b146104c657806395d89b41146104e35780639d9241ec146104f7575f80fd5b806370a0823114610421578063715018a61461045557806375f0a874146104695780637a20d3da14610488575f80fd5b806327be21d611610173578063395093511161014357806339509351146103b057806347062402146103cf57806359b107b9146103ed5780636256d18114610402575f80fd5b806327be21d6146103295780632b14ca561461033d5780632fb97b3714610376578063313ce56714610395575f80fd5b80631694505e116101ae5780631694505e146102825780631706fbc5146102cd57806318160ddd146102ec57806323b872dd1461030a575f80fd5b806305f93650146101e957806306fdde031461020a578063095ea7b314610234578063147c9f6d14610263575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b50610208610203366004611801565b610618565b005b348015610215575f80fd5b5061021e610669565b60405161022b919061184c565b60405180910390f35b34801561023f575f80fd5b5061025361024e366004611892565b6106f9565b604051901515815260200161022b565b34801561026e575f80fd5b5061020861027d3660046118bc565b610712565b34801561028d575f80fd5b506102b57f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161022b565b3480156102d8575f80fd5b506102086102e7366004611911565b610794565b3480156102f7575f80fd5b506002545b60405190815260200161022b565b348015610315575f80fd5b50610253610324366004611948565b6107c6565b348015610334575f80fd5b506102086107e9565b348015610348575f80fd5b50600e54600f5460105461035b92919083565b6040805193845260208401929092529082015260600161022b565b348015610381575f80fd5b50600a546102b5906001600160a01b031681565b3480156103a0575f80fd5b506040516012815260200161022b565b3480156103bb575f80fd5b506102536103ca366004611892565b610821565b3480156103da575f80fd5b50600b54600c54600d5461035b92919083565b3480156103f8575f80fd5b506102fc60115481565b34801561040d575f80fd5b5061020861041c366004611986565b610842565b34801561042c575f80fd5b506102fc61043b36600461199d565b6001600160a01b03165f9081526020819052604090205490565b348015610460575f80fd5b50610208610892565b348015610474575f80fd5b506008546102b5906001600160a01b031681565b348015610493575f80fd5b506102086104a2366004611892565b6108a5565b3480156104b2575f80fd5b506102086104c136600461199d565b6109ed565b3480156104d1575f80fd5b506005546001600160a01b03166102b5565b3480156104ee575f80fd5b5061021e610a8c565b348015610502575f80fd5b506102fc60125481565b348015610517575f80fd5b50610208610526366004611801565b610a9b565b348015610536575f80fd5b50610253610545366004611892565b610aeb565b348015610555575f80fd5b50610253610564366004611892565b610b65565b348015610574575f80fd5b506009546102b5906001600160a01b031681565b348015610593575f80fd5b506102086105a2366004611986565b610b72565b3480156105b2575f80fd5b506102b57f0000000000000000000000005e1f2b7d0787e6203fafa59f7b7190d3ff53af1681565b3480156105e5575f80fd5b506102fc6105f43660046119bf565b610bc2565b348015610604575f80fd5b5061020861061336600461199d565b610bec565b610620610c65565b600a8161062d84866119ff565b61063791906119ff565b1161066457600e839055600f82905560108190558161065682856119ff565b61066091906119ff565b6012555b505050565b60606003805461067890611a12565b80601f01602080910402602001604051908101604052809291908181526020018280546106a490611a12565b80156106ef5780601f106106c6576101008083540402835291602001916106ef565b820191905f5260205f20905b8154815290600101906020018083116106d257829003601f168201915b5050505050905090565b5f33610706818585610cbf565b60019150505b92915050565b61071a610c65565b6001600160a01b038316158061073757506001600160a01b038216155b156107555760405163d92e233d60e01b815260040160405180910390fd5b600880546001600160a01b039485166001600160a01b0319918216179091556009805493851693821693909317909255600a8054919093169116179055565b61079c610c65565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f336107d3858285610de2565b6107de858585610e54565b506001949350505050565b6005546001600160a01b031633148061080c57506008546001600160a01b031633145b610814575f80fd5b6013805461ff0019169055565b5f336107068185856108338383610bc2565b61083d91906119ff565b610cbf565b61084a610c65565b600181101561086c5760405163f921e6df60e01b815260040160405180910390fd5b60648161087860025490565b6108829190611a4a565b61088c9190611a61565b60065550565b61089a610c65565b6108a35f611111565b565b6008546001600160a01b031633146108d05760405163e734c0b760e01b815260040160405180910390fd5b600854604080516001600160a01b039283166024820152604480820185905282518083039091018152606490910182526020810180516001600160e01b031663a9059cbb60e01b17905290515f9283929086169161092e9190611a80565b5f604051808303815f865af19150503d805f8114610967576040519150601f19603f3d011682016040523d82523d5f602084013e61096c565b606091505b50915091508180156109965750805115806109965750808060200190518101906109969190611a9b565b6109e75760405162461bcd60e51b815260206004820152601860248201527f424152433a20544f4b454e5f434c41494d5f4641494c4544000000000000000060448201526064015b60405180910390fd5b50505050565b6008546001600160a01b03163314610a185760405163e734c0b760e01b815260040160405180910390fd5b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a61576040519150601f19603f3d011682016040523d82523d5f602084013e610a66565b606091505b5050905080610a8857604051631b9cb44960e31b815260040160405180910390fd5b5050565b60606004805461067890611a12565b610aa3610c65565b600a81610ab084866119ff565b610aba91906119ff565b1161066457600b839055600c829055600d81905581610ad982856119ff565b610ae391906119ff565b601155505050565b5f3381610af88286610bc2565b905083811015610b585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109de565b6107de8286868403610cbf565b5f33610706818585610e54565b610b7a610c65565b6001811015610b9c5760405163f921e6df60e01b815260040160405180910390fd5b606481610ba860025490565b610bb29190611a4a565b610bbc9190611a61565b60075550565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610bf4610c65565b6001600160a01b038116610c595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b610c6281611111565b50565b6005546001600160a01b031633146108a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6001600160a01b038316610d215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b6001600160a01b038216610d825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109de565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610ded8484610bc2565b90505f1981146109e75781811015610e475760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109de565b6109e78484848403610cbf565b6001600160a01b0383165f9081526015602052604090205460019060ff1680610e9457506001600160a01b0383165f9081526015602052604090205460ff165b15610e9c57505f5b8015611047575f7f0000000000000000000000005e1f2b7d0787e6203fafa59f7b7190d3ff53af166001600160a01b0316856001600160a01b031603610f6f57600654831115610eff5760405163acdd04e360e01b815260040160405180910390fd5b6014545f03610f0d57426014555b60115415610f6a57606460115484610f259190611a4a565b610f2f9190611a61565b601354909150610100900460ff168015610f57575061070860145442610f559190611ab6565b105b15610f6a57610f67816004611a4a565b90505b611028565b7f0000000000000000000000005e1f2b7d0787e6203fafa59f7b7190d3ff53af166001600160a01b0316846001600160a01b03160361102857600654831115610fcb57604051630992619960e31b815260040160405180910390fd5b6012541561102857606460125484610fe39190611a4a565b610fed9190611a61565b601354909150610100900460ff1680156110155750610708601454426110139190611ab6565b105b1561102857611025816004611a4a565b90505b6110328184611ab6565b9250801561104557611045853083611162565b505b305f908152602081905260408120549068056bc75e2d6310000082108015906110a257507f0000000000000000000000005e1f2b7d0787e6203fafa59f7b7190d3ff53af166001600160a01b0316866001600160a01b031614155b80156110c657506001600160a01b0386165f9081526015602052604090205460ff16155b80156110d5575060135460ff16155b905080156110fe576013805460ff191660011790556110f382611304565b6013805460ff191690555b611109868686611162565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166111c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109de565b6001600160a01b0382166112285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109de565b6001600160a01b0383165f908152602081905260409020548181101561129f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109de565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109e7565b5f60125460115461131591906119ff565b90505f611323826002611a4a565b601054600d548591611334916119ff565b61133e9190611a4a565b6113489190611a61565b90505f6113558285611ab6565b600e54600b549192505f91859161136b916119ff565b6113759087611a4a565b61137f9190611a61565b905061138a82611496565b475f836113978684611a4a565b6113a19190611a61565b90505f846113af8585611a4a565b6113b99190611a61565b90505f821180156113c957505f86115b156113d8576113d8828761174f565b8015611432576008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611428576040519150601f19603f3d011682016040523d82523d5f602084013e61142d565b606091505b505050505b471561148c576009546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611482576040519150601f19603f3d011682016040523d82523d5f602084013e611487565b606091505b505050505b5050505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114c9576114c9611add565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611545573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115699190611af1565b8160018151811061157c5761157c611add565b60200260200101906001600160a01b031690816001600160a01b031681525050816115c7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d610bc2565b10156115f9576115f9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d5f19610cbf565b60405163d06ca61f60e01b81525f906001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063d06ca61f906116499086908690600401611b4e565b5f60405180830381865afa158015611663573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261168a9190810190611b6e565b60018151811061169c5761169c611add565b602002602001015190507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478460648460506116e59190611a4a565b6116ef9190611a61565b85306116fd426101686119ff565b6040518663ffffffff1660e01b815260040161171d959493929190611c27565b5f604051808303815f87803b158015611734575f80fd5b505af1158015611746573d5f803e3d5ffd5b50505050505050565b600a546001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169163f305d719918591309186915f9182911661179b426101686119ff565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4015f604051808303818588803b158015611734575f80fd5b5f805f60608486031215611813575f80fd5b505081359360208301359350604090920135919050565b5f5b8381101561184457818101518382015260200161182c565b50505f910152565b602081525f825180602084015261186a81604085016020870161182a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c62575f80fd5b5f80604083850312156118a3575f80fd5b82356118ae8161187e565b946020939093013593505050565b5f805f606084860312156118ce575f80fd5b83356118d98161187e565b925060208401356118e98161187e565b915060408401356118f98161187e565b809150509250925092565b8015158114610c62575f80fd5b5f8060408385031215611922575f80fd5b823561192d8161187e565b9150602083013561193d81611904565b809150509250929050565b5f805f6060848603121561195a575f80fd5b83356119658161187e565b925060208401356119758161187e565b929592945050506040919091013590565b5f60208284031215611996575f80fd5b5035919050565b5f602082840312156119ad575f80fd5b81356119b88161187e565b9392505050565b5f80604083850312156119d0575f80fd5b82356119db8161187e565b9150602083013561193d8161187e565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561070c5761070c6119eb565b600181811c90821680611a2657607f821691505b602082108103611a4457634e487b7160e01b5f52602260045260245ffd5b50919050565b808202811582820484141761070c5761070c6119eb565b5f82611a7b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8251611a9181846020870161182a565b9190910192915050565b5f60208284031215611aab575f80fd5b81516119b881611904565b8181038181111561070c5761070c6119eb565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b01575f80fd5b81516119b88161187e565b5f8151808452602080850194508084015f5b83811015611b435781516001600160a01b031687529582019590820190600101611b1e565b509495945050505050565b828152604060208201525f611b666040830184611b0c565b949350505050565b5f6020808385031215611b7f575f80fd5b825167ffffffffffffffff80821115611b96575f80fd5b818501915085601f830112611ba9575f80fd5b815181811115611bbb57611bbb611ac9565b8060051b604051601f19603f83011681018181108582111715611be057611be0611ac9565b604052918252848201925083810185019188831115611bfd575f80fd5b938501935b82851015611c1b57845184529385019392850192611c02565b98975050505050505050565b85815284602082015260a060408201525f611c4560a0830186611b0c565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122064a4348cdd647567af893d35e5b94b67fd8132f7441ee4fc620b276d46a2a7c864736f6c63430008150033
Deployed Bytecode Sourcemap
20998:11323:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26796:362;;;;;;;;;;-1:-1:-1;26796:362:0;;;;;:::i;:::-;;:::i;:::-;;8542:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10968:226;;;;;;;;;;-1:-1:-1;10968:226:0;;;;;:::i;:::-;;:::i;:::-;;;1612:14:1;;1605:22;1587:41;;1575:2;1560:18;10968:226:0;1447:187:1;27348:345:0;;;;;;;;;;-1:-1:-1;27348:345:0;;;;;:::i;:::-;;:::i;21764:47::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2359:32:1;;;2341:51;;2329:2;2314:18;21764:47:0;2173:225:1;24993:127:0;;;;;;;;;;-1:-1:-1;24993:127:0;;;;;:::i;:::-;;:::i;9671:108::-;;;;;;;;;;-1:-1:-1;9759:12:0;;9671:108;;;3059:25:1;;;3047:2;3032:18;9671:108:0;2913:177:1;11774:295:0;;;;;;;;;;-1:-1:-1;11774:295:0;;;;;:::i;:::-;;:::i;25912:157::-;;;;;;;;;;;;;:::i;22212:22::-;;;;;;;;;;-1:-1:-1;22212:22:0;;;;;;;;;;;;;;;;3758:25:1;;;3814:2;3799:18;;3792:34;;;;3842:18;;;3835:34;3746:2;3731:18;22212:22:0;3556:319:1;21680:44:0;;;;;;;;;;-1:-1:-1;21680:44:0;;;;-1:-1:-1;;;;;21680:44:0;;;9513:93;;;;;;;;;;-1:-1:-1;9513:93:0;;9596:2;4230:36:1;;4218:2;4203:18;9513:93:0;4088:184:1;12478:263:0;;;;;;;;;;-1:-1:-1;12478:263:0;;;;;:::i;:::-;;:::i;22160:20::-;;;;;;;;;;-1:-1:-1;22160:20:0;;;;;;;;;;;;22272:26;;;;;;;;;;;;;;;;25287:209;;;;;;;;;;-1:-1:-1;25287:209:0;;;;;:::i;:::-;;:::i;9842:143::-;;;;;;;;;;-1:-1:-1;9842:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9959:18:0;9932:7;9959:18;;;;;;;;;;;;9842:143;2557:103;;;;;;;;;;;;;:::i;21416:84::-;;;;;;;;;;-1:-1:-1;21416:84:0;;;;-1:-1:-1;;;;;21416:84:0;;;23943:526;;;;;;;;;;-1:-1:-1;23943:526:0;;;;;:::i;:::-;;:::i;24509:301::-;;;;;;;;;;-1:-1:-1;24509:301:0;;;;;:::i;:::-;;:::i;1916:87::-;;;;;;;;;;-1:-1:-1;1989:6:0;;-1:-1:-1;;;;;1989:6:0;1916:87;;8761:104;;;;;;;;;;;;;:::i;22337:27::-;;;;;;;;;;;;;;;;26252:357;;;;;;;;;;-1:-1:-1;26252:357:0;;;;;:::i;:::-;;:::i;13244:498::-;;;;;;;;;;-1:-1:-1;13244:498:0;;;;;:::i;:::-;;:::i;10191:218::-;;;;;;;;;;-1:-1:-1;10191:218:0;;;;;:::i;:::-;;:::i;21551:86::-;;;;;;;;;;-1:-1:-1;21551:86:0;;;;-1:-1:-1;;;;;21551:86:0;;;25648:214;;;;;;;;;;-1:-1:-1;25648:214:0;;;;;:::i;:::-;;:::i;21847:36::-;;;;;;;;;;;;;;;10472:176;;;;;;;;;;-1:-1:-1;10472:176:0;;;;;:::i;:::-;;:::i;2815:238::-;;;;;;;;;;-1:-1:-1;2815:238:0;;;;;:::i;:::-;;:::i;26796:362::-;1802:13;:11;:13::i;:::-;26961:2:::1;26954:3:::0;26934:17:::1;26947:4:::0;26934:10;:17:::1;:::i;:::-;:23;;;;:::i;:::-;:29;26930:221;;26980:7;:30:::0;;;27025:19;:26;;;27066:14;:20;;;27047:4;27116:16:::1;27083:3:::0;27000:10;27116:16:::1;:::i;:::-;:23;;;;:::i;:::-;27101:12;:38:::0;26930:221:::1;26796:362:::0;;;:::o;8542:100::-;8596:13;8629:5;8622:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8542:100;:::o;10968:226::-;11076:4;680:10;11132:32;680:10;11148:7;11157:6;11132:8;:32::i;:::-;11182:4;11175:11;;;10968:226;;;;;:::o;27348:345::-;1802:13;:11;:13::i;:::-;-1:-1:-1;;;;;27488:18:0;::::1;::::0;;:40:::1;;-1:-1:-1::0;;;;;;27510:18:0;::::1;::::0;27488:40:::1;27484:93;;;27552:13;;-1:-1:-1::0;;;27552:13:0::1;;;;;;;;;;;27484:93;27587:15;:22:::0;;-1:-1:-1;;;;;27587:22:0;;::::1;-1:-1:-1::0;;;;;;27587:22:0;;::::1;;::::0;;;27620:17:::1;:24:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;27655:16:::1;:30:::0;;;;;::::1;::::0;::::1;;::::0;;27348:345::o;24993:127::-;1802:13;:11;:13::i;:::-;-1:-1:-1;;;;;25077:24:0;;;::::1;;::::0;;;:18:::1;:24;::::0;;;;:35;;-1:-1:-1;;25077:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24993:127::o;11774:295::-;11905:4;680:10;11963:38;11979:4;680:10;11994:6;11963:15;:38::i;:::-;12012:27;12022:4;12028:2;12032:6;12012:9;:27::i;:::-;-1:-1:-1;12057:4:0;;11774:295;-1:-1:-1;;;;11774:295:0:o;25912:157::-;1989:6;;-1:-1:-1;;;;;1989:6:0;25969:10;:21;;:54;;-1:-1:-1;26008:15:0;;-1:-1:-1;;;;;26008:15:0;25994:10;:29;25969:54;25961:63;;;;;;26035:18;:26;;-1:-1:-1;;26035:26:0;;;25912:157::o;12478:263::-;12591:4;680:10;12647:64;680:10;12663:7;12700:10;12672:25;680:10;12663:7;12672:9;:25::i;:::-;:38;;;;:::i;:::-;12647:8;:64::i;25287:209::-;1802:13;:11;:13::i;:::-;25377:1:::1;25366:8;:12;25362:67;;;25402:15;;-1:-1:-1::0;;;25402:15:0::1;;;;;;;;;;;25362:67;25485:3;25473:8;25457:13;9759:12:::0;;;9671:108;25457:13:::1;:24;;;;:::i;:::-;25456:32;;;;:::i;:::-;25439:14;:49:::0;-1:-1:-1;25287:209:0:o;2557:103::-;1802:13;:11;:13::i;:::-;2622:30:::1;2649:1;2622:18;:30::i;:::-;2557:103::o:0;23943:526::-;24039:15;;-1:-1:-1;;;;;24039:15:0;24025:10;:29;24021:90;;24078:21;;-1:-1:-1;;;24078:21:0;;;;;;;;;;;24021:90;24284:15;;24249:59;;;-1:-1:-1;;;;;24284:15:0;;;24249:59;;;6323:51:1;6390:18;;;;6383:34;;;24249:59:0;;;;;;;;;;6296:18:1;;;;24249:59:0;;;;;;;-1:-1:-1;;;;;24249:59:0;-1:-1:-1;;;24249:59:0;;;24224:95;;-1:-1:-1;;;;24224:10:0;;;;:95;;24249:59;24224:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24188:131;;;;24352:7;:57;;;;-1:-1:-1;24364:11:0;;:16;;:44;;;24395:4;24384:24;;;;;;;;;;;;:::i;:::-;24330:131;;;;-1:-1:-1;;;24330:131:0;;7172:2:1;24330:131:0;;;7154:21:1;7211:2;7191:18;;;7184:30;7250:26;7230:18;;;7223:54;7294:18;;24330:131:0;;;;;;;;;24010:459;;23943:526;;:::o;24509:301::-;24588:15;;-1:-1:-1;;;;;24588:15:0;24574:10;:29;24570:90;;24627:21;;-1:-1:-1;;;24627:21:0;;;;;;;;;;;24570:90;24671:9;24686:6;-1:-1:-1;;;;;24686:11:0;24705:21;24686:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24670:61;;;24747:4;24742:61;;24775:16;;-1:-1:-1;;;24775:16:0;;;;;;;;;;;24742:61;24559:251;24509:301;:::o;8761:104::-;8817:13;8850:7;8843:14;;;;;:::i;26252:357::-;1802:13;:11;:13::i;:::-;26416:2:::1;26409:3:::0;26389:17:::1;26402:4:::0;26389:10;:17:::1;:::i;:::-;:23;;;;:::i;:::-;:29;26385:217;;26435:6;:29:::0;;;26479:18;:25;;;26519:13;:19;;;26500:4;26567:16:::1;26535:3:::0;26454:10;26567:16:::1;:::i;:::-;:23;;;;:::i;:::-;26553:11;:37:::0;26252:357;;;:::o;13244:498::-;13362:4;680:10;13362:4;13445:25;680:10;13462:7;13445:9;:25::i;:::-;13418:52;;13523:15;13503:16;:35;;13481:122;;;;-1:-1:-1;;;13481:122:0;;7735:2:1;13481:122:0;;;7717:21:1;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:1;;;7857:35;7909:19;;13481:122:0;7533:401:1;13481:122:0;13639:60;13648:5;13655:7;13683:15;13664:16;:34;13639:8;:60::i;10191:218::-;10295:4;680:10;10351:28;680:10;10368:2;10372:6;10351:9;:28::i;25648:214::-;1802:13;:11;:13::i;:::-;25742:1:::1;25731:8;:12;25727:67;;;25767:15;;-1:-1:-1::0;;;25767:15:0::1;;;;;;;;;;;25727:67;25851:3;25839:8;25823:13;9759:12:::0;;;9671:108;25823:13:::1;:24;;;;:::i;:::-;25822:32;;;;:::i;:::-;25804:15;:50:::0;-1:-1:-1;25648:214:0:o;10472:176::-;-1:-1:-1;;;;;10613:18:0;;;10586:7;10613:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10472:176::o;2815:238::-;1802:13;:11;:13::i;:::-;-1:-1:-1;;;;;2918:22:0;::::1;2896:110;;;::::0;-1:-1:-1;;;2896:110:0;;8141:2:1;2896:110:0::1;::::0;::::1;8123:21:1::0;8180:2;8160:18;;;8153:30;8219:34;8199:18;;;8192:62;-1:-1:-1;;;8270:18:1;;;8263:36;8316:19;;2896:110:0::1;7939:402:1::0;2896:110:0::1;3017:28;3036:8;3017:18;:28::i;:::-;2815:238:::0;:::o;2081:132::-;1989:6;;-1:-1:-1;;;;;1989:6:0;680:10;2145:23;2137:68;;;;-1:-1:-1;;;2137:68:0;;8548:2:1;2137:68:0;;;8530:21:1;;;8567:18;;;8560:30;8626:34;8606:18;;;8599:62;8678:18;;2137:68:0;8346:356:1;17370:380:0;-1:-1:-1;;;;;17506:19:0;;17498:68;;;;-1:-1:-1;;;17498:68:0;;8909:2:1;17498:68:0;;;8891:21:1;8948:2;8928:18;;;8921:30;8987:34;8967:18;;;8960:62;-1:-1:-1;;;9038:18:1;;;9031:34;9082:19;;17498:68:0;8707:400:1;17498:68:0;-1:-1:-1;;;;;17585:21:0;;17577:68;;;;-1:-1:-1;;;17577:68:0;;9314:2:1;17577:68:0;;;9296:21:1;9353:2;9333:18;;;9326:30;9392:34;9372:18;;;9365:62;-1:-1:-1;;;9443:18:1;;;9436:32;9485:19;;17577:68:0;9112:398:1;17577:68:0;-1:-1:-1;;;;;17658:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17710:32;;3059:25:1;;;17710:32:0;;3032:18:1;17710:32:0;;;;;;;17370:380;;;:::o;18041:502::-;18176:24;18203:25;18213:5;18220:7;18203:9;:25::i;:::-;18176:52;;-1:-1:-1;;18243:16:0;:37;18239:297;;18343:6;18323:16;:26;;18297:117;;;;-1:-1:-1;;;18297:117:0;;9717:2:1;18297:117:0;;;9699:21:1;9756:2;9736:18;;;9729:30;9795:31;9775:18;;;9768:59;9844:18;;18297:117:0;9515:353:1;18297:117:0;18458:51;18467:5;18474:7;18502:6;18483:16;:25;18458:8;:51::i;27939:2012::-;-1:-1:-1;;;;;28097:24:0;;28063:12;28097:24;;;:18;:24;;;;;;28078:4;;28097:24;;;:50;;-1:-1:-1;;;;;;28125:22:0;;;;;;:18;:22;;;;;;;;28097:50;28093:98;;;-1:-1:-1;28174:5:0;28093:98;28207:7;28203:1333;;;28231:11;28269;-1:-1:-1;;;;;28261:19:0;:4;-1:-1:-1;;;;;28261:19:0;;28257:1125;;28314:14;;28305:6;:23;28301:99;;;28360:20;;-1:-1:-1;;;28360:20:0;;;;;;;;;;;28301:99;28422:10;;28436:1;28422:15;28418:92;;28475:15;28462:10;:28;28418:92;28534:11;;:15;28530:326;;28605:3;28590:11;;28581:6;:20;;;;:::i;:::-;28580:28;;;;:::i;:::-;28661:18;;28574:34;;-1:-1:-1;28661:18:0;;;;;:88;;;;;28739:10;28726;;28708:15;:28;;;;:::i;:::-;:41;28661:88;28631:206;;;28806:7;:3;28812:1;28806:7;:::i;:::-;28800:13;;28631:206;28257:1125;;;28887:11;-1:-1:-1;;;;;28881:17:0;:2;-1:-1:-1;;;;;28881:17:0;;28877:505;;28932:14;;28923:6;:23;28919:100;;;28978:21;;-1:-1:-1;;;28978:21:0;;;;;;;;;;;28919:100;29043:12;;:16;29039:328;;29116:3;29100:12;;29091:6;:21;;;;:::i;:::-;29090:29;;;;:::i;:::-;29172:18;;29084:35;;-1:-1:-1;29172:18:0;;;;;:88;;;;;29250:10;29237;;29219:15;:28;;;;:::i;:::-;:41;29172:88;29142:206;;;29317:7;:3;29323:1;29317:7;:::i;:::-;29311:13;;29142:206;29407:12;29416:3;29407:6;:12;:::i;:::-;29398:21;-1:-1:-1;29440:7:0;;29436:89;;29468:41;29484:4;29498;29505:3;29468:15;:41::i;:::-;28216:1320;28203:1333;29590:4;29546:23;9959:18;;;;;;;;;;;;29643:6;29624:25;;;;;:61;;;29674:11;-1:-1:-1;;;;;29666:19:0;:4;-1:-1:-1;;;;;29666:19:0;;;29624:61;:105;;;;-1:-1:-1;;;;;;29704:24:0;;;;;;:18;:24;;;;;;;;29703:25;29624:105;:131;;;;-1:-1:-1;29747:8:0;;;;29746:9;29624:131;29609:146;;29770:7;29766:132;;;29794:8;:15;;-1:-1:-1;;29794:15:0;29805:4;29794:15;;;29824:31;29839:15;29824:14;:31::i;:::-;29870:8;:16;;-1:-1:-1;;29870:16:0;;;29766:132;29910:33;29926:4;29932:2;29936:6;29910:15;:33::i;:::-;28052:1899;;;27939:2012;;;:::o;3213:191::-;3306:6;;;-1:-1:-1;;;;;3323:17:0;;;-1:-1:-1;;;;;;3323:17:0;;;;;;;3356:40;;3306:6;;;3323:17;3306:6;;3356:40;;3287:16;;3356:40;3276:128;3213:191;:::o;14212:877::-;-1:-1:-1;;;;;14343:18:0;;14335:68;;;;-1:-1:-1;;;14335:68:0;;10208:2:1;14335:68:0;;;10190:21:1;10247:2;10227:18;;;10220:30;10286:34;10266:18;;;10259:62;-1:-1:-1;;;10337:18:1;;;10330:35;10382:19;;14335:68:0;10006:401:1;14335:68:0;-1:-1:-1;;;;;14422:16:0;;14414:64;;;;-1:-1:-1;;;14414:64:0;;10614:2:1;14414:64:0;;;10596:21:1;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:1;;;10736:33;10786:19;;14414:64:0;10412:399:1;14414:64:0;-1:-1:-1;;;;;14564:15:0;;14542:19;14564:15;;;;;;;;;;;14612:21;;;;14590:109;;;;-1:-1:-1;;;14590:109:0;;11018:2:1;14590:109:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:34;11076:18;;;11069:62;-1:-1:-1;;;11147:18:1;;;11140:36;11193:19;;14590:109:0;10816:402:1;14590:109:0;-1:-1:-1;;;;;14735:15:0;;;:9;:15;;;;;;;;;;;14753:20;;;14735:38;;14953:13;;;;;;;;;;:23;;;;;;15005:26;;3059:25:1;;;14953:13:0;;15005:26;;3032:18:1;15005:26:0;;;;;;;15044:37;26796:362;30068:1005;30127:13;30157:12;;30143:11;;:26;;;;:::i;:::-;30127:42;-1:-1:-1;30180:14:0;30257:9;30127:42;30265:1;30257:9;:::i;:::-;30215:14;;30199:13;;30233:6;;30199:30;;;:::i;:::-;30198:41;;;;:::i;:::-;30197:70;;;;:::i;:::-;30180:87;-1:-1:-1;30278:21:0;30303:15;30180:87;30303:6;:15;:::i;:::-;30399:7;:17;30380:6;:16;30278:41;;-1:-1:-1;30330:23:0;;30421:5;;30380:36;;;:::i;:::-;30357:60;;:6;:60;:::i;:::-;30356:70;;;;:::i;:::-;30330:96;;30437:31;30454:13;30437:16;:31::i;:::-;30500:21;30479:18;30572:13;30549:19;30562:6;30500:21;30549:19;:::i;:::-;30548:37;;;;:::i;:::-;30532:53;-1:-1:-1;30596:20:0;30652:13;30620:28;30633:15;30620:10;:28;:::i;:::-;30619:46;;;;:::i;:::-;30596:69;;30688:1;30680:5;:9;:23;;;;;30702:1;30693:6;:10;30680:23;30676:83;;;30720:27;30733:5;30740:6;30720:12;:27::i;:::-;30773:16;;30769:138;;30841:15;;:54;;30806:9;;-1:-1:-1;;;;;30841:15:0;;30869:21;;30806:9;30841:54;30806:9;30841:54;30869:21;30841:15;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;30769:138:0;30921:21;:25;30917:149;;30998:17;;:56;;30963:9;;-1:-1:-1;;;;;30998:17:0;;31028:21;;30963:9;30998:56;30963:9;30998:56;31028:21;30998:17;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;30917:149:0;30116:957;;;;;;;30068:1005;:::o;31154:841::-;31304:16;;;31318:1;31304:16;;;;;;;;31280:21;;31304:16;;;;;;;;;;-1:-1:-1;31304:16:0;31280:40;;31349:4;31331;31336:1;31331:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31331:23:0;;;-1:-1:-1;;;;;31331:23:0;;;;;31375:15;-1:-1:-1;;;;;31375:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31365:4;31370:1;31365:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;31365:32:0;;;-1:-1:-1;;;;;31365:32:0;;;;;31467:11;31414:50;31432:4;31447:15;31414:9;:50::i;:::-;:64;31410:231;;;31495:134;31530:4;31562:15;-1:-1:-1;;31495:8:0;:134::i;:::-;31667:48;;-1:-1:-1;;;31667:48:0;;31653:11;;-1:-1:-1;;;;;31667:15:0;:29;;;;:48;;31697:11;;31710:4;;31667:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31667:48:0;;;;;;;;;;;;:::i;:::-;31716:1;31667:51;;;;;;;;:::i;:::-;;;;;;;31653:65;;31755:15;-1:-1:-1;;;;;31755:66:0;;31836:11;31875:3;31863;31869:2;31863:8;;;;:::i;:::-;31862:16;;;;:::i;:::-;31908:4;31935;31955:21;:15;31973:3;31955:21;:::i;:::-;31755:232;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31209:786;;31154:841;:::o;32026:292::-;32247:16;;-1:-1:-1;;;;;32102:15:0;:31;;;;;32141:9;;32174:4;;32194:6;;32215:1;;;;32247:16;32278:21;:15;32296:3;32278:21;:::i;:::-;32102:208;;;;;;-1:-1:-1;;;;;;32102:208:0;;;-1:-1:-1;;;;;14594:15:1;;;32102:208:0;;;14576:34:1;14626:18;;;14619:34;;;;14669:18;;;14662:34;;;;14712:18;;;14705:34;;;;14776:15;;;14755:19;;;14748:44;14808:19;;;14801:35;;;;14510:19;;32102:208:0;;;;;;;;;;;;;;;;;;;14:316:1;91:6;99;107;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;-1:-1:-1;;199:23:1;;;269:2;254:18;;241:32;;-1:-1:-1;320:2:1;305:18;;;292:32;;14:316;-1:-1:-1;14:316:1:o;335:250::-;420:1;430:113;444:6;441:1;438:13;430:113;;;520:11;;;514:18;501:11;;;494:39;466:2;459:10;430:113;;;-1:-1:-1;;577:1:1;559:16;;552:27;335:250::o;590:396::-;739:2;728:9;721:21;702:4;771:6;765:13;814:6;809:2;798:9;794:18;787:34;830:79;902:6;897:2;886:9;882:18;877:2;869:6;865:15;830:79;:::i;:::-;970:2;949:15;-1:-1:-1;;945:29:1;930:45;;;;977:2;926:54;;590:396;-1:-1:-1;;590:396:1:o;991:131::-;-1:-1:-1;;;;;1066:31:1;;1056:42;;1046:70;;1112:1;1109;1102:12;1127:315;1195:6;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:52;;;1272:1;1269;1262:12;1224:52;1311:9;1298:23;1330:31;1355:5;1330:31;:::i;:::-;1380:5;1432:2;1417:18;;;;1404:32;;-1:-1:-1;;;1127:315:1:o;1639:529::-;1716:6;1724;1732;1785:2;1773:9;1764:7;1760:23;1756:32;1753:52;;;1801:1;1798;1791:12;1753:52;1840:9;1827:23;1859:31;1884:5;1859:31;:::i;:::-;1909:5;-1:-1:-1;1966:2:1;1951:18;;1938:32;1979:33;1938:32;1979:33;:::i;:::-;2031:7;-1:-1:-1;2090:2:1;2075:18;;2062:32;2103:33;2062:32;2103:33;:::i;:::-;2155:7;2145:17;;;1639:529;;;;;:::o;2403:118::-;2489:5;2482:13;2475:21;2468:5;2465:32;2455:60;;2511:1;2508;2501:12;2526:382;2591:6;2599;2652:2;2640:9;2631:7;2627:23;2623:32;2620:52;;;2668:1;2665;2658:12;2620:52;2707:9;2694:23;2726:31;2751:5;2726:31;:::i;:::-;2776:5;-1:-1:-1;2833:2:1;2818:18;;2805:32;2846:30;2805:32;2846:30;:::i;:::-;2895:7;2885:17;;;2526:382;;;;;:::o;3095:456::-;3172:6;3180;3188;3241:2;3229:9;3220:7;3216:23;3212:32;3209:52;;;3257:1;3254;3247:12;3209:52;3296:9;3283:23;3315:31;3340:5;3315:31;:::i;:::-;3365:5;-1:-1:-1;3422:2:1;3407:18;;3394:32;3435:33;3394:32;3435:33;:::i;:::-;3095:456;;3487:7;;-1:-1:-1;;;3541:2:1;3526:18;;;;3513:32;;3095:456::o;4277:180::-;4336:6;4389:2;4377:9;4368:7;4364:23;4360:32;4357:52;;;4405:1;4402;4395:12;4357:52;-1:-1:-1;4428:23:1;;4277:180;-1:-1:-1;4277:180:1:o;4462:247::-;4521:6;4574:2;4562:9;4553:7;4549:23;4545:32;4542:52;;;4590:1;4587;4580:12;4542:52;4629:9;4616:23;4648:31;4673:5;4648:31;:::i;:::-;4698:5;4462:247;-1:-1:-1;;;4462:247:1:o;4714:388::-;4782:6;4790;4843:2;4831:9;4822:7;4818:23;4814:32;4811:52;;;4859:1;4856;4849:12;4811:52;4898:9;4885:23;4917:31;4942:5;4917:31;:::i;:::-;4967:5;-1:-1:-1;5024:2:1;5009:18;;4996:32;5037:33;4996:32;5037:33;:::i;5107:127::-;5168:10;5163:3;5159:20;5156:1;5149:31;5199:4;5196:1;5189:15;5223:4;5220:1;5213:15;5239:125;5304:9;;;5325:10;;;5322:36;;;5338:18;;:::i;5369:380::-;5448:1;5444:12;;;;5491;;;5512:61;;5566:4;5558:6;5554:17;5544:27;;5512:61;5619:2;5611:6;5608:14;5588:18;5585:38;5582:161;;5665:10;5660:3;5656:20;5653:1;5646:31;5700:4;5697:1;5690:15;5728:4;5725:1;5718:15;5582:161;;5369:380;;;:::o;5754:168::-;5827:9;;;5858;;5875:15;;;5869:22;;5855:37;5845:71;;5896:18;;:::i;5927:217::-;5967:1;5993;5983:132;;6037:10;6032:3;6028:20;6025:1;6018:31;6072:4;6069:1;6062:15;6100:4;6097:1;6090:15;5983:132;-1:-1:-1;6129:9:1;;5927:217::o;6428:287::-;6557:3;6595:6;6589:13;6611:66;6670:6;6665:3;6658:4;6650:6;6646:17;6611:66;:::i;:::-;6693:16;;;;;6428:287;-1:-1:-1;;6428:287:1:o;6720:245::-;6787:6;6840:2;6828:9;6819:7;6815:23;6811:32;6808:52;;;6856:1;6853;6846:12;6808:52;6888:9;6882:16;6907:28;6929:5;6907:28;:::i;9873:128::-;9940:9;;;9961:11;;;9958:37;;;9975:18;;:::i;11223:127::-;11284:10;11279:3;11275:20;11272:1;11265:31;11315:4;11312:1;11305:15;11339:4;11336:1;11329:15;11355:127;11416:10;11411:3;11407:20;11404:1;11397:31;11447:4;11444:1;11437:15;11471:4;11468:1;11461:15;11487:251;11557:6;11610:2;11598:9;11589:7;11585:23;11581:32;11578:52;;;11626:1;11623;11616:12;11578:52;11658:9;11652:16;11677:31;11702:5;11677:31;:::i;11743:461::-;11796:3;11834:5;11828:12;11861:6;11856:3;11849:19;11887:4;11916:2;11911:3;11907:12;11900:19;;11953:2;11946:5;11942:14;11974:1;11984:195;11998:6;11995:1;11992:13;11984:195;;;12063:13;;-1:-1:-1;;;;;12059:39:1;12047:52;;12119:12;;;;12154:15;;;;12095:1;12013:9;11984:195;;;-1:-1:-1;12195:3:1;;11743:461;-1:-1:-1;;;;;11743:461:1:o;12209:332::-;12416:6;12405:9;12398:25;12459:2;12454;12443:9;12439:18;12432:30;12379:4;12479:56;12531:2;12520:9;12516:18;12508:6;12479:56;:::i;:::-;12471:64;12209:332;-1:-1:-1;;;;12209:332:1:o;12546:1105::-;12641:6;12672:2;12715;12703:9;12694:7;12690:23;12686:32;12683:52;;;12731:1;12728;12721:12;12683:52;12764:9;12758:16;12793:18;12834:2;12826:6;12823:14;12820:34;;;12850:1;12847;12840:12;12820:34;12888:6;12877:9;12873:22;12863:32;;12933:7;12926:4;12922:2;12918:13;12914:27;12904:55;;12955:1;12952;12945:12;12904:55;12984:2;12978:9;13006:2;13002;12999:10;12996:36;;;13012:18;;:::i;:::-;13058:2;13055:1;13051:10;13090:2;13084:9;13153:2;13149:7;13144:2;13140;13136:11;13132:25;13124:6;13120:38;13208:6;13196:10;13193:22;13188:2;13176:10;13173:18;13170:46;13167:72;;;13219:18;;:::i;:::-;13255:2;13248:22;13305:18;;;13339:15;;;;-1:-1:-1;13381:11:1;;;13377:20;;;13409:19;;;13406:39;;;13441:1;13438;13431:12;13406:39;13465:11;;;;13485:135;13501:6;13496:3;13493:15;13485:135;;;13567:10;;13555:23;;13518:12;;;;13598;;;;13485:135;;;13639:6;12546:1105;-1:-1:-1;;;;;;;;12546:1105:1:o;13656:574::-;13947:6;13936:9;13929:25;13990:6;13985:2;13974:9;13970:18;13963:34;14033:3;14028:2;14017:9;14013:18;14006:31;13910:4;14054:57;14106:3;14095:9;14091:19;14083:6;14054:57;:::i;:::-;-1:-1:-1;;;;;14147:32:1;;;;14142:2;14127:18;;14120:60;-1:-1:-1;14211:3:1;14196:19;14189:35;14046:65;13656:574;-1:-1:-1;;;13656:574:1:o
Swarm Source
ipfs://64a4348cdd647567af893d35e5b94b67fd8132f7441ee4fc620b276d46a2a7c8
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.