Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RPWMPRA
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-08-15
*/
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity >=0.6.2;
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
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);
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol
// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)
pragma solidity >=0.8.4;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both 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 returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual 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 returns (uint8) {
return 18;
}
/// @inheritdoc IERC20
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/// @inheritdoc IERC20
function balanceOf(address account) public view virtual 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 `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/// @inheritdoc IERC20
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` 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 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* 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 `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` 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.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` 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.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)
pragma solidity ^0.8.20;
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
abstract contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys a `value` amount of tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 value) public virtual {
_burn(_msgSender(), value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, deducting from
* the caller's allowance.
*
* See {ERC20-_burn} and {ERC20-allowance}.
*
* Requirements:
*
* - the caller must have allowance for ``accounts``'s tokens of at least
* `value`.
*/
function burnFrom(address account, uint256 value) public virtual {
_spendAllowance(account, _msgSender(), value);
_burn(account, value);
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: contracts/RPWMPRA.sol
pragma solidity ^0.8.24;
/**
* Maya Preferred Retirement Plan Program Wrapped Token (RPWMPRA)
* ----------------------------------------------------------------
* Issuer/Creator: UK Financial Ltd.
* Owner: 0xAF2587b7e09d7816Fc0867Ea3A8B3058bBaAa16F
* ENS Reference: uk-financial-ltd-corporate-assets.eth
* Symbol: RPWMPRA
* Decimals: 18
*
* Design:
* - Fixed total supply: 240,000,000,000 RPWMPRA (18 decimals)
* - Entire supply minted to corporate distribution wallet (hardcoded)
* - Burnable by holders to retire any unneeded tokens
* - No minting after deployment (fixed supply)
* - Owner is your address from deployment
*
* Underlying reference (not enforced on-chain):
* - SMPRA: 0x8252804BD3424d1A82D9c5077298404c0C00c616
*/
contract RPWMPRA is ERC20, ERC20Burnable, Ownable {
// Informational constants
string public constant ISSUER = "UK Financial Ltd.";
address public constant UNDERLYING_SMPRA = 0x8252804BD3424d1A82D9c5077298404c0C00c616;
// Fixed supply: 240,000,000,000 * 10^18
uint256 public constant TOTAL_SUPPLY_RPWMPRA = 240_000_000_000;
uint256 public constant FIXED_SUPPLY = TOTAL_SUPPLY_RPWMPRA * 10 ** 18;
// Corporate distribution wallet (hardcoded) with ENS reference
address public constant CORPORATE_DISTRIBUTION = 0xAF2587b7e09d7816Fc0867Ea3A8B3058bBaAa16F;
string public constant CORPORATE_DISTRIBUTION_ENS = "uk-financial-ltd-corporate-assets.eth";
event WrapInitialized(
address indexed underlying,
uint256 totalTokensMinted,
address indexed recipient,
string recipientENS
);
constructor()
ERC20("Maya Preferred Retirement Plan Program Wrapped Token", "RPWMPRA")
Ownable(CORPORATE_DISTRIBUTION) // Sets you as contract owner
{
_mint(CORPORATE_DISTRIBUTION, FIXED_SUPPLY);
emit WrapInitialized(
UNDERLYING_SMPRA,
FIXED_SUPPLY,
CORPORATE_DISTRIBUTION,
CORPORATE_DISTRIBUTION_ENS
);
}
// --- Admin safety utilities ---
function rescueERC20(address token, uint256 amount, address to) external onlyOwner {
require(to != address(0), "to=0");
require(token != address(this), "cannot rescue RPWMPRA");
bool ok = ERC20(token).transfer(to, amount);
require(ok, "transfer failed");
}
function rescueETH(address payable to, uint256 amount) external onlyOwner {
require(to != address(0), "to=0");
(bool ok, ) = to.call{value: amount}("");
require(ok, "ETH transfer failed");
}
receive() external payable {}
fallback() external payable {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalTokensMinted","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"string","name":"recipientENS","type":"string"}],"name":"WrapInitialized","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CORPORATE_DISTRIBUTION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORPORATE_DISTRIBUTION_ENS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIXED_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ISSUER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY_RPWMPRA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_SMPRA","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801562000010575f80fd5b5073af2587b7e09d7816fc0867ea3a8b3058bbaaa16f60405180606001604052806034815260200162002624603491396040518060400160405280600781526020017f5250574d50524100000000000000000000000000000000000000000000000000815250816003908162000087919062000800565b50806004908162000099919062000800565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200010f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000106919062000927565b60405180910390fd5b62000120816200022b60201b60201c565b506200016173af2587b7e09d7816fc0867ea3a8b3058bbaaa16f670de0b6b3a76400006437e11d60006200015591906200096f565b620002ee60201b60201c565b73af2587b7e09d7816fc0867ea3a8b3058bbaaa16f73ffffffffffffffffffffffffffffffffffffffff16738252804bd3424d1a82d9c5077298404c0c00c61673ffffffffffffffffffffffffffffffffffffffff167fa15f18032cfbf7f4a2f8b04fc281e6b00cc055a58bb1b3d344ac8ef03f783637670de0b6b3a76400006437e11d6000620001f391906200096f565b60405180606001604052806025815260200162002658602591396040516200021d92919062000a54565b60405180910390a362000b16565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000361575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000358919062000927565b60405180910390fd5b620003745f83836200037860201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003cc578060025f828254620003bf919062000a86565b925050819055506200049d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000458578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200044f9392919062000ac0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004e6578060025f828254039250508190555062000530565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200058f919062000afb565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200061857607f821691505b6020821081036200062e576200062d620005d3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000655565b6200069e868362000655565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006e8620006e2620006dc84620006b6565b620006bf565b620006b6565b9050919050565b5f819050919050565b6200070383620006c8565b6200071b6200071282620006ef565b84845462000661565b825550505050565b5f90565b6200073162000723565b6200073e818484620006f8565b505050565b5b818110156200076557620007595f8262000727565b60018101905062000744565b5050565b601f821115620007b4576200077e8162000634565b620007898462000646565b8101602085101562000799578190505b620007b1620007a88562000646565b83018262000743565b50505b505050565b5f82821c905092915050565b5f620007d65f1984600802620007b9565b1980831691505092915050565b5f620007f08383620007c5565b9150826002028217905092915050565b6200080b826200059c565b67ffffffffffffffff811115620008275762000826620005a6565b5b62000833825462000600565b6200084082828562000769565b5f60209050601f83116001811462000876575f841562000861578287015190505b6200086d8582620007e3565b865550620008dc565b601f198416620008868662000634565b5f5b82811015620008af5784890151825560018201915060208501945060208101905062000888565b86831015620008cf5784890151620008cb601f891682620007c5565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200090f82620008e4565b9050919050565b620009218162000903565b82525050565b5f6020820190506200093c5f83018462000916565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200097b82620006b6565b91506200098883620006b6565b92508282026200099881620006b6565b91508282048414831517620009b257620009b162000942565b5b5092915050565b620009c481620006b6565b82525050565b5f82825260208201905092915050565b5f5b83811015620009f9578082015181840152602081019050620009dc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000a20826200059c565b62000a2c8185620009ca565b935062000a3e818560208601620009da565b62000a498162000a04565b840191505092915050565b5f60408201905062000a695f830185620009b9565b818103602083015262000a7d818462000a14565b90509392505050565b5f62000a9282620006b6565b915062000a9f83620006b6565b925082820190508082111562000aba5762000ab962000942565b5b92915050565b5f60608201905062000ad55f83018662000916565b62000ae46020830185620009b9565b62000af36040830184620009b9565b949350505050565b5f60208201905062000b105f830184620009b9565b92915050565b611b008062000b245f395ff3fe608060405260043610610138575f3560e01c806377662ffc116100aa578063a9059cbb1161006e578063a9059cbb146103fb578063c969943e14610437578063daf66e2614610461578063dd62ed3e1461048b578063e3a995a0146104c7578063f2fde38b146104f15761013f565b806377662ffc1461032d57806378773ed41461035557806379cc67901461037f5780638da5cb5b146103a757806395d89b41146103d15761013f565b8063313ce567116100fc578063313ce5671461023557806342966c681461025f5780634339b4211461028757806356df33aa146102b157806370a08231146102db578063715018a6146103175761013f565b806306fdde0314610141578063095ea7b31461016b578063099a04e5146101a757806318160ddd146101cf57806323b872dd146101f95761013f565b3661013f57005b005b34801561014c575f80fd5b50610155610519565b60405161016291906113c2565b60405180910390f35b348015610176575f80fd5b50610191600480360381019061018c9190611473565b6105a9565b60405161019e91906114cb565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c8919061151f565b6105cb565b005b3480156101da575f80fd5b506101e36106ee565b6040516101f0919061156c565b60405180910390f35b348015610204575f80fd5b5061021f600480360381019061021a9190611585565b6106f7565b60405161022c91906114cb565b60405180910390f35b348015610240575f80fd5b50610249610725565b60405161025691906115f0565b60405180910390f35b34801561026a575f80fd5b5061028560048036038101906102809190611609565b61072d565b005b348015610292575f80fd5b5061029b610741565b6040516102a891906113c2565b60405180910390f35b3480156102bc575f80fd5b506102c561077a565b6040516102d29190611643565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc919061165c565b610792565b60405161030e919061156c565b60405180910390f35b348015610322575f80fd5b5061032b6107d7565b005b348015610338575f80fd5b50610353600480360381019061034e9190611687565b6107ea565b005b348015610360575f80fd5b50610369610992565b6040516103769190611643565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611473565b6109aa565b005b3480156103b2575f80fd5b506103bb6109ca565b6040516103c89190611643565b60405180910390f35b3480156103dc575f80fd5b506103e56109f2565b6040516103f291906113c2565b60405180910390f35b348015610406575f80fd5b50610421600480360381019061041c9190611473565b610a82565b60405161042e91906114cb565b60405180910390f35b348015610442575f80fd5b5061044b610aa4565b604051610458919061156c565b60405180910390f35b34801561046c575f80fd5b50610475610ac0565b60405161048291906113c2565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac91906116d7565b610adc565b6040516104be919061156c565b60405180910390f35b3480156104d2575f80fd5b506104db610b5e565b6040516104e8919061156c565b60405180910390f35b3480156104fc575f80fd5b506105176004803603810190610512919061165c565b610b67565b005b60606003805461052890611742565b80601f016020809104026020016040519081016040528092919081815260200182805461055490611742565b801561059f5780601f106105765761010080835404028352916020019161059f565b820191905f5260205f20905b81548152906001019060200180831161058257829003601f168201915b5050505050905090565b5f806105b3610beb565b90506105c0818585610bf2565b600191505092915050565b6105d3610c04565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610638906117bc565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161066690611807565b5f6040518083038185875af1925050503d805f81146106a0576040519150601f19603f3d011682016040523d82523d5f602084013e6106a5565b606091505b50509050806106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090611865565b60405180910390fd5b505050565b5f600254905090565b5f80610701610beb565b905061070e858285610c8b565b610719858585610d1e565b60019150509392505050565b5f6012905090565b61073e610738610beb565b82610e0e565b50565b6040518060400160405280601181526020017f554b2046696e616e6369616c204c74642e00000000000000000000000000000081525081565b738252804bd3424d1a82d9c5077298404c0c00c61681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107df610c04565b6107e85f610e8d565b565b6107f2610c04565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610857906117bc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c5906118cd565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b815260040161090a9291906118eb565b6020604051808303815f875af1158015610926573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094a919061193c565b90508061098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610983906119b1565b60405180910390fd5b50505050565b73af2587b7e09d7816fc0867ea3a8b3058bbaaa16f81565b6109bc826109b6610beb565b83610c8b565b6109c68282610e0e565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a0190611742565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d90611742565b8015610a785780601f10610a4f57610100808354040283529160200191610a78565b820191905f5260205f20905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b5f80610a8c610beb565b9050610a99818585610d1e565b600191505092915050565b670de0b6b3a76400006437e11d6000610abd91906119fc565b81565b604051806060016040528060258152602001611aa66025913981565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6437e11d600081565b610b6f610c04565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bdf575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610bd69190611643565b60405180910390fd5b610be881610e8d565b50565b5f33905090565b610bff8383836001610f50565b505050565b610c0c610beb565b73ffffffffffffffffffffffffffffffffffffffff16610c2a6109ca565b73ffffffffffffffffffffffffffffffffffffffff1614610c8957610c4d610beb565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c809190611643565b60405180910390fd5b565b5f610c968484610adc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610d185781811015610d09578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610d0093929190611a3d565b60405180910390fd5b610d1784848484035f610f50565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d859190611643565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfe575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610df59190611643565b60405180910390fd5b610e0983838361111f565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e7e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e759190611643565b60405180910390fd5b610e89825f8361111f565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fc0575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610fb79190611643565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611030575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110279190611643565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611119578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611110919061156c565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361116f578060025f8282546111639190611a72565b9250508190555061123d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156111f8578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016111ef93929190611a3d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611284578060025f82825403925050819055506112ce565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161132b919061156c565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561136f578082015181840152602081019050611354565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61139482611338565b61139e8185611342565b93506113ae818560208601611352565b6113b78161137a565b840191505092915050565b5f6020820190508181035f8301526113da818461138a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61140f826113e6565b9050919050565b61141f81611405565b8114611429575f80fd5b50565b5f8135905061143a81611416565b92915050565b5f819050919050565b61145281611440565b811461145c575f80fd5b50565b5f8135905061146d81611449565b92915050565b5f8060408385031215611489576114886113e2565b5b5f6114968582860161142c565b92505060206114a78582860161145f565b9150509250929050565b5f8115159050919050565b6114c5816114b1565b82525050565b5f6020820190506114de5f8301846114bc565b92915050565b5f6114ee826113e6565b9050919050565b6114fe816114e4565b8114611508575f80fd5b50565b5f81359050611519816114f5565b92915050565b5f8060408385031215611535576115346113e2565b5b5f6115428582860161150b565b92505060206115538582860161145f565b9150509250929050565b61156681611440565b82525050565b5f60208201905061157f5f83018461155d565b92915050565b5f805f6060848603121561159c5761159b6113e2565b5b5f6115a98682870161142c565b93505060206115ba8682870161142c565b92505060406115cb8682870161145f565b9150509250925092565b5f60ff82169050919050565b6115ea816115d5565b82525050565b5f6020820190506116035f8301846115e1565b92915050565b5f6020828403121561161e5761161d6113e2565b5b5f61162b8482850161145f565b91505092915050565b61163d81611405565b82525050565b5f6020820190506116565f830184611634565b92915050565b5f60208284031215611671576116706113e2565b5b5f61167e8482850161142c565b91505092915050565b5f805f6060848603121561169e5761169d6113e2565b5b5f6116ab8682870161142c565b93505060206116bc8682870161145f565b92505060406116cd8682870161142c565b9150509250925092565b5f80604083850312156116ed576116ec6113e2565b5b5f6116fa8582860161142c565b925050602061170b8582860161142c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061175957607f821691505b60208210810361176c5761176b611715565b5b50919050565b7f746f3d30000000000000000000000000000000000000000000000000000000005f82015250565b5f6117a6600483611342565b91506117b182611772565b602082019050919050565b5f6020820190508181035f8301526117d38161179a565b9050919050565b5f81905092915050565b50565b5f6117f25f836117da565b91506117fd826117e4565b5f82019050919050565b5f611811826117e7565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f61184f601383611342565b915061185a8261181b565b602082019050919050565b5f6020820190508181035f83015261187c81611843565b9050919050565b7f63616e6e6f7420726573637565205250574d50524100000000000000000000005f82015250565b5f6118b7601583611342565b91506118c282611883565b602082019050919050565b5f6020820190508181035f8301526118e4816118ab565b9050919050565b5f6040820190506118fe5f830185611634565b61190b602083018461155d565b9392505050565b61191b816114b1565b8114611925575f80fd5b50565b5f8151905061193681611912565b92915050565b5f60208284031215611951576119506113e2565b5b5f61195e84828501611928565b91505092915050565b7f7472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f61199b600f83611342565b91506119a682611967565b602082019050919050565b5f6020820190508181035f8301526119c88161198f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0682611440565b9150611a1183611440565b9250828202611a1f81611440565b91508282048414831517611a3657611a356119cf565b5b5092915050565b5f606082019050611a505f830186611634565b611a5d602083018561155d565b611a6a604083018461155d565b949350505050565b5f611a7c82611440565b9150611a8783611440565b9250828201905080821115611a9f57611a9e6119cf565b5b9291505056fe756b2d66696e616e6369616c2d6c74642d636f72706f726174652d6173736574732e657468a2646970667358221220462ba751ce6e802ebbf8748d95e4af52559e8993eb7f4a416f80f8024832c63764736f6c634300081800334d61796120507265666572726564205265746972656d656e7420506c616e2050726f6772616d205772617070656420546f6b656e756b2d66696e616e6369616c2d6c74642d636f72706f726174652d6173736574732e657468
Deployed Bytecode
0x608060405260043610610138575f3560e01c806377662ffc116100aa578063a9059cbb1161006e578063a9059cbb146103fb578063c969943e14610437578063daf66e2614610461578063dd62ed3e1461048b578063e3a995a0146104c7578063f2fde38b146104f15761013f565b806377662ffc1461032d57806378773ed41461035557806379cc67901461037f5780638da5cb5b146103a757806395d89b41146103d15761013f565b8063313ce567116100fc578063313ce5671461023557806342966c681461025f5780634339b4211461028757806356df33aa146102b157806370a08231146102db578063715018a6146103175761013f565b806306fdde0314610141578063095ea7b31461016b578063099a04e5146101a757806318160ddd146101cf57806323b872dd146101f95761013f565b3661013f57005b005b34801561014c575f80fd5b50610155610519565b60405161016291906113c2565b60405180910390f35b348015610176575f80fd5b50610191600480360381019061018c9190611473565b6105a9565b60405161019e91906114cb565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c8919061151f565b6105cb565b005b3480156101da575f80fd5b506101e36106ee565b6040516101f0919061156c565b60405180910390f35b348015610204575f80fd5b5061021f600480360381019061021a9190611585565b6106f7565b60405161022c91906114cb565b60405180910390f35b348015610240575f80fd5b50610249610725565b60405161025691906115f0565b60405180910390f35b34801561026a575f80fd5b5061028560048036038101906102809190611609565b61072d565b005b348015610292575f80fd5b5061029b610741565b6040516102a891906113c2565b60405180910390f35b3480156102bc575f80fd5b506102c561077a565b6040516102d29190611643565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc919061165c565b610792565b60405161030e919061156c565b60405180910390f35b348015610322575f80fd5b5061032b6107d7565b005b348015610338575f80fd5b50610353600480360381019061034e9190611687565b6107ea565b005b348015610360575f80fd5b50610369610992565b6040516103769190611643565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611473565b6109aa565b005b3480156103b2575f80fd5b506103bb6109ca565b6040516103c89190611643565b60405180910390f35b3480156103dc575f80fd5b506103e56109f2565b6040516103f291906113c2565b60405180910390f35b348015610406575f80fd5b50610421600480360381019061041c9190611473565b610a82565b60405161042e91906114cb565b60405180910390f35b348015610442575f80fd5b5061044b610aa4565b604051610458919061156c565b60405180910390f35b34801561046c575f80fd5b50610475610ac0565b60405161048291906113c2565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac91906116d7565b610adc565b6040516104be919061156c565b60405180910390f35b3480156104d2575f80fd5b506104db610b5e565b6040516104e8919061156c565b60405180910390f35b3480156104fc575f80fd5b506105176004803603810190610512919061165c565b610b67565b005b60606003805461052890611742565b80601f016020809104026020016040519081016040528092919081815260200182805461055490611742565b801561059f5780601f106105765761010080835404028352916020019161059f565b820191905f5260205f20905b81548152906001019060200180831161058257829003601f168201915b5050505050905090565b5f806105b3610beb565b90506105c0818585610bf2565b600191505092915050565b6105d3610c04565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610638906117bc565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161066690611807565b5f6040518083038185875af1925050503d805f81146106a0576040519150601f19603f3d011682016040523d82523d5f602084013e6106a5565b606091505b50509050806106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090611865565b60405180910390fd5b505050565b5f600254905090565b5f80610701610beb565b905061070e858285610c8b565b610719858585610d1e565b60019150509392505050565b5f6012905090565b61073e610738610beb565b82610e0e565b50565b6040518060400160405280601181526020017f554b2046696e616e6369616c204c74642e00000000000000000000000000000081525081565b738252804bd3424d1a82d9c5077298404c0c00c61681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107df610c04565b6107e85f610e8d565b565b6107f2610c04565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610857906117bc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c5906118cd565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b815260040161090a9291906118eb565b6020604051808303815f875af1158015610926573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094a919061193c565b90508061098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610983906119b1565b60405180910390fd5b50505050565b73af2587b7e09d7816fc0867ea3a8b3058bbaaa16f81565b6109bc826109b6610beb565b83610c8b565b6109c68282610e0e565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a0190611742565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d90611742565b8015610a785780601f10610a4f57610100808354040283529160200191610a78565b820191905f5260205f20905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b5f80610a8c610beb565b9050610a99818585610d1e565b600191505092915050565b670de0b6b3a76400006437e11d6000610abd91906119fc565b81565b604051806060016040528060258152602001611aa66025913981565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6437e11d600081565b610b6f610c04565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bdf575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610bd69190611643565b60405180910390fd5b610be881610e8d565b50565b5f33905090565b610bff8383836001610f50565b505050565b610c0c610beb565b73ffffffffffffffffffffffffffffffffffffffff16610c2a6109ca565b73ffffffffffffffffffffffffffffffffffffffff1614610c8957610c4d610beb565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c809190611643565b60405180910390fd5b565b5f610c968484610adc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610d185781811015610d09578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610d0093929190611a3d565b60405180910390fd5b610d1784848484035f610f50565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d859190611643565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfe575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610df59190611643565b60405180910390fd5b610e0983838361111f565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e7e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e759190611643565b60405180910390fd5b610e89825f8361111f565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fc0575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610fb79190611643565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611030575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110279190611643565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611119578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611110919061156c565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361116f578060025f8282546111639190611a72565b9250508190555061123d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156111f8578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016111ef93929190611a3d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611284578060025f82825403925050819055506112ce565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161132b919061156c565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561136f578082015181840152602081019050611354565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61139482611338565b61139e8185611342565b93506113ae818560208601611352565b6113b78161137a565b840191505092915050565b5f6020820190508181035f8301526113da818461138a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61140f826113e6565b9050919050565b61141f81611405565b8114611429575f80fd5b50565b5f8135905061143a81611416565b92915050565b5f819050919050565b61145281611440565b811461145c575f80fd5b50565b5f8135905061146d81611449565b92915050565b5f8060408385031215611489576114886113e2565b5b5f6114968582860161142c565b92505060206114a78582860161145f565b9150509250929050565b5f8115159050919050565b6114c5816114b1565b82525050565b5f6020820190506114de5f8301846114bc565b92915050565b5f6114ee826113e6565b9050919050565b6114fe816114e4565b8114611508575f80fd5b50565b5f81359050611519816114f5565b92915050565b5f8060408385031215611535576115346113e2565b5b5f6115428582860161150b565b92505060206115538582860161145f565b9150509250929050565b61156681611440565b82525050565b5f60208201905061157f5f83018461155d565b92915050565b5f805f6060848603121561159c5761159b6113e2565b5b5f6115a98682870161142c565b93505060206115ba8682870161142c565b92505060406115cb8682870161145f565b9150509250925092565b5f60ff82169050919050565b6115ea816115d5565b82525050565b5f6020820190506116035f8301846115e1565b92915050565b5f6020828403121561161e5761161d6113e2565b5b5f61162b8482850161145f565b91505092915050565b61163d81611405565b82525050565b5f6020820190506116565f830184611634565b92915050565b5f60208284031215611671576116706113e2565b5b5f61167e8482850161142c565b91505092915050565b5f805f6060848603121561169e5761169d6113e2565b5b5f6116ab8682870161142c565b93505060206116bc8682870161145f565b92505060406116cd8682870161142c565b9150509250925092565b5f80604083850312156116ed576116ec6113e2565b5b5f6116fa8582860161142c565b925050602061170b8582860161142c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061175957607f821691505b60208210810361176c5761176b611715565b5b50919050565b7f746f3d30000000000000000000000000000000000000000000000000000000005f82015250565b5f6117a6600483611342565b91506117b182611772565b602082019050919050565b5f6020820190508181035f8301526117d38161179a565b9050919050565b5f81905092915050565b50565b5f6117f25f836117da565b91506117fd826117e4565b5f82019050919050565b5f611811826117e7565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f61184f601383611342565b915061185a8261181b565b602082019050919050565b5f6020820190508181035f83015261187c81611843565b9050919050565b7f63616e6e6f7420726573637565205250574d50524100000000000000000000005f82015250565b5f6118b7601583611342565b91506118c282611883565b602082019050919050565b5f6020820190508181035f8301526118e4816118ab565b9050919050565b5f6040820190506118fe5f830185611634565b61190b602083018461155d565b9392505050565b61191b816114b1565b8114611925575f80fd5b50565b5f8151905061193681611912565b92915050565b5f60208284031215611951576119506113e2565b5b5f61195e84828501611928565b91505092915050565b7f7472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f61199b600f83611342565b91506119a682611967565b602082019050919050565b5f6020820190508181035f8301526119c88161198f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0682611440565b9150611a1183611440565b9250828202611a1f81611440565b91508282048414831517611a3657611a356119cf565b5b5092915050565b5f606082019050611a505f830186611634565b611a5d602083018561155d565b611a6a604083018461155d565b949350505050565b5f611a7c82611440565b9150611a8783611440565b9250828201905080821115611a9f57611a9e6119cf565b5b9291505056fe756b2d66696e616e6369616c2d6c74642d636f72706f726174652d6173736574732e657468a2646970667358221220462ba751ce6e802ebbf8748d95e4af52559e8993eb7f4a416f80f8024832c63764736f6c63430008180033
Deployed Bytecode Sourcemap
27457:1940:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12986:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15196:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29099:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14059:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15996:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13939:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22875:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27546:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27604:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14194:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25806:103;;;;;;;;;;;;;:::i;:::-;;28794:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27961:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23293:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25131:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13196:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14517:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27813:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28059:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14735:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27744:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26064:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12986:91;13031:13;13064:5;13057:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12986:91;:::o;15196:190::-;15269:4;15286:13;15302:12;:10;:12::i;:::-;15286:28;;15325:31;15334:5;15341:7;15350:5;15325:8;:31::i;:::-;15374:4;15367:11;;;15196:190;;;;:::o;29099:222::-;25017:13;:11;:13::i;:::-;29206:1:::1;29192:16;;:2;:16;;::::0;29184:33:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29229:7;29242:2;:7;;29257:6;29242:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29228:40;;;29287:2;29279:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;29173:148;29099:222:::0;;:::o;14059:99::-;14111:7;14138:12;;14131:19;;14059:99;:::o;15996:249::-;16083:4;16100:15;16118:12;:10;:12::i;:::-;16100:30;;16141:37;16157:4;16163:7;16172:5;16141:15;:37::i;:::-;16189:26;16199:4;16205:2;16209:5;16189:9;:26::i;:::-;16233:4;16226:11;;;15996:249;;;;;:::o;13939:84::-;13988:5;14013:2;14006:9;;13939:84;:::o;22875:89::-;22930:26;22936:12;:10;:12::i;:::-;22950:5;22930;:26::i;:::-;22875:89;:::o;27546:51::-;;;;;;;;;;;;;;;;;;;:::o;27604:85::-;27647:42;27604:85;:::o;14194:118::-;14259:7;14286:9;:18;14296:7;14286:18;;;;;;;;;;;;;;;;14279:25;;14194:118;;;:::o;25806:103::-;25017:13;:11;:13::i;:::-;25871:30:::1;25898:1;25871:18;:30::i;:::-;25806:103::o:0;28794:297::-;25017:13;:11;:13::i;:::-;28910:1:::1;28896:16;;:2;:16;;::::0;28888:33:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28957:4;28940:22;;:5;:22;;::::0;28932:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28999:7;29015:5;29009:21;;;29031:2;29035:6;29009:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28999:43;;29061:2;29053:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;28877:214;28794:297:::0;;;:::o;27961:91::-;28010:42;27961:91;:::o;23293:161::-;23369:45;23385:7;23394:12;:10;:12::i;:::-;23408:5;23369:15;:45::i;:::-;23425:21;23431:7;23440:5;23425;:21::i;:::-;23293:161;;:::o;25131:87::-;25177:7;25204:6;;;;;;;;;;;25197:13;;25131:87;:::o;13196:95::-;13243:13;13276:7;13269:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13196:95;:::o;14517:182::-;14586:4;14603:13;14619:12;:10;:12::i;:::-;14603:28;;14642:27;14652:5;14659:2;14663:5;14642:9;:27::i;:::-;14687:4;14680:11;;;14517:182;;;;:::o;27813:70::-;27875:8;27791:15;27852:31;;;;:::i;:::-;27813:70;:::o;28059:91::-;;;;;;;;;;;;;;;;;;;:::o;14735:142::-;14815:7;14842:11;:18;14854:5;14842:18;;;;;;;;;;;;;;;:27;14861:7;14842:27;;;;;;;;;;;;;;;;14835:34;;14735:142;;;;:::o;27744:62::-;27791:15;27744:62;:::o;26064:220::-;25017:13;:11;:13::i;:::-;26169:1:::1;26149:22;;:8;:22;;::::0;26145:93:::1;;26223:1;26195:31;;;;;;;;;;;:::i;:::-;;;;;;;;26145:93;26248:28;26267:8;26248:18;:28::i;:::-;26064:220:::0;:::o;4305:98::-;4358:7;4385:10;4378:17;;4305:98;:::o;20055:130::-;20140:37;20149:5;20156:7;20165:5;20172:4;20140:8;:37::i;:::-;20055:130;;;:::o;25296:166::-;25367:12;:10;:12::i;:::-;25356:23;;:7;:5;:7::i;:::-;:23;;;25352:103;;25430:12;:10;:12::i;:::-;25403:40;;;;;;;;;;;:::i;:::-;;;;;;;;25352:103;25296:166::o;21787:486::-;21887:24;21914:25;21924:5;21931:7;21914:9;:25::i;:::-;21887:52;;21973:17;21954:16;:36;21950:316;;;22030:5;22011:16;:24;22007:132;;;22090:7;22099:16;22117:5;22063:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;22007:132;22182:57;22191:5;22198:7;22226:5;22207:16;:24;22233:5;22182:8;:57::i;:::-;21950:316;21876:397;21787:486;;;:::o;16630:308::-;16730:1;16714:18;;:4;:18;;;16710:88;;16783:1;16756:30;;;;;;;;;;;:::i;:::-;;;;;;;;16710:88;16826:1;16812:16;;:2;:16;;;16808:88;;16881:1;16852:32;;;;;;;;;;;:::i;:::-;;;;;;;;16808:88;16906:24;16914:4;16920:2;16924:5;16906:7;:24::i;:::-;16630:308;;;:::o;19291:211::-;19381:1;19362:21;;:7;:21;;;19358:91;;19434:1;19407:30;;;;;;;;;;;:::i;:::-;;;;;;;;19358:91;19459:35;19467:7;19484:1;19488:5;19459:7;:35::i;:::-;19291:211;;:::o;26444:191::-;26518:16;26537:6;;;;;;;;;;;26518:25;;26563:8;26554:6;;:17;;;;;;;;;;;;;;;;;;26618:8;26587:40;;26608:8;26587:40;;;;;;;;;;;;26507:128;26444:191;:::o;21052:443::-;21182:1;21165:19;;:5;:19;;;21161:91;;21237:1;21208:32;;;;;;;;;;;:::i;:::-;;;;;;;;21161:91;21285:1;21266:21;;:7;:21;;;21262:92;;21339:1;21311:31;;;;;;;;;;;:::i;:::-;;;;;;;;21262:92;21394:5;21364:11;:18;21376:5;21364:18;;;;;;;;;;;;;;;:27;21383:7;21364:27;;;;;;;;;;;;;;;:35;;;;21414:9;21410:78;;;21461:7;21445:31;;21454:5;21445:31;;;21470:5;21445:31;;;;;;:::i;:::-;;;;;;;;21410:78;21052:443;;;;:::o;17262:1135::-;17368:1;17352:18;;:4;:18;;;17348:552;;17506:5;17490:12;;:21;;;;;;;:::i;:::-;;;;;;;;17348:552;;;17544:19;17566:9;:15;17576:4;17566:15;;;;;;;;;;;;;;;;17544:37;;17614:5;17600:11;:19;17596:117;;;17672:4;17678:11;17691:5;17647:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17596:117;17868:5;17854:11;:19;17836:9;:15;17846:4;17836:15;;;;;;;;;;;;;;;:37;;;;17529:371;17348:552;17930:1;17916:16;;:2;:16;;;17912:435;;18098:5;18082:12;;:21;;;;;;;;;;;17912:435;;;18315:5;18298:9;:13;18308:2;18298:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;17912:435;18379:2;18364:25;;18373:4;18364:25;;;18383:5;18364:25;;;;;;:::i;:::-;;;;;;;;17262:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:104::-;3491:7;3520:24;3538:5;3520:24;:::i;:::-;3509:35;;3446:104;;;:::o;3556:138::-;3637:32;3663:5;3637:32;:::i;:::-;3630:5;3627:43;3617:71;;3684:1;3681;3674:12;3617:71;3556:138;:::o;3700:155::-;3754:5;3792:6;3779:20;3770:29;;3808:41;3843:5;3808:41;:::i;:::-;3700:155;;;;:::o;3861:490::-;3937:6;3945;3994:2;3982:9;3973:7;3969:23;3965:32;3962:119;;;4000:79;;:::i;:::-;3962:119;4120:1;4145:61;4198:7;4189:6;4178:9;4174:22;4145:61;:::i;:::-;4135:71;;4091:125;4255:2;4281:53;4326:7;4317:6;4306:9;4302:22;4281:53;:::i;:::-;4271:63;;4226:118;3861:490;;;;;:::o;4357:118::-;4444:24;4462:5;4444:24;:::i;:::-;4439:3;4432:37;4357:118;;:::o;4481:222::-;4574:4;4612:2;4601:9;4597:18;4589:26;;4625:71;4693:1;4682:9;4678:17;4669:6;4625:71;:::i;:::-;4481:222;;;;:::o;4709:619::-;4786:6;4794;4802;4851:2;4839:9;4830:7;4826:23;4822:32;4819:119;;;4857:79;;:::i;:::-;4819:119;4977:1;5002:53;5047:7;5038:6;5027:9;5023:22;5002:53;:::i;:::-;4992:63;;4948:117;5104:2;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5075:118;5232:2;5258:53;5303:7;5294:6;5283:9;5279:22;5258:53;:::i;:::-;5248:63;;5203:118;4709:619;;;;;:::o;5334:86::-;5369:7;5409:4;5402:5;5398:16;5387:27;;5334:86;;;:::o;5426:112::-;5509:22;5525:5;5509:22;:::i;:::-;5504:3;5497:35;5426:112;;:::o;5544:214::-;5633:4;5671:2;5660:9;5656:18;5648:26;;5684:67;5748:1;5737:9;5733:17;5724:6;5684:67;:::i;:::-;5544:214;;;;:::o;5764:329::-;5823:6;5872:2;5860:9;5851:7;5847:23;5843:32;5840:119;;;5878:79;;:::i;:::-;5840:119;5998:1;6023:53;6068:7;6059:6;6048:9;6044:22;6023:53;:::i;:::-;6013:63;;5969:117;5764:329;;;;:::o;6099:118::-;6186:24;6204:5;6186:24;:::i;:::-;6181:3;6174:37;6099:118;;:::o;6223:222::-;6316:4;6354:2;6343:9;6339:18;6331:26;;6367:71;6435:1;6424:9;6420:17;6411:6;6367:71;:::i;:::-;6223:222;;;;:::o;6451:329::-;6510:6;6559:2;6547:9;6538:7;6534:23;6530:32;6527:119;;;6565:79;;:::i;:::-;6527:119;6685:1;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6656:117;6451:329;;;;:::o;6786:619::-;6863:6;6871;6879;6928:2;6916:9;6907:7;6903:23;6899:32;6896:119;;;6934:79;;:::i;:::-;6896:119;7054:1;7079:53;7124:7;7115:6;7104:9;7100:22;7079:53;:::i;:::-;7069:63;;7025:117;7181:2;7207:53;7252:7;7243:6;7232:9;7228:22;7207:53;:::i;:::-;7197:63;;7152:118;7309:2;7335:53;7380:7;7371:6;7360:9;7356:22;7335:53;:::i;:::-;7325:63;;7280:118;6786:619;;;;;:::o;7411:474::-;7479:6;7487;7536:2;7524:9;7515:7;7511:23;7507:32;7504:119;;;7542:79;;:::i;:::-;7504:119;7662:1;7687:53;7732:7;7723:6;7712:9;7708:22;7687:53;:::i;:::-;7677:63;;7633:117;7789:2;7815:53;7860:7;7851:6;7840:9;7836:22;7815:53;:::i;:::-;7805:63;;7760:118;7411:474;;;;;:::o;7891:180::-;7939:77;7936:1;7929:88;8036:4;8033:1;8026:15;8060:4;8057:1;8050:15;8077:320;8121:6;8158:1;8152:4;8148:12;8138:22;;8205:1;8199:4;8195:12;8226:18;8216:81;;8282:4;8274:6;8270:17;8260:27;;8216:81;8344:2;8336:6;8333:14;8313:18;8310:38;8307:84;;8363:18;;:::i;:::-;8307:84;8128:269;8077:320;;;:::o;8403:154::-;8543:6;8539:1;8531:6;8527:14;8520:30;8403:154;:::o;8563:365::-;8705:3;8726:66;8790:1;8785:3;8726:66;:::i;:::-;8719:73;;8801:93;8890:3;8801:93;:::i;:::-;8919:2;8914:3;8910:12;8903:19;;8563:365;;;:::o;8934:419::-;9100:4;9138:2;9127:9;9123:18;9115:26;;9187:9;9181:4;9177:20;9173:1;9162:9;9158:17;9151:47;9215:131;9341:4;9215:131;:::i;:::-;9207:139;;8934:419;;;:::o;9359:147::-;9460:11;9497:3;9482:18;;9359:147;;;;:::o;9512:114::-;;:::o;9632:398::-;9791:3;9812:83;9893:1;9888:3;9812:83;:::i;:::-;9805:90;;9904:93;9993:3;9904:93;:::i;:::-;10022:1;10017:3;10013:11;10006:18;;9632:398;;;:::o;10036:379::-;10220:3;10242:147;10385:3;10242:147;:::i;:::-;10235:154;;10406:3;10399:10;;10036:379;;;:::o;10421:169::-;10561:21;10557:1;10549:6;10545:14;10538:45;10421:169;:::o;10596:366::-;10738:3;10759:67;10823:2;10818:3;10759:67;:::i;:::-;10752:74;;10835:93;10924:3;10835:93;:::i;:::-;10953:2;10948:3;10944:12;10937:19;;10596:366;;;:::o;10968:419::-;11134:4;11172:2;11161:9;11157:18;11149:26;;11221:9;11215:4;11211:20;11207:1;11196:9;11192:17;11185:47;11249:131;11375:4;11249:131;:::i;:::-;11241:139;;10968:419;;;:::o;11393:171::-;11533:23;11529:1;11521:6;11517:14;11510:47;11393:171;:::o;11570:366::-;11712:3;11733:67;11797:2;11792:3;11733:67;:::i;:::-;11726:74;;11809:93;11898:3;11809:93;:::i;:::-;11927:2;11922:3;11918:12;11911:19;;11570:366;;;:::o;11942:419::-;12108:4;12146:2;12135:9;12131:18;12123:26;;12195:9;12189:4;12185:20;12181:1;12170:9;12166:17;12159:47;12223:131;12349:4;12223:131;:::i;:::-;12215:139;;11942:419;;;:::o;12367:332::-;12488:4;12526:2;12515:9;12511:18;12503:26;;12539:71;12607:1;12596:9;12592:17;12583:6;12539:71;:::i;:::-;12620:72;12688:2;12677:9;12673:18;12664:6;12620:72;:::i;:::-;12367:332;;;;;:::o;12705:116::-;12775:21;12790:5;12775:21;:::i;:::-;12768:5;12765:32;12755:60;;12811:1;12808;12801:12;12755:60;12705:116;:::o;12827:137::-;12881:5;12912:6;12906:13;12897:22;;12928:30;12952:5;12928:30;:::i;:::-;12827:137;;;;:::o;12970:345::-;13037:6;13086:2;13074:9;13065:7;13061:23;13057:32;13054:119;;;13092:79;;:::i;:::-;13054:119;13212:1;13237:61;13290:7;13281:6;13270:9;13266:22;13237:61;:::i;:::-;13227:71;;13183:125;12970:345;;;;:::o;13321:165::-;13461:17;13457:1;13449:6;13445:14;13438:41;13321:165;:::o;13492:366::-;13634:3;13655:67;13719:2;13714:3;13655:67;:::i;:::-;13648:74;;13731:93;13820:3;13731:93;:::i;:::-;13849:2;13844:3;13840:12;13833:19;;13492:366;;;:::o;13864:419::-;14030:4;14068:2;14057:9;14053:18;14045:26;;14117:9;14111:4;14107:20;14103:1;14092:9;14088:17;14081:47;14145:131;14271:4;14145:131;:::i;:::-;14137:139;;13864:419;;;:::o;14289:180::-;14337:77;14334:1;14327:88;14434:4;14431:1;14424:15;14458:4;14455:1;14448:15;14475:410;14515:7;14538:20;14556:1;14538:20;:::i;:::-;14533:25;;14572:20;14590:1;14572:20;:::i;:::-;14567:25;;14627:1;14624;14620:9;14649:30;14667:11;14649:30;:::i;:::-;14638:41;;14828:1;14819:7;14815:15;14812:1;14809:22;14789:1;14782:9;14762:83;14739:139;;14858:18;;:::i;:::-;14739:139;14523:362;14475:410;;;;:::o;14891:442::-;15040:4;15078:2;15067:9;15063:18;15055:26;;15091:71;15159:1;15148:9;15144:17;15135:6;15091:71;:::i;:::-;15172:72;15240:2;15229:9;15225:18;15216:6;15172:72;:::i;:::-;15254;15322:2;15311:9;15307:18;15298:6;15254:72;:::i;:::-;14891:442;;;;;;:::o;15339:191::-;15379:3;15398:20;15416:1;15398:20;:::i;:::-;15393:25;;15432:20;15450:1;15432:20;:::i;:::-;15427:25;;15475:1;15472;15468:9;15461:16;;15496:3;15493:1;15490:10;15487:36;;;15503:18;;:::i;:::-;15487:36;15339:191;;;;:::o
Swarm Source
ipfs://462ba751ce6e802ebbf8748d95e4af52559e8993eb7f4a416f80f8024832c637
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.