Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Initialize | 483306 | 9 days ago | IN | 0 S | 0.00009629 |
Loading...
Loading
Contract Name:
InterchainGasPaymaster
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;/*@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ HYPERLANE @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@*/// ============ Internal Imports ============import {Message} from "../../libs/Message.sol";import {StandardHookMetadata} from "../libs/StandardHookMetadata.sol";import {IGasOracle} from "../../interfaces/IGasOracle.sol";import {IInterchainGasPaymaster} from "../../interfaces/IInterchainGasPaymaster.sol";import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";import {AbstractPostDispatchHook} from "../libs/AbstractPostDispatchHook.sol";import {Indexed} from "../../libs/Indexed.sol";// ============ External Imports ============import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;import {TypeCasts} from "./TypeCasts.sol";/*** @title Hyperlane Message Library* @notice Library for formatted messages used by Mailbox**/library Message {using TypeCasts for bytes32;uint256 private constant VERSION_OFFSET = 0;uint256 private constant NONCE_OFFSET = 1;uint256 private constant ORIGIN_OFFSET = 5;uint256 private constant SENDER_OFFSET = 9;uint256 private constant DESTINATION_OFFSET = 41;uint256 private constant RECIPIENT_OFFSET = 45;uint256 private constant BODY_OFFSET = 77;/*** @notice Returns formatted (packed) Hyperlane message with provided fields* @dev This function should only be used in memory message construction.* @param _version The version of the origin and destination Mailboxes* @param _nonce A nonce to uniquely identify the message on its origin chain* @param _originDomain Domain of origin chain
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;/*@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ HYPERLANE @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@*//*** Format of metadata:** [0:2] variant* [2:34] msg.value* [34:66] Gas limit for message (IGP)* [66:86] Refund address for message (IGP)* [86:] Custom metadata*/library StandardHookMetadata {struct Metadata {
123456789101112131415// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;interface IGasOracle {struct RemoteGasData {// The exchange rate of the remote native token quoted in the local native token.// Scaled with 10 decimals, i.e. 1e10 is "one".uint128 tokenExchangeRate;uint128 gasPrice;}function getExchangeRateAndGasPrice(uint32 _destinationDomain) external view returns (uint128 tokenExchangeRate, uint128 gasPrice);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.6.11;/*** @title IInterchainGasPaymaster* @notice Manages payments on a source chain to cover gas costs of relaying* messages to destination chains.*/interface IInterchainGasPaymaster {/*** @notice Emitted when a payment is made for a message's gas costs.* @param messageId The ID of the message to pay for.* @param destinationDomain The domain of the destination chain.* @param gasAmount The amount of destination gas paid for.* @param payment The amount of native tokens paid.*/event GasPayment(bytes32 indexed messageId,uint32 indexed destinationDomain,uint256 gasAmount,uint256 payment);function payForGas(bytes32 _messageId,uint32 _destinationDomain,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;/*@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ HYPERLANE @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@*/interface IPostDispatchHook {enum Types {UNUSED,ROUTING,AGGREGATION,MERKLE_TREE,INTERCHAIN_GAS_PAYMASTER,FALLBACK_ROUTING,ID_AUTH_ISM,PAUSABLE,PROTOCOL_FEE,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;/*@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ HYPERLANE @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@*/// ============ Internal Imports ============import {StandardHookMetadata} from "./StandardHookMetadata.sol";import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";import {PackageVersioned} from "../../PackageVersioned.sol";/*** @title AbstractPostDispatch* @notice Abstract post dispatch hook supporting the current global hook metadata variant.*/abstract contract AbstractPostDispatchHook isIPostDispatchHook,
12345678910// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.8.0;contract Indexed {uint256 public immutable deployedBlock;constructor() {deployedBlock = block.number;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)pragma solidity ^0.8.0;import "./math/Math.sol";import "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {bytes16 private constant _SYMBOLS = "0123456789abcdef";uint8 private constant _ADDRESS_LENGTH = 20;/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;string memory buffer = new string(length);uint256 ptr;/// @solidity memory-safe-assemblyassembly {ptr := add(buffer, add(32, length))
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed** Furthermore, `isContract` will also return true if the target contract within
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/ContextUpgradeable.sol";import "../proxy/utils/Initializable.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/**
123456789101112131415161718// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.6.11;library TypeCasts {// alignment preserving castfunction addressToBytes32(address _addr) internal pure returns (bytes32) {return bytes32(uint256(uint160(_addr)));}// alignment preserving castfunction bytes32ToAddress(bytes32 _buf) internal pure returns (address) {require(uint256(_buf) <= uint256(type(uint160).max),"TypeCasts: bytes32ToAddress overflow");return address(uint160(uint256(_buf)));}}
1234567891011// SPDX-License-Identifier: MIT OR Apache-2.0pragma solidity >=0.6.11;/*** @title PackageVersioned* @notice Package version getter for contracts**/abstract contract PackageVersioned {// GENERATED CODE - DO NOT EDITstring public constant PACKAGE_VERSION = "5.8.3";}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)pragma solidity ^0.8.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Down, // Toward negative infinityUp, // Toward infinityZero // Toward zero}/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a > b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.0;/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Returns the largest of two signed numbers.*/function max(int256 a, int256 b) internal pure returns (int256) {return a > b ? a : b;}/*** @dev Returns the smallest of two signed numbers.*/function min(int256 a, int256 b) internal pure returns (int256) {return a < b ? a : b;}/*** @dev Returns the average of two signed numbers without overflow.* The result is rounded towards zero.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;import "../proxy/utils/Initializable.sol";/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract ContextUpgradeable is Initializable {function __Context_init() internal onlyInitializing {}function __Context_init_unchained() internal onlyInitializing {}function _msgSender() internal view virtual returns (address) {return msg.sender;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)pragma solidity ^0.8.2;import "../../utils/AddressUpgradeable.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** The initialization functions use a version number. Once a version number is used, it is consumed and cannot be* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in* case an upgrade adds a module that needs to be initialized.** For example:** [.hljs-theme-light.nopadding]* ```solidity* contract MyToken is ERC20Upgradeable {* function initialize() initializer public {* __ERC20_init("MyToken", "MTK");* }* }
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library AddressUpgradeable {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed** Furthermore, `isContract` will also return true if the target contract within
123456789101112131415161718{"optimizer": {"enabled": true,"runs": 999999},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"}],"name":"BeneficiarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"remoteDomain","type":"uint32"},{"indexed":false,"internalType":"address","name":"gasOracle","type":"address"},{"indexed":false,"internalType":"uint96","name":"gasOverhead","type":"uint96"}],"name":"DestinationGasConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":true,"internalType":"uint32","name":"destinationDomain","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"gasAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"payment","type":"uint256"}],"name":"GasPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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"},{"inputs":[],"name":"PACKAGE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"destinationGasConfigs","outputs":[{"internalType":"contract IGasOracle","name":"gasOracle","type":"address"},{"internalType":"uint96","name":"gasOverhead","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_destinationDomain","type":"uint32"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"}],"name":"destinationGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_destinationDomain","type":"uint32"}],"name":"getExchangeRateAndGasPrice","outputs":[{"internalType":"uint128","name":"tokenExchangeRate","type":"uint128"},{"internalType":"uint128","name":"gasPrice","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hookType","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"},{"internalType":"uint32","name":"_destinationDomain","type":"uint32"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"payForGas","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"metadata","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"name":"postDispatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"metadata","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"name":"quoteDispatch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_destinationDomain","type":"uint32"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"}],"name":"quoteGasPayment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"setBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"remoteDomain","type":"uint32"},{"components":[{"internalType":"contract IGasOracle","name":"gasOracle","type":"address"},{"internalType":"uint96","name":"gasOverhead","type":"uint96"}],"internalType":"struct InterchainGasPaymaster.DomainGasConfig","name":"config","type":"tuple"}],"internalType":"struct InterchainGasPaymaster.GasParam[]","name":"_configs","type":"tuple[]"}],"name":"setDestinationGasConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"supportsMetadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405261c35060a05234801561001657600080fd5b504360805260805160a051611d976100406000396000610e410152600061037f0152611d976000f3fe6080604052600436106101445760003560e01c806360fcef7c116100c0578063a692979311610074578063e445e7dd11610059578063e445e7dd14610462578063e5320bb91461047e578063f2fde38b146104ae57600080fd5b8063a692979314610422578063aaccd2301461044257600080fd5b806382ea7bfe116100a557806382ea7bfe1461036d5780638da5cb5b146103a157806393c44847146103cc57600080fd5b806360fcef7c1461030f578063715018a61461035857600080fd5b806338af3eed11610117578063485cc955116100fc578063485cc955146102ba57806348f4e6c1146102da5780634e71d92d146102fa57600080fd5b806338af3eed146101c457806343c467c01461021657600080fd5b8063086011b91461014957806311bf2c181461015e5780631c31f7101461017157806326d5b1a614610191575b600080fd5b61015c61015736600461172f565b6104ce565b005b61015c61016c3660046117d6565b61057b565b34801561017d57600080fd5b5061015c61018c36600461181e565b610715565b34801561019d57600080fd5b506101b16101ac36600461183b565b610729565b6040519081526020015b60405180910390f35b3480156101d057600080fd5b506066546101f19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bb565b34801561022257600080fd5b50610281610231366004611865565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016101bb565b3480156102c657600080fd5b5061015c6102d5366004611880565b610779565b3480156102e657600080fd5b5061015c6102f53660046118b9565b610920565b34801561030657600080fd5b5061015c6109ca565b34801561031b57600080fd5b5061032f61032a366004611865565b610a94565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101bb565b34801561036457600080fd5b5061015c610be1565b34801561037957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ad57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166101f1565b3480156103d857600080fd5b506104156040518060400160405280600581526020017f352e382e3300000000000000000000000000000000000000000000000000000081525081565b6040516101bb9190611952565b34801561042e57600080fd5b506101b161043d36600461183b565b610bf5565b34801561044e57600080fd5b506101b161045d36600461172f565b610c5e565b34801561046e57600080fd5b50604051600481526020016101bb565b34801561048a57600080fd5b5061049e6104993660046119a3565b610d0b565b60405190151581526020016101bb565b3480156104ba57600080fd5b5061015c6104c936600461181e565b610d2d565b6104d88484610d0b565b610569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b61057584848484610de1565b50505050565b60006105878484610bf5565b905080341015610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4947503a20696e73756666696369656e7420696e746572636861696e2067617360448201527f207061796d656e740000000000000000000000000000000000000000000000006064820152608401610560565b60006106258234611a14565b905080156106ca5773ffffffffffffffffffffffffffffffffffffffff83166106aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f20726566756e6420616464726573730000000000000000000000000000006044820152606401610560565b6106ca73ffffffffffffffffffffffffffffffffffffffff841682610e7b565b604080518581526020810184905263ffffffff87169188917f65695c3748edae85a24cc2c60b299b31f463050bc259150d2e5802ec8d11720a910160405180910390a3505050505050565b61071d610fd5565b61072681611056565b50565b63ffffffff82166000908152606560205260408120546107709083907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611a27565b90505b92915050565b600054610100900460ff16158080156107995750600054600160ff909116105b806107b35750303b1580156107b3575060005460ff166001145b61083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610560565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561089d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108a56110cf565b6108ae8361116e565b6108b782611056565b801561091b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b610928610fd5565b8060005b81811015610575576109b884848381811061094957610949611a3a565b61095f9260206060909202019081019150611865565b85858481811061097157610971611a3a565b61098a926040606090920201908101915060200161181e565b86868581811061099c5761099c611a3a565b6109b3926060918202019081019150604001611a69565b6111e5565b806109c281611a97565b91505061092c565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d8060008114610a24576040519150601f19603f3d011682016040523d82523d6000602084013e610a29565b606091505b5050905080610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4947503a20636c61696d206661696c65640000000000000000000000000000006044820152606401610560565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680610b4457610ad68463ffffffff16611292565b604051602001610ae69190611acf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261056091600401611952565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd79190611b5a565b9250925050915091565b610be9610fd5565b610bf3600061116e565b565b6000806000610c0385610a94565b90925090506000610c266fffffffffffffffffffffffffffffffff831686611b8d565b90506402540be400610c4a6fffffffffffffffffffffffffffffffff851683611b8d565b610c549190611ba4565b9695505050505050565b6000610c6a8585610d0b565b610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e7400000000000000000000000000006064820152608401610560565b610d0285858585611350565b95945050505050565b600081158061077057506001610d21848461136c565b61ffff16149392505050565b610d35610fd5565b73ffffffffffffffffffffffffffffffffffffffff8116610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610560565b6107268161116e565b610575610e2383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113bd92505050565b610e2d84846113c8565b610e65610e3a86866113c8565b6101ac89897f00000000000000000000000000000000000000000000000000000000000000006113eb565b61016c610e72878761143c565b89908990611450565b80471015610ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610560565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610f3f576040519150601f19603f3d011682016040523d82523d6000602084013e610f44565b606091505b505090508061091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610560565b60335473ffffffffffffffffffffffffffffffffffffffff163314610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610560565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff16611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610560565b610bf36114a2565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff8481168083526bffffffffffffffffffffffff858116602080860182815263ffffffff8b16600081815260658452899020975191519094167401000000000000000000000000000000000000000002951694909417909455845190815291820152918201527f676a23191c2989bd7cc8446122cca792bcdaa0f2d6bbd9c30d8ca031ca94634390606001610912565b6060600061129f83611542565b600101905060008167ffffffffffffffff8111156112bf576112bf611bdf565b6040519080825280601f01601f1916602001820160405280156112e9576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846112f357509392505050565b6000610d0261135f84846113c8565b61043d610e3a86866113c8565b6000611379816002611c0e565b60ff1682101561138b57506000610773565b8260008361139a826002611c0e565b60ff16926113aa93929190611c27565b6113b391611c51565b60f01c9392505050565b805160209091012090565b60006113d8602d60298486611c27565b6113e191611c99565b60e01c9392505050565b60006113f960226020611c0e565b60ff1683101561140a575080611435565b83602284611419826020611c0e565b60ff169261142993929190611c27565b61143291611cdf565b90505b9392505050565b600061077061144b8484611624565b61163d565b600061145e60426014611c0e565b60ff1683101561146f575080611435565b8360428461147e826014611c0e565b60ff169261148e93929190611c27565b61149791611d1b565b60601c949350505050565b600054610100900460ff16611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610560565b610bf33361116e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061158b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106115b7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106115d557662386f26fc10000830492506010015b6305f5e10083106115ed576305f5e100830492506008015b612710831061160157612710830492506004015b60648310611613576064830492506002015b600a83106107735760010192915050565b6000611634602960098486611c27565b61077091611cdf565b600073ffffffffffffffffffffffffffffffffffffffff8211156116e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152608401610560565b5090565b60008083601f8401126116f857600080fd5b50813567ffffffffffffffff81111561171057600080fd5b60208301915083602082850101111561172857600080fd5b9250929050565b6000806000806040858703121561174557600080fd5b843567ffffffffffffffff8082111561175d57600080fd5b611769888389016116e6565b9096509450602087013591508082111561178257600080fd5b5061178f878288016116e6565b95989497509550505050565b803563ffffffff811681146117af57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461072657600080fd5b600080600080608085870312156117ec57600080fd5b843593506117fc6020860161179b565b9250604085013591506060850135611813816117b4565b939692955090935050565b60006020828403121561183057600080fd5b8135611435816117b4565b6000806040838503121561184e57600080fd5b6118578361179b565b946020939093013593505050565b60006020828403121561187757600080fd5b6107708261179b565b6000806040838503121561189357600080fd5b823561189e816117b4565b915060208301356118ae816117b4565b809150509250929050565b600080602083850312156118cc57600080fd5b823567ffffffffffffffff808211156118e457600080fd5b818501915085601f8301126118f857600080fd5b81358181111561190757600080fd5b86602060608302850101111561191c57600080fd5b60209290920196919550909350505050565b60005b83811015611949578181015183820152602001611931565b50506000910152565b602081526000825180602084015261197181604085016020870161192e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080602083850312156119b657600080fd5b823567ffffffffffffffff8111156119cd57600080fd5b6119d9858286016116e6565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610773576107736119e5565b80820180821115610773576107736119e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611a7b57600080fd5b81356bffffffffffffffffffffffff8116811461143557600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac86119e5565b5060010190565b7f436f6e666967757265642049475020646f65736e277420737570706f7274206481527f6f6d61696e200000000000000000000000000000000000000000000000000000602082015260008251611b2d81602685016020870161192e565b9190910160260192915050565b80516fffffffffffffffffffffffffffffffff811681146117af57600080fd5b60008060408385031215611b6d57600080fd5b611b7683611b3a565b9150611b8460208401611b3a565b90509250929050565b8082028115828204841417610773576107736119e5565b600082611bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60ff8181168382160190811115610773576107736119e5565b60008085851115611c3757600080fd5b83861115611c4457600080fd5b5050820193919092039150565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015611c915780818660020360031b1b83161692505b505092915050565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611c915760049490940360031b84901b1690921692915050565b80356020831015610773577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015611c915760149490940360031b84901b169092169291505056fea26469706673582212201784bdeda6de17e52ff303dee6956e8768dd4fe883d1dd754403b247f678e49f64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101445760003560e01c806360fcef7c116100c0578063a692979311610074578063e445e7dd11610059578063e445e7dd14610462578063e5320bb91461047e578063f2fde38b146104ae57600080fd5b8063a692979314610422578063aaccd2301461044257600080fd5b806382ea7bfe116100a557806382ea7bfe1461036d5780638da5cb5b146103a157806393c44847146103cc57600080fd5b806360fcef7c1461030f578063715018a61461035857600080fd5b806338af3eed11610117578063485cc955116100fc578063485cc955146102ba57806348f4e6c1146102da5780634e71d92d146102fa57600080fd5b806338af3eed146101c457806343c467c01461021657600080fd5b8063086011b91461014957806311bf2c181461015e5780631c31f7101461017157806326d5b1a614610191575b600080fd5b61015c61015736600461172f565b6104ce565b005b61015c61016c3660046117d6565b61057b565b34801561017d57600080fd5b5061015c61018c36600461181e565b610715565b34801561019d57600080fd5b506101b16101ac36600461183b565b610729565b6040519081526020015b60405180910390f35b3480156101d057600080fd5b506066546101f19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bb565b34801561022257600080fd5b50610281610231366004611865565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016101bb565b3480156102c657600080fd5b5061015c6102d5366004611880565b610779565b3480156102e657600080fd5b5061015c6102f53660046118b9565b610920565b34801561030657600080fd5b5061015c6109ca565b34801561031b57600080fd5b5061032f61032a366004611865565b610a94565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101bb565b34801561036457600080fd5b5061015c610be1565b34801561037957600080fd5b506101b17f0000000000000000000000000000000000000000000000000000000000075fe781565b3480156103ad57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166101f1565b3480156103d857600080fd5b506104156040518060400160405280600581526020017f352e382e3300000000000000000000000000000000000000000000000000000081525081565b6040516101bb9190611952565b34801561042e57600080fd5b506101b161043d36600461183b565b610bf5565b34801561044e57600080fd5b506101b161045d36600461172f565b610c5e565b34801561046e57600080fd5b50604051600481526020016101bb565b34801561048a57600080fd5b5061049e6104993660046119a3565b610d0b565b60405190151581526020016101bb565b3480156104ba57600080fd5b5061015c6104c936600461181e565b610d2d565b6104d88484610d0b565b610569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b61057584848484610de1565b50505050565b60006105878484610bf5565b905080341015610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4947503a20696e73756666696369656e7420696e746572636861696e2067617360448201527f207061796d656e740000000000000000000000000000000000000000000000006064820152608401610560565b60006106258234611a14565b905080156106ca5773ffffffffffffffffffffffffffffffffffffffff83166106aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f20726566756e6420616464726573730000000000000000000000000000006044820152606401610560565b6106ca73ffffffffffffffffffffffffffffffffffffffff841682610e7b565b604080518581526020810184905263ffffffff87169188917f65695c3748edae85a24cc2c60b299b31f463050bc259150d2e5802ec8d11720a910160405180910390a3505050505050565b61071d610fd5565b61072681611056565b50565b63ffffffff82166000908152606560205260408120546107709083907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611a27565b90505b92915050565b600054610100900460ff16158080156107995750600054600160ff909116105b806107b35750303b1580156107b3575060005460ff166001145b61083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610560565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561089d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108a56110cf565b6108ae8361116e565b6108b782611056565b801561091b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b610928610fd5565b8060005b81811015610575576109b884848381811061094957610949611a3a565b61095f9260206060909202019081019150611865565b85858481811061097157610971611a3a565b61098a926040606090920201908101915060200161181e565b86868581811061099c5761099c611a3a565b6109b3926060918202019081019150604001611a69565b6111e5565b806109c281611a97565b91505061092c565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d8060008114610a24576040519150601f19603f3d011682016040523d82523d6000602084013e610a29565b606091505b5050905080610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4947503a20636c61696d206661696c65640000000000000000000000000000006044820152606401610560565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680610b4457610ad68463ffffffff16611292565b604051602001610ae69190611acf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261056091600401611952565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd79190611b5a565b9250925050915091565b610be9610fd5565b610bf3600061116e565b565b6000806000610c0385610a94565b90925090506000610c266fffffffffffffffffffffffffffffffff831686611b8d565b90506402540be400610c4a6fffffffffffffffffffffffffffffffff851683611b8d565b610c549190611ba4565b9695505050505050565b6000610c6a8585610d0b565b610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e7400000000000000000000000000006064820152608401610560565b610d0285858585611350565b95945050505050565b600081158061077057506001610d21848461136c565b61ffff16149392505050565b610d35610fd5565b73ffffffffffffffffffffffffffffffffffffffff8116610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610560565b6107268161116e565b610575610e2383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113bd92505050565b610e2d84846113c8565b610e65610e3a86866113c8565b6101ac89897f000000000000000000000000000000000000000000000000000000000000c3506113eb565b61016c610e72878761143c565b89908990611450565b80471015610ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610560565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610f3f576040519150601f19603f3d011682016040523d82523d6000602084013e610f44565b606091505b505090508061091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610560565b60335473ffffffffffffffffffffffffffffffffffffffff163314610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610560565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff16611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610560565b610bf36114a2565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff8481168083526bffffffffffffffffffffffff858116602080860182815263ffffffff8b16600081815260658452899020975191519094167401000000000000000000000000000000000000000002951694909417909455845190815291820152918201527f676a23191c2989bd7cc8446122cca792bcdaa0f2d6bbd9c30d8ca031ca94634390606001610912565b6060600061129f83611542565b600101905060008167ffffffffffffffff8111156112bf576112bf611bdf565b6040519080825280601f01601f1916602001820160405280156112e9576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846112f357509392505050565b6000610d0261135f84846113c8565b61043d610e3a86866113c8565b6000611379816002611c0e565b60ff1682101561138b57506000610773565b8260008361139a826002611c0e565b60ff16926113aa93929190611c27565b6113b391611c51565b60f01c9392505050565b805160209091012090565b60006113d8602d60298486611c27565b6113e191611c99565b60e01c9392505050565b60006113f960226020611c0e565b60ff1683101561140a575080611435565b83602284611419826020611c0e565b60ff169261142993929190611c27565b61143291611cdf565b90505b9392505050565b600061077061144b8484611624565b61163d565b600061145e60426014611c0e565b60ff1683101561146f575080611435565b8360428461147e826014611c0e565b60ff169261148e93929190611c27565b61149791611d1b565b60601c949350505050565b600054610100900460ff16611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610560565b610bf33361116e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061158b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106115b7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106115d557662386f26fc10000830492506010015b6305f5e10083106115ed576305f5e100830492506008015b612710831061160157612710830492506004015b60648310611613576064830492506002015b600a83106107735760010192915050565b6000611634602960098486611c27565b61077091611cdf565b600073ffffffffffffffffffffffffffffffffffffffff8211156116e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152608401610560565b5090565b60008083601f8401126116f857600080fd5b50813567ffffffffffffffff81111561171057600080fd5b60208301915083602082850101111561172857600080fd5b9250929050565b6000806000806040858703121561174557600080fd5b843567ffffffffffffffff8082111561175d57600080fd5b611769888389016116e6565b9096509450602087013591508082111561178257600080fd5b5061178f878288016116e6565b95989497509550505050565b803563ffffffff811681146117af57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461072657600080fd5b600080600080608085870312156117ec57600080fd5b843593506117fc6020860161179b565b9250604085013591506060850135611813816117b4565b939692955090935050565b60006020828403121561183057600080fd5b8135611435816117b4565b6000806040838503121561184e57600080fd5b6118578361179b565b946020939093013593505050565b60006020828403121561187757600080fd5b6107708261179b565b6000806040838503121561189357600080fd5b823561189e816117b4565b915060208301356118ae816117b4565b809150509250929050565b600080602083850312156118cc57600080fd5b823567ffffffffffffffff808211156118e457600080fd5b818501915085601f8301126118f857600080fd5b81358181111561190757600080fd5b86602060608302850101111561191c57600080fd5b60209290920196919550909350505050565b60005b83811015611949578181015183820152602001611931565b50506000910152565b602081526000825180602084015261197181604085016020870161192e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080602083850312156119b657600080fd5b823567ffffffffffffffff8111156119cd57600080fd5b6119d9858286016116e6565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610773576107736119e5565b80820180821115610773576107736119e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611a7b57600080fd5b81356bffffffffffffffffffffffff8116811461143557600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac86119e5565b5060010190565b7f436f6e666967757265642049475020646f65736e277420737570706f7274206481527f6f6d61696e200000000000000000000000000000000000000000000000000000602082015260008251611b2d81602685016020870161192e565b9190910160260192915050565b80516fffffffffffffffffffffffffffffffff811681146117af57600080fd5b60008060408385031215611b6d57600080fd5b611b7683611b3a565b9150611b8460208401611b3a565b90509250929050565b8082028115828204841417610773576107736119e5565b600082611bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60ff8181168382160190811115610773576107736119e5565b60008085851115611c3757600080fd5b83861115611c4457600080fd5b5050820193919092039150565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015611c915780818660020360031b1b83161692505b505092915050565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611c915760049490940360031b84901b1690921692915050565b80356020831015610773577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015611c915760149490940360031b84901b169092169291505056fea26469706673582212201784bdeda6de17e52ff303dee6956e8768dd4fe883d1dd754403b247f678e49f64736f6c63430008130033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.