More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 552 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21619031 | 6 hrs ago | IN | 0 ETH | 0.00022782 | ||||
Approve | 21599662 | 2 days ago | IN | 0 ETH | 0.00012918 | ||||
Approve | 21594096 | 3 days ago | IN | 0 ETH | 0.00033274 | ||||
Approve | 21582660 | 5 days ago | IN | 0 ETH | 0.00046554 | ||||
Approve | 21581731 | 5 days ago | IN | 0 ETH | 0.000633 | ||||
Approve | 21581051 | 5 days ago | IN | 0 ETH | 0.000345 | ||||
Transfer | 21581031 | 5 days ago | IN | 0 ETH | 0.00098146 | ||||
Approve | 21565118 | 7 days ago | IN | 0 ETH | 0.00040955 | ||||
Approve | 21552838 | 9 days ago | IN | 0 ETH | 0.00029008 | ||||
Approve | 21552571 | 9 days ago | IN | 0 ETH | 0.00043799 | ||||
Approve | 21550386 | 9 days ago | IN | 0 ETH | 0.0002947 | ||||
Approve | 21548775 | 10 days ago | IN | 0 ETH | 0.00029202 | ||||
Approve | 21538810 | 11 days ago | IN | 0 ETH | 0.00035157 | ||||
Approve | 21537859 | 11 days ago | IN | 0 ETH | 0.00069916 | ||||
Approve | 21533163 | 12 days ago | IN | 0 ETH | 0.00146939 | ||||
Approve | 21532596 | 12 days ago | IN | 0 ETH | 0.00141911 | ||||
Approve | 21525264 | 13 days ago | IN | 0 ETH | 0.00032448 | ||||
Approve | 21513898 | 14 days ago | IN | 0 ETH | 0.0003801 | ||||
Approve | 21507936 | 15 days ago | IN | 0 ETH | 0.00019582 | ||||
Approve | 21502701 | 16 days ago | IN | 0 ETH | 0.00037133 | ||||
Approve | 21500770 | 16 days ago | IN | 0 ETH | 0.00019661 | ||||
Approve | 21487317 | 18 days ago | IN | 0 ETH | 0.00048333 | ||||
Approve | 21486531 | 18 days ago | IN | 0 ETH | 0.00032293 | ||||
Approve | 21485432 | 18 days ago | IN | 0 ETH | 0.00035316 | ||||
Approve | 21477162 | 20 days ago | IN | 0 ETH | 0.00014269 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21619034 | 6 hrs ago | 0.00459354 ETH | ||||
21619034 | 6 hrs ago | 0.00306236 ETH | ||||
21619034 | 6 hrs ago | 0.0076559 ETH | ||||
21599668 | 2 days ago | 0.00336237 ETH | ||||
21599668 | 2 days ago | 0.00224158 ETH | ||||
21599668 | 2 days ago | 0.00560396 ETH | ||||
21582662 | 5 days ago | 0.00502216 ETH | ||||
21582662 | 5 days ago | 0.0033481 ETH | ||||
21582662 | 5 days ago | 0.00837027 ETH | ||||
21565121 | 7 days ago | 0.00278678 ETH | ||||
21565121 | 7 days ago | 0.00185785 ETH | ||||
21565121 | 7 days ago | 0.00464464 ETH | ||||
21548816 | 10 days ago | 0.00732398 ETH | ||||
21548816 | 10 days ago | 0.00488265 ETH | ||||
21548816 | 10 days ago | 0.01220664 ETH | ||||
21536918 | 11 days ago | 0.00679437 ETH | ||||
21536918 | 11 days ago | 0.00452958 ETH | ||||
21536918 | 11 days ago | 0.01132395 ETH | ||||
21535383 | 11 days ago | 0.00302599 ETH | ||||
21535383 | 11 days ago | 0.00201732 ETH | ||||
21535383 | 11 days ago | 0.00504331 ETH | ||||
21535290 | 11 days ago | 0.0030254 ETH | ||||
21535290 | 11 days ago | 0.00201693 ETH | ||||
21535290 | 11 days ago | 0.00504234 ETH | ||||
21533166 | 12 days ago | 0.01216205 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DIOM
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* DIOM - Decentralized Identity and Ownership Matrix. Bringing Web5 to Ethereum. Website: https://diom.digital Documentation: https://docs.diom.digital Medium: https://medium.com/@DiomWeb5 Twitter: https://twitter.com/DiomWeb5 Telegram: https://t.me/DiomWeb5 */ pragma solidity 0.8.25; // SPDX-License-Identifier: MIT abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20{ /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); } /** @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"); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } 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 Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } } interface IPriceFeed { function latestAnswer() external view returns (int256); } interface ILpPair { function sync() external; function mint(address to) external; } interface IWETH { function deposit() external payable; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract DIOM is ERC20, Ownable { mapping (address => bool) public exemptFromFees; mapping (address => bool) public exemptFromLimits; bool public tradingAllowed; mapping (address => bool) public isAMMPair; address public developmentAddress; address public marketingAddress; uint24 public buyTax; uint24 public sellTax; uint24 public buyTaxStep1; uint24 public sellTaxStep1; uint128 public maxWalletStep1; bool public step1Activated; uint24 public buyTaxStep2; uint24 public sellTaxStep2; uint128 public maxWalletStep2; bool public step2Activated; uint24 public buyTaxStep3; uint24 public sellTaxStep3; uint128 public maxWalletStep3; bool public step3Activated; uint24 public buyTaxStepFinal; uint24 public sellTaxStepFinal; uint128 public maxWalletStepFinal; uint256 public lastSwapBackBlock; mapping(address => uint256) private _holderLastTransferBlock; bool public limited = true; uint256 public maxWallet; uint256 public immutable swapTokensAtAmt; address public immutable lpPair; IDexRouter public immutable dexRouter; address public immutable WETH; uint64 public constant FEE_DIVISOR = 10000; uint256 public launchTimestamp; bool public dynamicTaxOn; bool public transferDelayEnabled = false; // constructor constructor() ERC20("DIOM", "DIOM") { uint256 _totalSupply = 100_000_000 * 1e18; developmentAddress = 0x62c5b206dd49DaD8E665E3E4d2560a04008E5333; marketingAddress = 0x0FaB1E670a6eed24dfBEa68e7194c272345A1FBC; address _v2Router; dynamicTaxOn = true; _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uniswap V2 Router for Ethereum Mainnet dexRouter = IDexRouter(_v2Router); _mint(address(msg.sender), _totalSupply); swapTokensAtAmt = totalSupply() * 25 / 100000; // Step 1 (0-5 minutes) buyTaxStep1 = 2500; // 25% sellTaxStep1 = 2500; // 25% maxWalletStep1 = uint128(totalSupply() * 5 / 1000); // 0.5% // Step 2 (5-10 minutes) buyTaxStep2 = 2000; // 20% sellTaxStep2 = 2000; // 20% maxWalletStep2 = uint128(totalSupply() * 10 / 1000); // 1% // Step 3 (10-20 minutes) buyTaxStep3 = 1000; // 10% sellTaxStep3 = 1000; // 10% maxWalletStep3 = uint128(totalSupply() * 15 / 1000); // 1.5% // StepFinal (20+ minutes) buyTaxStepFinal = 500; // 5% sellTaxStepFinal = 500; // 5% maxWalletStepFinal = uint128(totalSupply() * 20 / 1000); // 2% WETH = dexRouter.WETH(); lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), WETH); isAMMPair[lpPair] = true; exemptFromLimits[lpPair] = true; exemptFromLimits[msg.sender] = true; exemptFromLimits[address(this)] = true; exemptFromLimits[address(0xdead)] = true; exemptFromFees[msg.sender] = true; exemptFromFees[address(this)] = true; exemptFromFees[address(dexRouter)] = true; exemptFromFees[address(0xdead)] = true; // Exempt the Sablier Vesting contract address exemptFromFees[0x3962f6585946823440d274aD7C719B02b49DE51E] = true; exemptFromLimits[0x3962f6585946823440d274aD7C719B02b49DE51E] = true; _approve(address(this), address(dexRouter), type(uint256).max); _approve(address(msg.sender), address(dexRouter), totalSupply()); } function _transfer( address from, address to, uint256 amount ) internal virtual override { if(!exemptFromFees[from] && !exemptFromFees[to]){ require(tradingAllowed, "Trading not active"); amount -= handleTax(from, to, amount); checkLimits(from, to, amount); } super._transfer(from,to,amount); } function checkLimits(address from, address to, uint256 amount) internal { if(limited){ bool exFromLimitsTo = exemptFromLimits[to]; uint256 balanceOfTo = balanceOf(to); // buy if (isAMMPair[from] && !exFromLimitsTo) { require(amount + balanceOfTo <= maxWallet, "Max Wallet"); } else if(!exFromLimitsTo) { require(amount + balanceOfTo <= maxWallet, "Max Wallet"); } if(transferDelayEnabled){ if (to != address(dexRouter) && to != address(lpPair)){ require(_holderLastTransferBlock[tx.origin] < block.number, "Transfer Delay"); if(from == address(lpPair)){ require(tx.origin == to, "no buying to external wallets yet"); } _holderLastTransferBlock[to] = block.number; _holderLastTransferBlock[tx.origin] = block.number; } } } } function handleTax(address from, address to, uint256 amount) internal returns (uint256){ if(balanceOf(address(this)) >= swapTokensAtAmt && !isAMMPair[from] && lastSwapBackBlock + 1 <= block.number) { convertTaxes(); } if(dynamicTaxOn){ setInternalTaxes(); } uint128 tax = 0; uint24 taxes; if (isAMMPair[to]){ taxes = sellTax; } else if(isAMMPair[from]){ taxes = buyTax; } if(taxes > 0){ tax = uint128(amount * taxes / FEE_DIVISOR); super._transfer(from, address(this), tax); } return tax; } function swapTokensForETH(uint256 tokenAmt) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmt, 0, path, address(this), block.timestamp ); } function convertTaxes() private { uint256 contractBalance = balanceOf(address(this)); if(contractBalance == 0) {return;} lastSwapBackBlock = block.number; if(contractBalance > swapTokensAtAmt * 10){ contractBalance = swapTokensAtAmt * 10; } if(contractBalance > 0){ swapTokensForETH(contractBalance); uint256 ethBalance = address(this).balance; bool success; if(marketingAddress != address(0)){ uint256 amountForMarketing = ethBalance * 2 / 5; (success,) = marketingAddress.call{value: amountForMarketing}(""); ethBalance -= amountForMarketing; } (success,) = developmentAddress.call{value: ethBalance}(""); } } function enableTrading() external onlyOwner { require(!tradingAllowed, "Trading already enabled"); tradingAllowed = true; launchTimestamp = block.timestamp; transferDelayEnabled = true; buyTax = buyTaxStep1; sellTax = sellTaxStep1; maxWallet = maxWalletStep1; step1Activated = true; } function updateTax(uint24 _buyTax, uint24 _sellTax) external onlyOwner { require(_buyTax < buyTax || _buyTax <= 500, "Cannot raise buy tax over 5%"); require(_sellTax < sellTax || _sellTax <= 500, "Cannot raise buy tax over 5%"); buyTax = _buyTax; sellTax = _sellTax; } function removeLimits() external onlyOwner { require(limited, "Limits already removed"); limited = false; } receive() payable external {} function setInternalTaxes() internal { uint256 currentTimestamp = block.timestamp; uint256 timeSinceLaunch; if(currentTimestamp >= launchTimestamp){ timeSinceLaunch = currentTimestamp - launchTimestamp; } if(transferDelayEnabled && timeSinceLaunch >= 1 minutes){ transferDelayEnabled = false; } if(timeSinceLaunch >= 20 minutes){ dynamicTaxOn = false; buyTax = buyTaxStepFinal; sellTax = sellTaxStepFinal; maxWallet = maxWalletStepFinal; } else if(timeSinceLaunch >= 10 minutes){ if(!step3Activated){ buyTax = buyTaxStep3; sellTax = sellTaxStep3; maxWallet = maxWalletStep3; step3Activated = true; } } else if(timeSinceLaunch >= 5 minutes){ if(!step2Activated){ buyTax = buyTaxStep2; sellTax = sellTaxStep2; maxWallet = maxWalletStep2; step2Activated = true; } } } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxStep1","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxStep2","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxStep3","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxStepFinal","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicTaxOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapBackBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletStep1","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletStep2","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletStep3","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletStepFinal","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"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":"sellTax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxStep1","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxStep2","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxStep3","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxStepFinal","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"step1Activated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"step2Activated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"step3Activated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"_buyTax","type":"uint24"},{"internalType":"uint24","name":"_sellTax","type":"uint24"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
610100604052600160125f6101000a81548160ff0219169083151502179055505f601560016101000a81548160ff021916908315150217905550348015610044575f80fd5b506040518060400160405280600481526020017f44494f4d000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f44494f4d0000000000000000000000000000000000000000000000000000000081525081600390816100c09190611093565b5080600490816100d09190611093565b5050505f6100e2610b4e60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f6a52b7d2dcc80cd2e400000090507362c5b206dd49dad8e665e3e4d2560a04008e5333600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730fab1e670a6eed24dfbea68e7194c272345a1fbc600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600160155f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506102ac3383610b5560201b60201c565b620186a060196102c0610c8d60201b60201c565b6102ca919061118f565b6102d491906111fd565b608081815250506109c4600b601a6101000a81548162ffffff021916908362ffffff1602179055506109c4600b601d6101000a81548162ffffff021916908362ffffff1602179055506103e86005610330610c8d60201b60201c565b61033a919061118f565b61034491906111fd565b600c5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506107d0600c60116101000a81548162ffffff021916908362ffffff1602179055506107d0600c60146101000a81548162ffffff021916908362ffffff1602179055506103e8600a6103d0610c8d60201b60201c565b6103da919061118f565b6103e491906111fd565b600d5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506103e8600d60116101000a81548162ffffff021916908362ffffff1602179055506103e8600d60146101000a81548162ffffff021916908362ffffff1602179055506103e8600f610470610c8d60201b60201c565b61047a919061118f565b61048491906111fd565b600e5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4600e60116101000a81548162ffffff021916908362ffffff1602179055506101f4600e60146101000a81548162ffffff021916908362ffffff1602179055506103e86014610510610c8d60201b60201c565b61051a919061118f565b61052491906111fd565b600f5f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060c05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ca919061128b565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505060c05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066c919061128b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060e0516040518363ffffffff1660e01b81526004016106a89291906112c5565b6020604051808303815f875af11580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e8919061128b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050600160095f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f733962f6585946823440d274ad7c719b02b49de51e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f733962f6585946823440d274ad7c719b02b49de51e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610b273060c0517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c9660201b60201c565b610b473360c051610b3c610c8d60201b60201c565b610c9660201b60201c565b50506114db565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90611346565b60405180910390fd5b8060025f828254610bd49190611364565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c8191906113a6565b60405180910390a35050565b5f600254905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb9061142f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d69906114bd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e4c91906113a6565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ed457607f821691505b602082108103610ee757610ee6610e90565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610f497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f0e565b610f538683610f0e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610f97610f92610f8d84610f6b565b610f74565b610f6b565b9050919050565b5f819050919050565b610fb083610f7d565b610fc4610fbc82610f9e565b848454610f1a565b825550505050565b5f90565b610fd8610fcc565b610fe3818484610fa7565b505050565b5b8181101561100657610ffb5f82610fd0565b600181019050610fe9565b5050565b601f82111561104b5761101c81610eed565b61102584610eff565b81016020851015611034578190505b61104861104085610eff565b830182610fe8565b50505b505050565b5f82821c905092915050565b5f61106b5f1984600802611050565b1980831691505092915050565b5f611083838361105c565b9150826002028217905092915050565b61109c82610e59565b67ffffffffffffffff8111156110b5576110b4610e63565b5b6110bf8254610ebd565b6110ca82828561100a565b5f60209050601f8311600181146110fb575f84156110e9578287015190505b6110f38582611078565b86555061115a565b601f19841661110986610eed565b5f5b828110156111305784890151825560018201915060208501945060208101905061110b565b8683101561114d5784890151611149601f89168261105c565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61119982610f6b565b91506111a483610f6b565b92508282026111b281610f6b565b915082820484148315176111c9576111c8611162565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61120782610f6b565b915061121283610f6b565b925082611222576112216111d0565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61125a82611231565b9050919050565b61126a81611250565b8114611274575f80fd5b50565b5f8151905061128581611261565b92915050565b5f602082840312156112a05761129f61122d565b5b5f6112ad84828501611277565b91505092915050565b6112bf81611250565b82525050565b5f6040820190506112d85f8301856112b6565b6112e560208301846112b6565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611330601f836112ec565b915061133b826112fc565b602082019050919050565b5f6020820190508181035f83015261135d81611324565b9050919050565b5f61136e82610f6b565b915061137983610f6b565b925082820190508082111561139157611390611162565b5b92915050565b6113a081610f6b565b82525050565b5f6020820190506113b95f830184611397565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6114196024836112ec565b9150611424826113bf565b604082019050919050565b5f6020820190508181035f8301526114468161140d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6114a76022836112ec565b91506114b28261144d565b604082019050919050565b5f6020820190508181035f8301526114d48161149b565b9050919050565b60805160a05160c05160e051613be46115465f395f818161166c0152612b2f01525f8181610c56015281816120ca0152612b9e01525f8181610d740152818161212101526121f601525f81816116d701528181611d3d015281816125be01526125f20152613be45ff3fe6080604052600436106102e7575f3560e01c80637f5fd71c1161018f578063ad5c4648116100db578063cc1776d311610094578063dd62ed3e1161006e578063dd62ed3e14610b0c578063ed5a0ec014610b48578063f2fde38b14610b72578063f8b45b0514610b9a576102ee565b8063cc1776d314610a8e578063d0cd578a14610ab8578063d7e71bf814610ae2576102ee565b8063ad5c464814610980578063b0249cc6146109aa578063b3b19d39146109e6578063ba92c71c14610a10578063c78d0fa014610a3a578063c876d0b914610a64576102ee565b80638da5cb5b116101485780639e93ad8e116101225780639e93ad8e146108b4578063a457c2d7146108de578063a5ece9411461091a578063a9059cbb14610944576102ee565b80638da5cb5b146108365780638e385a2a1461086057806395d89b411461088a576102ee565b80637f5fd71c1461073c578063860a32ec146107665780638a7814c8146107905780638a8c523c146107ba5780638b799060146107d05780638d3e6e40146107fa576102ee565b8063452ed4f11161024e57806361286e771161020757806370a08231116101e157806370a08231146106aa578063715018a6146106e657806371ac0a18146106fc578063751039fc14610726576102ee565b806361286e771461062c578063638b1b141461065657806365cf7c9b14610680576102ee565b8063452ed4f11461052057806348792bd31461054a5780634b356f47146105745780634f7041a51461059c57806353371be0146105c65780635a90a49e146105f0576102ee565b80632645654f116102a05780632645654f146104125780632bdc2a491461043c578063313ce56714610466578063362919a71461049057806339509351146104ba578063432e95a5146104f6576102ee565b806306fdde03146102f25780630758d9241461031c578063095ea7b3146103465780630a2808731461038257806318160ddd146103ac57806323b872dd146103d6576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b50610306610bc4565b6040516103139190612c9e565b60405180910390f35b348015610327575f80fd5b50610330610c54565b60405161033d9190612d38565b60405180910390f35b348015610351575f80fd5b5061036c60048036038101906103679190612dc3565b610c78565b6040516103799190612e1b565b60405180910390f35b34801561038d575f80fd5b50610396610c9a565b6040516103a39190612e51565b60405180910390f35b3480156103b7575f80fd5b506103c0610caf565b6040516103cd9190612e79565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612e92565b610cb8565b6040516104099190612e1b565b60405180910390f35b34801561041d575f80fd5b50610426610ce6565b6040516104339190612e51565b60405180910390f35b348015610447575f80fd5b50610450610cfb565b60405161045d9190612f0c565b60405180910390f35b348015610471575f80fd5b5061047a610d1c565b6040516104879190612f40565b60405180910390f35b34801561049b575f80fd5b506104a4610d24565b6040516104b19190612e1b565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190612dc3565b610d36565b6040516104ed9190612e1b565b60405180910390f35b348015610501575f80fd5b5061050a610d6c565b6040516105179190612e79565b60405180910390f35b34801561052b575f80fd5b50610534610d72565b6040516105419190612f68565b60405180910390f35b348015610555575f80fd5b5061055e610d96565b60405161056b9190612e51565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190612fab565b610dab565b005b3480156105a7575f80fd5b506105b0610f61565b6040516105bd9190612e51565b60405180910390f35b3480156105d1575f80fd5b506105da610f76565b6040516105e79190612e1b565b60405180910390f35b3480156105fb575f80fd5b5061061660048036038101906106119190612fe9565b610f88565b6040516106239190612e1b565b60405180910390f35b348015610637575f80fd5b50610640610fa5565b60405161064d9190612e1b565b60405180910390f35b348015610661575f80fd5b5061066a610fb8565b6040516106779190612f68565b60405180910390f35b34801561068b575f80fd5b50610694610fdd565b6040516106a19190612e79565b60405180910390f35b3480156106b5575f80fd5b506106d060048036038101906106cb9190612fe9565b610fe3565b6040516106dd9190612e79565b60405180910390f35b3480156106f1575f80fd5b506106fa611028565b005b348015610707575f80fd5b5061071061117b565b60405161071d9190612e1b565b60405180910390f35b348015610731575f80fd5b5061073a61118e565b005b348015610747575f80fd5b5061075061128d565b60405161075d9190612e51565b60405180910390f35b348015610771575f80fd5b5061077a6112a2565b6040516107879190612e1b565b60405180910390f35b34801561079b575f80fd5b506107a46112b4565b6040516107b19190612e51565b60405180910390f35b3480156107c5575f80fd5b506107ce6112c9565b005b3480156107db575f80fd5b506107e461149d565b6040516107f19190612f0c565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190612fe9565b6114be565b60405161082d9190612e1b565b60405180910390f35b348015610841575f80fd5b5061084a6114db565b6040516108579190612f68565b60405180910390f35b34801561086b575f80fd5b50610874611503565b6040516108819190612e51565b60405180910390f35b348015610895575f80fd5b5061089e611518565b6040516108ab9190612c9e565b60405180910390f35b3480156108bf575f80fd5b506108c86115a8565b6040516108d59190613036565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190612dc3565b6115ae565b6040516109119190612e1b565b60405180910390f35b348015610925575f80fd5b5061092e611623565b60405161093b9190612f68565b60405180910390f35b34801561094f575f80fd5b5061096a60048036038101906109659190612dc3565b611648565b6040516109779190612e1b565b60405180910390f35b34801561098b575f80fd5b5061099461166a565b6040516109a19190612f68565b60405180910390f35b3480156109b5575f80fd5b506109d060048036038101906109cb9190612fe9565b61168e565b6040516109dd9190612e1b565b60405180910390f35b3480156109f1575f80fd5b506109fa6116ab565b604051610a079190612e51565b60405180910390f35b348015610a1b575f80fd5b50610a246116c0565b604051610a319190612e51565b60405180910390f35b348015610a45575f80fd5b50610a4e6116d5565b604051610a5b9190612e79565b60405180910390f35b348015610a6f575f80fd5b50610a786116f9565b604051610a859190612e1b565b60405180910390f35b348015610a99575f80fd5b50610aa261170c565b604051610aaf9190612e51565b60405180910390f35b348015610ac3575f80fd5b50610acc611721565b604051610ad99190612f0c565b60405180910390f35b348015610aed575f80fd5b50610af6611742565b604051610b039190612f0c565b60405180910390f35b348015610b17575f80fd5b50610b326004803603810190610b2d919061304f565b611763565b604051610b3f9190612e79565b60405180910390f35b348015610b53575f80fd5b50610b5c6117e5565b604051610b699190612e1b565b60405180910390f35b348015610b7d575f80fd5b50610b986004803603810190610b939190612fe9565b6117f8565b005b348015610ba5575f80fd5b50610bae6119ba565b604051610bbb9190612e79565b60405180910390f35b606060038054610bd3906130ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610bff906130ba565b8015610c4a5780601f10610c2157610100808354040283529160200191610c4a565b820191905f5260205f20905b815481529060010190602001808311610c2d57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f80610c826119c0565b9050610c8f8185856119c7565b600191505092915050565b600b601a9054906101000a900462ffffff1681565b5f600254905090565b5f80610cc26119c0565b9050610ccf858285611b8a565b610cda858585611c15565b60019150509392505050565b600d60149054906101000a900462ffffff1681565b600f5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f6012905090565b60155f9054906101000a900460ff1681565b5f80610d406119c0565b9050610d61818585610d528589611763565b610d5c9190613117565b6119c7565b600191505092915050565b60105481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60149054906101000a900462ffffff1681565b610db36119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613194565b60405180910390fd5b600b60149054906101000a900462ffffff1662ffffff168262ffffff161080610e7157506101f48262ffffff1611155b610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea7906131fc565b60405180910390fd5b600b60179054906101000a900462ffffff1662ffffff168162ffffff161080610ee057506101f48162ffffff1611155b610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906131fc565b60405180910390fd5b81600b60146101000a81548162ffffff021916908362ffffff16021790555080600b60176101000a81548162ffffff021916908362ffffff1602179055505050565b600b60149054906101000a900462ffffff1681565b60085f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b600e60109054906101000a900460ff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110306119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590613194565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60109054906101000a900460ff1681565b6111966119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b90613194565b60405180910390fd5b60125f9054906101000a900460ff16611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990613264565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b601d9054906101000a900462ffffff1681565b60125f9054906101000a900460ff1681565b600e60119054906101000a900462ffffff1681565b6112d16119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690613194565b60405180910390fd5b60085f9054906101000a900460ff16156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906132cc565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550426014819055506001601560016101000a81548160ff021916908315150217905550600b601a9054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600b601d9054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600c5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166013819055506001600c60106101000a81548160ff021916908315150217905550565b600d5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60119054906101000a900462ffffff1681565b606060048054611527906130ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611553906130ba565b801561159e5780601f106115755761010080835404028352916020019161159e565b820191905f5260205f20905b81548152906001019060200180831161158157829003601f168201915b5050505050905090565b61271081565b5f806115b86119c0565b90505f6115c58286611763565b90508381101561160a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116019061335a565b60405180910390fd5b61161782868684036119c7565b60019250505092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f806116526119c0565b905061165f818585611c15565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6009602052805f5260405f205f915054906101000a900460ff1681565b600c60149054906101000a900462ffffff1681565b600c60119054906101000a900462ffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b601560019054906101000a900460ff1681565b600b60179054906101000a900462ffffff1681565b600c5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d60109054906101000a900460ff1681565b6118006119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590613194565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f3906133e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613476565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613504565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7d9190612e79565b60405180910390a3505050565b5f611b958484611763565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0f5781811015611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf89061356c565b60405180910390fd5b611c0e84848484036119c7565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cb3575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2a5760085f9054906101000a900460ff16611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd906135d4565b60405180910390fd5b611d11838383611d3a565b81611d1c91906135f2565b9050611d29838383611f41565b5b611d35838383612344565b505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000611d6530610fe3565b10158015611dba575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dd45750436001601054611dd19190613117565b11155b15611de257611de161259a565b5b60155f9054906101000a900460ff1615611dff57611dfe6127cf565b5b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611e6957600b60179054906101000a900462ffffff169050611ece565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ecd57600b60149054906101000a900462ffffff1690505b5b5f8162ffffff161115611f235761271067ffffffffffffffff168162ffffff1685611ef99190613625565b611f039190613693565b9150611f228630846fffffffffffffffffffffffffffffffff16612344565b5b816fffffffffffffffffffffffffffffffff16925050509392505050565b60125f9054906101000a900460ff161561233f575f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690505f611fac84610fe3565b905060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612002575081155b1561205c5760135481846120169190613117565b1115612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e9061370d565b60405180910390fd5b6120b3565b816120b25760135481846120709190613117565b11156120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a89061370d565b60405180910390fd5b5b5b601560019054906101000a900460ff161561233c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561217057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233b574360115f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613775565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036122b6578373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90613803565b60405180910390fd5b5b4360115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360115f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b50505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124179061391f565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249a906139ad565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161258c9190612e79565b60405180910390a350505050565b5f6125a430610fe3565b90505f81036125b357506127cd565b43601081905550600a7f00000000000000000000000000000000000000000000000000000000000000006125e79190613625565b81111561261e57600a7f000000000000000000000000000000000000000000000000000000000000000061261b9190613625565b90505b5f8111156127cb5761262f81612a92565b5f4790505f8073ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273e575f60056002846126989190613625565b6126a29190613693565b9050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516126e9906139f8565b5f6040518083038185875af1925050503d805f8114612723576040519150601f19603f3d011682016040523d82523d5f602084013e612728565b606091505b505080925050808361273a91906135f2565b9250505b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612783906139f8565b5f6040518083038185875af1925050503d805f81146127bd576040519150601f19603f3d011682016040523d82523d5f602084013e6127c2565b606091505b50508091505050505b505b565b5f4290505f60145482106127ee57601454826127eb91906135f2565b90505b601560019054906101000a900460ff16801561280b5750603c8110155b1561282b575f601560016101000a81548160ff0219169083151502179055505b6104b081106128e8575f60155f6101000a81548160ff021916908315150217905550600e60119054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600e60149054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600f5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16601381905550612a8e565b61025881106129bc57600e60109054906101000a900460ff166129b757600d60119054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600d60149054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600e5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166013819055506001600e60106101000a81548160ff0219169083151502179055505b612a8d565b61012c8110612a8c57600d60109054906101000a900460ff16612a8b57600c60119054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600c60149054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600d5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166013819055506001600d60106101000a81548160ff0219169083151502179055505b5b5b5b5050565b5f600267ffffffffffffffff811115612aae57612aad613a0c565b5b604051908082528060200260200182016040528015612adc5781602001602082028036833780820191505090505b50905030815f81518110612af357612af2613a39565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612b6257612b61613a39565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612bfd959493929190613b56565b5f604051808303815f87803b158015612c14575f80fd5b505af1158015612c26573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612c7082612c2e565b612c7a8185612c38565b9350612c8a818560208601612c48565b612c9381612c56565b840191505092915050565b5f6020820190508181035f830152612cb68184612c66565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612d00612cfb612cf684612cbe565b612cdd565b612cbe565b9050919050565b5f612d1182612ce6565b9050919050565b5f612d2282612d07565b9050919050565b612d3281612d18565b82525050565b5f602082019050612d4b5f830184612d29565b92915050565b5f80fd5b5f612d5f82612cbe565b9050919050565b612d6f81612d55565b8114612d79575f80fd5b50565b5f81359050612d8a81612d66565b92915050565b5f819050919050565b612da281612d90565b8114612dac575f80fd5b50565b5f81359050612dbd81612d99565b92915050565b5f8060408385031215612dd957612dd8612d51565b5b5f612de685828601612d7c565b9250506020612df785828601612daf565b9150509250929050565b5f8115159050919050565b612e1581612e01565b82525050565b5f602082019050612e2e5f830184612e0c565b92915050565b5f62ffffff82169050919050565b612e4b81612e34565b82525050565b5f602082019050612e645f830184612e42565b92915050565b612e7381612d90565b82525050565b5f602082019050612e8c5f830184612e6a565b92915050565b5f805f60608486031215612ea957612ea8612d51565b5b5f612eb686828701612d7c565b9350506020612ec786828701612d7c565b9250506040612ed886828701612daf565b9150509250925092565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612f0681612ee2565b82525050565b5f602082019050612f1f5f830184612efd565b92915050565b5f60ff82169050919050565b612f3a81612f25565b82525050565b5f602082019050612f535f830184612f31565b92915050565b612f6281612d55565b82525050565b5f602082019050612f7b5f830184612f59565b92915050565b612f8a81612e34565b8114612f94575f80fd5b50565b5f81359050612fa581612f81565b92915050565b5f8060408385031215612fc157612fc0612d51565b5b5f612fce85828601612f97565b9250506020612fdf85828601612f97565b9150509250929050565b5f60208284031215612ffe57612ffd612d51565b5b5f61300b84828501612d7c565b91505092915050565b5f67ffffffffffffffff82169050919050565b61303081613014565b82525050565b5f6020820190506130495f830184613027565b92915050565b5f806040838503121561306557613064612d51565b5b5f61307285828601612d7c565b925050602061308385828601612d7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130d157607f821691505b6020821081036130e4576130e361308d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61312182612d90565b915061312c83612d90565b9250828201905080821115613144576131436130ea565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61317e602083612c38565b91506131898261314a565b602082019050919050565b5f6020820190508181035f8301526131ab81613172565b9050919050565b7f43616e6e6f742072616973652062757920746178206f766572203525000000005f82015250565b5f6131e6601c83612c38565b91506131f1826131b2565b602082019050919050565b5f6020820190508181035f830152613213816131da565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f61324e601683612c38565b91506132598261321a565b602082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f6132b6601783612c38565b91506132c182613282565b602082019050919050565b5f6020820190508181035f8301526132e3816132aa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613344602583612c38565b915061334f826132ea565b604082019050919050565b5f6020820190508181035f83015261337181613338565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133d2602683612c38565b91506133dd82613378565b604082019050919050565b5f6020820190508181035f8301526133ff816133c6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613460602483612c38565b915061346b82613406565b604082019050919050565b5f6020820190508181035f83015261348d81613454565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ee602283612c38565b91506134f982613494565b604082019050919050565b5f6020820190508181035f83015261351b816134e2565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613556601d83612c38565b915061356182613522565b602082019050919050565b5f6020820190508181035f8301526135838161354a565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6135be601283612c38565b91506135c98261358a565b602082019050919050565b5f6020820190508181035f8301526135eb816135b2565b9050919050565b5f6135fc82612d90565b915061360783612d90565b925082820390508181111561361f5761361e6130ea565b5b92915050565b5f61362f82612d90565b915061363a83612d90565b925082820261364881612d90565b9150828204841483151761365f5761365e6130ea565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61369d82612d90565b91506136a883612d90565b9250826136b8576136b7613666565b5b828204905092915050565b7f4d61782057616c6c6574000000000000000000000000000000000000000000005f82015250565b5f6136f7600a83612c38565b9150613702826136c3565b602082019050919050565b5f6020820190508181035f830152613724816136eb565b9050919050565b7f5472616e736665722044656c61790000000000000000000000000000000000005f82015250565b5f61375f600e83612c38565b915061376a8261372b565b602082019050919050565b5f6020820190508181035f83015261378c81613753565b9050919050565b7f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079655f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137ed602183612c38565b91506137f882613793565b604082019050919050565b5f6020820190508181035f83015261381a816137e1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61387b602583612c38565b915061388682613821565b604082019050919050565b5f6020820190508181035f8301526138a88161386f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613909602383612c38565b9150613914826138af565b604082019050919050565b5f6020820190508181035f830152613936816138fd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613997602683612c38565b91506139a28261393d565b604082019050919050565b5f6020820190508181035f8301526139c48161398b565b9050919050565b5f81905092915050565b50565b5f6139e35f836139cb565b91506139ee826139d5565b5f82019050919050565b5f613a02826139d8565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613a89613a84613a7f84613a66565b612cdd565b612d90565b9050919050565b613a9981613a6f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ad181612d55565b82525050565b5f613ae28383613ac8565b60208301905092915050565b5f602082019050919050565b5f613b0482613a9f565b613b0e8185613aa9565b9350613b1983613ab9565b805f5b83811015613b49578151613b308882613ad7565b9750613b3b83613aee565b925050600181019050613b1c565b5085935050505092915050565b5f60a082019050613b695f830188612e6a565b613b766020830187613a90565b8181036040830152613b888186613afa565b9050613b976060830185612f59565b613ba46080830184612e6a565b969550505050505056fea2646970667358221220cfa937792bdd325bf0823091088694cb83d89c6b6b57a3238d678e96f777abc464736f6c63430008190033
Deployed Bytecode
0x6080604052600436106102e7575f3560e01c80637f5fd71c1161018f578063ad5c4648116100db578063cc1776d311610094578063dd62ed3e1161006e578063dd62ed3e14610b0c578063ed5a0ec014610b48578063f2fde38b14610b72578063f8b45b0514610b9a576102ee565b8063cc1776d314610a8e578063d0cd578a14610ab8578063d7e71bf814610ae2576102ee565b8063ad5c464814610980578063b0249cc6146109aa578063b3b19d39146109e6578063ba92c71c14610a10578063c78d0fa014610a3a578063c876d0b914610a64576102ee565b80638da5cb5b116101485780639e93ad8e116101225780639e93ad8e146108b4578063a457c2d7146108de578063a5ece9411461091a578063a9059cbb14610944576102ee565b80638da5cb5b146108365780638e385a2a1461086057806395d89b411461088a576102ee565b80637f5fd71c1461073c578063860a32ec146107665780638a7814c8146107905780638a8c523c146107ba5780638b799060146107d05780638d3e6e40146107fa576102ee565b8063452ed4f11161024e57806361286e771161020757806370a08231116101e157806370a08231146106aa578063715018a6146106e657806371ac0a18146106fc578063751039fc14610726576102ee565b806361286e771461062c578063638b1b141461065657806365cf7c9b14610680576102ee565b8063452ed4f11461052057806348792bd31461054a5780634b356f47146105745780634f7041a51461059c57806353371be0146105c65780635a90a49e146105f0576102ee565b80632645654f116102a05780632645654f146104125780632bdc2a491461043c578063313ce56714610466578063362919a71461049057806339509351146104ba578063432e95a5146104f6576102ee565b806306fdde03146102f25780630758d9241461031c578063095ea7b3146103465780630a2808731461038257806318160ddd146103ac57806323b872dd146103d6576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b50610306610bc4565b6040516103139190612c9e565b60405180910390f35b348015610327575f80fd5b50610330610c54565b60405161033d9190612d38565b60405180910390f35b348015610351575f80fd5b5061036c60048036038101906103679190612dc3565b610c78565b6040516103799190612e1b565b60405180910390f35b34801561038d575f80fd5b50610396610c9a565b6040516103a39190612e51565b60405180910390f35b3480156103b7575f80fd5b506103c0610caf565b6040516103cd9190612e79565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612e92565b610cb8565b6040516104099190612e1b565b60405180910390f35b34801561041d575f80fd5b50610426610ce6565b6040516104339190612e51565b60405180910390f35b348015610447575f80fd5b50610450610cfb565b60405161045d9190612f0c565b60405180910390f35b348015610471575f80fd5b5061047a610d1c565b6040516104879190612f40565b60405180910390f35b34801561049b575f80fd5b506104a4610d24565b6040516104b19190612e1b565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190612dc3565b610d36565b6040516104ed9190612e1b565b60405180910390f35b348015610501575f80fd5b5061050a610d6c565b6040516105179190612e79565b60405180910390f35b34801561052b575f80fd5b50610534610d72565b6040516105419190612f68565b60405180910390f35b348015610555575f80fd5b5061055e610d96565b60405161056b9190612e51565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190612fab565b610dab565b005b3480156105a7575f80fd5b506105b0610f61565b6040516105bd9190612e51565b60405180910390f35b3480156105d1575f80fd5b506105da610f76565b6040516105e79190612e1b565b60405180910390f35b3480156105fb575f80fd5b5061061660048036038101906106119190612fe9565b610f88565b6040516106239190612e1b565b60405180910390f35b348015610637575f80fd5b50610640610fa5565b60405161064d9190612e1b565b60405180910390f35b348015610661575f80fd5b5061066a610fb8565b6040516106779190612f68565b60405180910390f35b34801561068b575f80fd5b50610694610fdd565b6040516106a19190612e79565b60405180910390f35b3480156106b5575f80fd5b506106d060048036038101906106cb9190612fe9565b610fe3565b6040516106dd9190612e79565b60405180910390f35b3480156106f1575f80fd5b506106fa611028565b005b348015610707575f80fd5b5061071061117b565b60405161071d9190612e1b565b60405180910390f35b348015610731575f80fd5b5061073a61118e565b005b348015610747575f80fd5b5061075061128d565b60405161075d9190612e51565b60405180910390f35b348015610771575f80fd5b5061077a6112a2565b6040516107879190612e1b565b60405180910390f35b34801561079b575f80fd5b506107a46112b4565b6040516107b19190612e51565b60405180910390f35b3480156107c5575f80fd5b506107ce6112c9565b005b3480156107db575f80fd5b506107e461149d565b6040516107f19190612f0c565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190612fe9565b6114be565b60405161082d9190612e1b565b60405180910390f35b348015610841575f80fd5b5061084a6114db565b6040516108579190612f68565b60405180910390f35b34801561086b575f80fd5b50610874611503565b6040516108819190612e51565b60405180910390f35b348015610895575f80fd5b5061089e611518565b6040516108ab9190612c9e565b60405180910390f35b3480156108bf575f80fd5b506108c86115a8565b6040516108d59190613036565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190612dc3565b6115ae565b6040516109119190612e1b565b60405180910390f35b348015610925575f80fd5b5061092e611623565b60405161093b9190612f68565b60405180910390f35b34801561094f575f80fd5b5061096a60048036038101906109659190612dc3565b611648565b6040516109779190612e1b565b60405180910390f35b34801561098b575f80fd5b5061099461166a565b6040516109a19190612f68565b60405180910390f35b3480156109b5575f80fd5b506109d060048036038101906109cb9190612fe9565b61168e565b6040516109dd9190612e1b565b60405180910390f35b3480156109f1575f80fd5b506109fa6116ab565b604051610a079190612e51565b60405180910390f35b348015610a1b575f80fd5b50610a246116c0565b604051610a319190612e51565b60405180910390f35b348015610a45575f80fd5b50610a4e6116d5565b604051610a5b9190612e79565b60405180910390f35b348015610a6f575f80fd5b50610a786116f9565b604051610a859190612e1b565b60405180910390f35b348015610a99575f80fd5b50610aa261170c565b604051610aaf9190612e51565b60405180910390f35b348015610ac3575f80fd5b50610acc611721565b604051610ad99190612f0c565b60405180910390f35b348015610aed575f80fd5b50610af6611742565b604051610b039190612f0c565b60405180910390f35b348015610b17575f80fd5b50610b326004803603810190610b2d919061304f565b611763565b604051610b3f9190612e79565b60405180910390f35b348015610b53575f80fd5b50610b5c6117e5565b604051610b699190612e1b565b60405180910390f35b348015610b7d575f80fd5b50610b986004803603810190610b939190612fe9565b6117f8565b005b348015610ba5575f80fd5b50610bae6119ba565b604051610bbb9190612e79565b60405180910390f35b606060038054610bd3906130ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610bff906130ba565b8015610c4a5780601f10610c2157610100808354040283529160200191610c4a565b820191905f5260205f20905b815481529060010190602001808311610c2d57829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f80610c826119c0565b9050610c8f8185856119c7565b600191505092915050565b600b601a9054906101000a900462ffffff1681565b5f600254905090565b5f80610cc26119c0565b9050610ccf858285611b8a565b610cda858585611c15565b60019150509392505050565b600d60149054906101000a900462ffffff1681565b600f5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f6012905090565b60155f9054906101000a900460ff1681565b5f80610d406119c0565b9050610d61818585610d528589611763565b610d5c9190613117565b6119c7565b600191505092915050565b60105481565b7f00000000000000000000000020070eaa347a83e58220fca8fd9086096b8f129f81565b600e60149054906101000a900462ffffff1681565b610db36119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613194565b60405180910390fd5b600b60149054906101000a900462ffffff1662ffffff168262ffffff161080610e7157506101f48262ffffff1611155b610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea7906131fc565b60405180910390fd5b600b60179054906101000a900462ffffff1662ffffff168162ffffff161080610ee057506101f48162ffffff1611155b610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906131fc565b60405180910390fd5b81600b60146101000a81548162ffffff021916908362ffffff16021790555080600b60176101000a81548162ffffff021916908362ffffff1602179055505050565b600b60149054906101000a900462ffffff1681565b60085f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b600e60109054906101000a900460ff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110306119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590613194565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60109054906101000a900460ff1681565b6111966119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b90613194565b60405180910390fd5b60125f9054906101000a900460ff16611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990613264565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b601d9054906101000a900462ffffff1681565b60125f9054906101000a900460ff1681565b600e60119054906101000a900462ffffff1681565b6112d16119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690613194565b60405180910390fd5b60085f9054906101000a900460ff16156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906132cc565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550426014819055506001601560016101000a81548160ff021916908315150217905550600b601a9054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600b601d9054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600c5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166013819055506001600c60106101000a81548160ff021916908315150217905550565b600d5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60119054906101000a900462ffffff1681565b606060048054611527906130ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611553906130ba565b801561159e5780601f106115755761010080835404028352916020019161159e565b820191905f5260205f20905b81548152906001019060200180831161158157829003601f168201915b5050505050905090565b61271081565b5f806115b86119c0565b90505f6115c58286611763565b90508381101561160a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116019061335a565b60405180910390fd5b61161782868684036119c7565b60019250505092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f806116526119c0565b905061165f818585611c15565b600191505092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6009602052805f5260405f205f915054906101000a900460ff1681565b600c60149054906101000a900462ffffff1681565b600c60119054906101000a900462ffffff1681565b7f00000000000000000000000000000000000000000000054b40b1f852bda0000081565b601560019054906101000a900460ff1681565b600b60179054906101000a900462ffffff1681565b600c5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d60109054906101000a900460ff1681565b6118006119c0565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590613194565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f3906133e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613476565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613504565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7d9190612e79565b60405180910390a3505050565b5f611b958484611763565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0f5781811015611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf89061356c565b60405180910390fd5b611c0e84848484036119c7565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cb3575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2a5760085f9054906101000a900460ff16611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd906135d4565b60405180910390fd5b611d11838383611d3a565b81611d1c91906135f2565b9050611d29838383611f41565b5b611d35838383612344565b505050565b5f7f00000000000000000000000000000000000000000000054b40b1f852bda00000611d6530610fe3565b10158015611dba575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dd45750436001601054611dd19190613117565b11155b15611de257611de161259a565b5b60155f9054906101000a900460ff1615611dff57611dfe6127cf565b5b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611e6957600b60179054906101000a900462ffffff169050611ece565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ecd57600b60149054906101000a900462ffffff1690505b5b5f8162ffffff161115611f235761271067ffffffffffffffff168162ffffff1685611ef99190613625565b611f039190613693565b9150611f228630846fffffffffffffffffffffffffffffffff16612344565b5b816fffffffffffffffffffffffffffffffff16925050509392505050565b60125f9054906101000a900460ff161561233f575f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690505f611fac84610fe3565b905060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612002575081155b1561205c5760135481846120169190613117565b1115612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e9061370d565b60405180910390fd5b6120b3565b816120b25760135481846120709190613117565b11156120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a89061370d565b60405180910390fd5b5b5b601560019054906101000a900460ff161561233c577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561217057507f00000000000000000000000020070eaa347a83e58220fca8fd9086096b8f129f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233b574360115f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613775565b60405180910390fd5b7f00000000000000000000000020070eaa347a83e58220fca8fd9086096b8f129f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036122b6578373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90613803565b60405180910390fd5b5b4360115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504360115f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b50505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124179061391f565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249a906139ad565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161258c9190612e79565b60405180910390a350505050565b5f6125a430610fe3565b90505f81036125b357506127cd565b43601081905550600a7f00000000000000000000000000000000000000000000054b40b1f852bda000006125e79190613625565b81111561261e57600a7f00000000000000000000000000000000000000000000054b40b1f852bda0000061261b9190613625565b90505b5f8111156127cb5761262f81612a92565b5f4790505f8073ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273e575f60056002846126989190613625565b6126a29190613693565b9050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516126e9906139f8565b5f6040518083038185875af1925050503d805f8114612723576040519150601f19603f3d011682016040523d82523d5f602084013e612728565b606091505b505080925050808361273a91906135f2565b9250505b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612783906139f8565b5f6040518083038185875af1925050503d805f81146127bd576040519150601f19603f3d011682016040523d82523d5f602084013e6127c2565b606091505b50508091505050505b505b565b5f4290505f60145482106127ee57601454826127eb91906135f2565b90505b601560019054906101000a900460ff16801561280b5750603c8110155b1561282b575f601560016101000a81548160ff0219169083151502179055505b6104b081106128e8575f60155f6101000a81548160ff021916908315150217905550600e60119054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600e60149054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600f5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16601381905550612a8e565b61025881106129bc57600e60109054906101000a900460ff166129b757600d60119054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600d60149054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600e5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166013819055506001600e60106101000a81548160ff0219169083151502179055505b612a8d565b61012c8110612a8c57600d60109054906101000a900460ff16612a8b57600c60119054906101000a900462ffffff16600b60146101000a81548162ffffff021916908362ffffff160217905550600c60149054906101000a900462ffffff16600b60176101000a81548162ffffff021916908362ffffff160217905550600d5f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166013819055506001600d60106101000a81548160ff0219169083151502179055505b5b5b5b5050565b5f600267ffffffffffffffff811115612aae57612aad613a0c565b5b604051908082528060200260200182016040528015612adc5781602001602082028036833780820191505090505b50905030815f81518110612af357612af2613a39565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612b6257612b61613a39565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612bfd959493929190613b56565b5f604051808303815f87803b158015612c14575f80fd5b505af1158015612c26573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612c7082612c2e565b612c7a8185612c38565b9350612c8a818560208601612c48565b612c9381612c56565b840191505092915050565b5f6020820190508181035f830152612cb68184612c66565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612d00612cfb612cf684612cbe565b612cdd565b612cbe565b9050919050565b5f612d1182612ce6565b9050919050565b5f612d2282612d07565b9050919050565b612d3281612d18565b82525050565b5f602082019050612d4b5f830184612d29565b92915050565b5f80fd5b5f612d5f82612cbe565b9050919050565b612d6f81612d55565b8114612d79575f80fd5b50565b5f81359050612d8a81612d66565b92915050565b5f819050919050565b612da281612d90565b8114612dac575f80fd5b50565b5f81359050612dbd81612d99565b92915050565b5f8060408385031215612dd957612dd8612d51565b5b5f612de685828601612d7c565b9250506020612df785828601612daf565b9150509250929050565b5f8115159050919050565b612e1581612e01565b82525050565b5f602082019050612e2e5f830184612e0c565b92915050565b5f62ffffff82169050919050565b612e4b81612e34565b82525050565b5f602082019050612e645f830184612e42565b92915050565b612e7381612d90565b82525050565b5f602082019050612e8c5f830184612e6a565b92915050565b5f805f60608486031215612ea957612ea8612d51565b5b5f612eb686828701612d7c565b9350506020612ec786828701612d7c565b9250506040612ed886828701612daf565b9150509250925092565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612f0681612ee2565b82525050565b5f602082019050612f1f5f830184612efd565b92915050565b5f60ff82169050919050565b612f3a81612f25565b82525050565b5f602082019050612f535f830184612f31565b92915050565b612f6281612d55565b82525050565b5f602082019050612f7b5f830184612f59565b92915050565b612f8a81612e34565b8114612f94575f80fd5b50565b5f81359050612fa581612f81565b92915050565b5f8060408385031215612fc157612fc0612d51565b5b5f612fce85828601612f97565b9250506020612fdf85828601612f97565b9150509250929050565b5f60208284031215612ffe57612ffd612d51565b5b5f61300b84828501612d7c565b91505092915050565b5f67ffffffffffffffff82169050919050565b61303081613014565b82525050565b5f6020820190506130495f830184613027565b92915050565b5f806040838503121561306557613064612d51565b5b5f61307285828601612d7c565b925050602061308385828601612d7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130d157607f821691505b6020821081036130e4576130e361308d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61312182612d90565b915061312c83612d90565b9250828201905080821115613144576131436130ea565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61317e602083612c38565b91506131898261314a565b602082019050919050565b5f6020820190508181035f8301526131ab81613172565b9050919050565b7f43616e6e6f742072616973652062757920746178206f766572203525000000005f82015250565b5f6131e6601c83612c38565b91506131f1826131b2565b602082019050919050565b5f6020820190508181035f830152613213816131da565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f61324e601683612c38565b91506132598261321a565b602082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f6132b6601783612c38565b91506132c182613282565b602082019050919050565b5f6020820190508181035f8301526132e3816132aa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613344602583612c38565b915061334f826132ea565b604082019050919050565b5f6020820190508181035f83015261337181613338565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133d2602683612c38565b91506133dd82613378565b604082019050919050565b5f6020820190508181035f8301526133ff816133c6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613460602483612c38565b915061346b82613406565b604082019050919050565b5f6020820190508181035f83015261348d81613454565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ee602283612c38565b91506134f982613494565b604082019050919050565b5f6020820190508181035f83015261351b816134e2565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613556601d83612c38565b915061356182613522565b602082019050919050565b5f6020820190508181035f8301526135838161354a565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6135be601283612c38565b91506135c98261358a565b602082019050919050565b5f6020820190508181035f8301526135eb816135b2565b9050919050565b5f6135fc82612d90565b915061360783612d90565b925082820390508181111561361f5761361e6130ea565b5b92915050565b5f61362f82612d90565b915061363a83612d90565b925082820261364881612d90565b9150828204841483151761365f5761365e6130ea565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61369d82612d90565b91506136a883612d90565b9250826136b8576136b7613666565b5b828204905092915050565b7f4d61782057616c6c6574000000000000000000000000000000000000000000005f82015250565b5f6136f7600a83612c38565b9150613702826136c3565b602082019050919050565b5f6020820190508181035f830152613724816136eb565b9050919050565b7f5472616e736665722044656c61790000000000000000000000000000000000005f82015250565b5f61375f600e83612c38565b915061376a8261372b565b602082019050919050565b5f6020820190508181035f83015261378c81613753565b9050919050565b7f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079655f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137ed602183612c38565b91506137f882613793565b604082019050919050565b5f6020820190508181035f83015261381a816137e1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61387b602583612c38565b915061388682613821565b604082019050919050565b5f6020820190508181035f8301526138a88161386f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613909602383612c38565b9150613914826138af565b604082019050919050565b5f6020820190508181035f830152613936816138fd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613997602683612c38565b91506139a28261393d565b604082019050919050565b5f6020820190508181035f8301526139c48161398b565b9050919050565b5f81905092915050565b50565b5f6139e35f836139cb565b91506139ee826139d5565b5f82019050919050565b5f613a02826139d8565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613a89613a84613a7f84613a66565b612cdd565b612d90565b9050919050565b613a9981613a6f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ad181612d55565b82525050565b5f613ae28383613ac8565b60208301905092915050565b5f602082019050919050565b5f613b0482613a9f565b613b0e8185613aa9565b9350613b1983613ab9565b805f5b83811015613b49578151613b308882613ad7565b9750613b3b83613aee565b925050600181019050613b1c565b5085935050505092915050565b5f60a082019050613b695f830188612e6a565b613b766020830187613a90565b8181036040830152613b888186613afa565b9050613b976060830185612f59565b613ba46080830184612e6a565b969550505050505056fea2646970667358221220cfa937792bdd325bf0823091088694cb83d89c6b6b57a3238d678e96f777abc464736f6c63430008190033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.