Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 81 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set User Role | 22378740 | 327 days ago | IN | 0 ETH | 0.00001863 | ||||
| Set User Role | 22378723 | 327 days ago | IN | 0 ETH | 0.00001855 | ||||
| Set User Role | 22378620 | 327 days ago | IN | 0 ETH | 0.00002544 | ||||
| Set User Role | 22377110 | 327 days ago | IN | 0 ETH | 0.00002845 | ||||
| Set User Role | 22377109 | 327 days ago | IN | 0 ETH | 0.00002956 | ||||
| Set User Role | 22377108 | 327 days ago | IN | 0 ETH | 0.00002869 | ||||
| Set User Role | 22377106 | 327 days ago | IN | 0 ETH | 0.00002913 | ||||
| Set User Role | 22377104 | 327 days ago | IN | 0 ETH | 0.00002665 | ||||
| Set User Role | 22377103 | 327 days ago | IN | 0 ETH | 0.0000255 | ||||
| Set User Role | 22377102 | 327 days ago | IN | 0 ETH | 0.00002669 | ||||
| Set User Role | 22377101 | 327 days ago | IN | 0 ETH | 0.00002796 | ||||
| Set User Role | 22377100 | 327 days ago | IN | 0 ETH | 0.00002824 | ||||
| Set User Role | 22377099 | 327 days ago | IN | 0 ETH | 0.00002886 | ||||
| Set User Role | 22377098 | 327 days ago | IN | 0 ETH | 0.00002966 | ||||
| Set User Role | 22377097 | 327 days ago | IN | 0 ETH | 0.00003033 | ||||
| Set User Role | 22377096 | 327 days ago | IN | 0 ETH | 0.00002892 | ||||
| Set User Role | 22377095 | 327 days ago | IN | 0 ETH | 0.00003034 | ||||
| Set User Role | 22377094 | 327 days ago | IN | 0 ETH | 0.00002995 | ||||
| Set User Role | 22377093 | 327 days ago | IN | 0 ETH | 0.00002912 | ||||
| Set User Role | 22377092 | 327 days ago | IN | 0 ETH | 0.00002847 | ||||
| Set User Role | 22377091 | 327 days ago | IN | 0 ETH | 0.00002602 | ||||
| Set User Role | 22377090 | 327 days ago | IN | 0 ETH | 0.00002333 | ||||
| Set User Role | 22377089 | 327 days ago | IN | 0 ETH | 0.00002502 | ||||
| Set User Role | 22377088 | 327 days ago | IN | 0 ETH | 0.00002646 | ||||
| Set User Role | 22377087 | 327 days ago | IN | 0 ETH | 0.00002549 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60806040 | 22376960 | 327 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StrictRolesAuthority
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
No with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.28;
import {RolesAuthority} from "@solmate/src/auth/authorities/RolesAuthority.sol";
import {Authority} from "@solmate/src/auth/Auth.sol";
/**
* .-==+=======+:
* :---=-::-==:
* .-:-==-:-==:
* .:::--::::::. .--:-=--:--. .:--:::--..
* .=++=++:::::.. .:::---::--. ....::...:::.
* :::-::..::.. .::::-:::::. ...::...:::.
* ...::..::::.. .::::--::-:. ....::...:::..
* ............ ....:::..::. ------:......
* ........... ........:.... .....::..:.. ======-...... ...........
* :------:.:... ...:+***++*#+ .------:---. ...::::.:::... .....:-----::.
* .::::::::-:.. .::--..:-::.. .-=+===++=-==: ...:::..:--:.. .:==+=++++++*:
*
* @title StrictRolesAuthority
* @notice An extension of RolesAuthority that enforces stricter role management rules
* @dev This contract only allows adding roles through setUserRole() and requires admin multisig
* approval for role removal through removeUserRole()
*/
contract StrictRolesAuthority is RolesAuthority {
/// @notice The error emitted when a user attempts to remove a role
error RoleRemovalNotAllowed();
/// @notice Emitted when a role is configured as removable
event RemovableRoleConfigured(uint8 indexed role, bool allowed);
/// @notice Which roles are allowed to be removed
mapping(uint8 => bool) public isRoleRemovable;
/**
* @notice Creates a new StrictRolesAuthority instance
* @param _owner The address that will be the owner of this authority
* @param _authority The authority contract to use for authentication
*/
constructor(address _owner, Authority _authority) RolesAuthority(_owner, _authority) {}
/**
* @notice Sets a role for a user, but only allows adding roles
* @dev This function can only be called by authorized addresses
* @param user The address of the user to set the role for
* @param role The role to set
* @param enabled Must be true, as this function only allows adding roles
* @custom:reverts If enabled is false or caller is not authorized
*/
function setUserRole(address user, uint8 role, bool enabled) public virtual override requiresAuth {
if (!enabled) {
revert RoleRemovalNotAllowed();
}
getUserRoles[user] |= bytes32(1 << role);
emit UserRoleUpdated(user, role, true);
}
/**
* @notice Removes a role from a user
* @dev This function can only be called by called by the ADMIN_MULTISIG_ROLE
* @param user The address of the user to remove the role from
* @param role The role to remove
* @custom:reverts If caller is not the admin multisig
*/
function removeUserRole(address user, uint8 role) external virtual requiresAuth {
if (!isRoleRemovable[role]) {
revert RoleRemovalNotAllowed();
}
getUserRoles[user] &= ~bytes32(1 << role);
emit UserRoleUpdated(user, role, false);
}
/**
* @notice Returns all roles for a user
* @param user The address of the user to get the roles for
* @return A bitmask of all roles for the user
*/
function getAllRoles(address user) public view returns (uint256) {
return uint256(getUserRoles[user]);
}
/**
* @notice Sets a role as removable or not
* @dev This function can only be called by the owner (timelock)
* @param role The role to set as removable
* @param allowed Whether the role should be removable
* @custom:reverts If caller is not the owner
*/
function setRoleRemovable(uint8 role, bool allowed) external requiresAuth {
isRoleRemovable[role] = allowed;
emit RemovableRoleConfigured(role, allowed);
}
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
import {Auth, Authority} from "../Auth.sol";
/// @notice Role based Authority that supports up to 256 roles.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/authorities/RolesAuthority.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-roles/blob/master/src/roles.sol)
contract RolesAuthority is Auth, Authority {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event UserRoleUpdated(address indexed user, uint8 indexed role, bool enabled);
event PublicCapabilityUpdated(address indexed target, bytes4 indexed functionSig, bool enabled);
event RoleCapabilityUpdated(uint8 indexed role, address indexed target, bytes4 indexed functionSig, bool enabled);
/*//////////////////////////////////////////////////////////////
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
constructor(address _owner, Authority _authority) Auth(_owner, _authority) {}
/*//////////////////////////////////////////////////////////////
ROLE/USER STORAGE
//////////////////////////////////////////////////////////////*/
mapping(address => bytes32) public getUserRoles;
mapping(address => mapping(bytes4 => bool)) public isCapabilityPublic;
mapping(address => mapping(bytes4 => bytes32)) public getRolesWithCapability;
function doesUserHaveRole(address user, uint8 role) public view virtual returns (bool) {
return (uint256(getUserRoles[user]) >> role) & 1 != 0;
}
function doesRoleHaveCapability(
uint8 role,
address target,
bytes4 functionSig
) public view virtual returns (bool) {
return (uint256(getRolesWithCapability[target][functionSig]) >> role) & 1 != 0;
}
/*//////////////////////////////////////////////////////////////
AUTHORIZATION LOGIC
//////////////////////////////////////////////////////////////*/
function canCall(
address user,
address target,
bytes4 functionSig
) public view virtual override returns (bool) {
return
isCapabilityPublic[target][functionSig] ||
bytes32(0) != getUserRoles[user] & getRolesWithCapability[target][functionSig];
}
/*//////////////////////////////////////////////////////////////
ROLE CAPABILITY CONFIGURATION LOGIC
//////////////////////////////////////////////////////////////*/
function setPublicCapability(
address target,
bytes4 functionSig,
bool enabled
) public virtual requiresAuth {
isCapabilityPublic[target][functionSig] = enabled;
emit PublicCapabilityUpdated(target, functionSig, enabled);
}
function setRoleCapability(
uint8 role,
address target,
bytes4 functionSig,
bool enabled
) public virtual requiresAuth {
if (enabled) {
getRolesWithCapability[target][functionSig] |= bytes32(1 << role);
} else {
getRolesWithCapability[target][functionSig] &= ~bytes32(1 << role);
}
emit RoleCapabilityUpdated(role, target, functionSig, enabled);
}
/*//////////////////////////////////////////////////////////////
USER ROLE ASSIGNMENT LOGIC
//////////////////////////////////////////////////////////////*/
function setUserRole(
address user,
uint8 role,
bool enabled
) public virtual requiresAuth {
if (enabled) {
getUserRoles[user] |= bytes32(1 << role);
} else {
getUserRoles[user] &= ~bytes32(1 << role);
}
emit UserRoleUpdated(user, role, enabled);
}
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
abstract contract Auth {
event OwnershipTransferred(address indexed user, address indexed newOwner);
event AuthorityUpdated(address indexed user, Authority indexed newAuthority);
address public owner;
Authority public authority;
constructor(address _owner, Authority _authority) {
owner = _owner;
authority = _authority;
emit OwnershipTransferred(msg.sender, _owner);
emit AuthorityUpdated(msg.sender, _authority);
}
modifier requiresAuth() virtual {
require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");
_;
}
function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {
Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.
// Checking if the caller is the owner only after calling the authority saves gas in most cases, but be
// aware that this makes protected functions uncallable even to the owner if the authority is out of order.
return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;
}
function setAuthority(Authority newAuthority) public virtual {
// We check if the caller is the owner first because we want to ensure they can
// always swap out the authority even if it's reverting or using up a lot of gas.
require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig));
authority = newAuthority;
emit AuthorityUpdated(msg.sender, newAuthority);
}
function transferOwnership(address newOwner) public virtual requiresAuth {
owner = newOwner;
emit OwnershipTransferred(msg.sender, newOwner);
}
}
/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
interface Authority {
function canCall(
address user,
address target,
bytes4 functionSig
) external view returns (bool);
}{
"remappings": [
"@level/src/=src/",
"@level/config/=config/",
"@level/script/=script/",
"@level/test/=test/",
"ds-test/=lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@openzeppelin-4.9.0/contracts/=lib/openzeppelin-contracts-4.9.0/contracts/",
"@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@solmate/=lib/solmate/",
"@openzeppelin-upgrades/=lib/openzeppelin-foundry-upgrades/"
],
"optimizer": {
"enabled": false,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": false
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": true,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"RoleRemovalNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"PublicCapabilityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"RemovableRoleConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RoleCapabilityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UserRoleUpdated","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"}],"name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"}],"name":"doesRoleHaveCapability","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"doesUserHaveRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getAllRoles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"getRolesWithCapability","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getUserRoles","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"isCapabilityPublic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"isRoleRemovable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"removeUserRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPublicCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setRoleCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setRoleRemovable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setUserRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052346100305761001a610014610133565b90610155565b610022610035565b6117686102e1823961176890f35b61003b565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100679061003f565b810190811060018060401b0382111761007f57604052565b610049565b90610097610090610035565b928361005d565b565b5f80fd5b60018060a01b031690565b6100b19061009d565b90565b6100bd816100a8565b036100c457565b5f80fd5b905051906100d5826100b4565b565b6100e0906100a8565b90565b6100ec816100d7565b036100f357565b5f80fd5b90505190610104826100e3565b565b919060408382031261012e578061012261012b925f86016100c8565b936020016100f7565b90565b610099565b610151611a498038038061014681610084565b928339810190610106565b9091565b9061015f91610161565b565b9061016b9161016d565b565b9061017791610233565b565b5f1b90565b9061018f60018060a01b0391610179565b9181191691161790565b90565b6101b06101ab6101b59261009d565b610199565b61009d565b90565b6101c19061019c565b90565b6101cd906101b8565b90565b90565b906101e86101e36101ef926101c4565b6101d0565b825461017e565b9055565b6101fc9061019c565b90565b610208906101f3565b90565b90565b9061022361021e61022a926101ff565b61020b565b825461017e565b9055565b5f0190565b61023d815f6101d3565b61024882600161020e565b339061027d6102777f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936101c4565b916101c4565b91610286610035565b806102908161022e565b0390a333906102c86102c27fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198936101c4565b916101ff565b916102d1610035565b806102db8161022e565b0390a356fe60806040526004361015610013575b610abb565b61001d5f3561012c565b806301d7b0221461012757806306a36aee146101225780632f47571f1461011d5780633e762e001461011857806367aff484146101135780637917b7941461010e5780637a9e5e4b146101095780637d40583d146101045780638da5cb5b146100ff578063b27fb668146100fa578063b44f794f146100f5578063b4bad06a146100f0578063b7009613146100eb578063bf7e214f146100e6578063c6b0263e146100e1578063ea7ca276146100dc5763f2fde38b0361000e57610a88565b610a52565b610a1e565b6109af565b61090b565b61089b565b61082d565b6107cb565b610771565b6106ca565b610651565b6105ce565b61054d565b6104de565b61043f565b610307565b6101c3565b60e01c90565b60405190565b5f80fd5b5f80fd5b60ff1690565b61014f81610140565b0361015657565b5f80fd5b9050359061016782610146565b565b151590565b61017781610169565b0361017e57565b5f80fd5b9050359061018f8261016e565b565b91906040838203126101b957806101ad6101b6925f860161015a565b93602001610182565b90565b61013c565b5f0190565b346101f2576101dc6101d6366004610191565b90610c16565b6101e4610132565b806101ee816101be565b0390f35b610138565b60018060a01b031690565b61020b906101f7565b90565b61021781610202565b0361021e57565b5f80fd5b9050359061022f8261020e565b565b9060208282031261024a57610247915f01610222565b90565b61013c565b90565b61026661026161026b926101f7565b61024f565b6101f7565b90565b61027790610252565b90565b6102839061026e565b90565b906102909061027a565b5f5260205260405f2090565b1c90565b90565b6102b39060086102b8930261029c565b6102a0565b90565b906102c691546102a3565b90565b6102df906102da6002915f92610286565b6102bb565b90565b90565b6102ee906102e2565b9052565b9190610305905f602085019401906102e5565b565b346103375761033361032261031d366004610231565b6102c9565b61032a610132565b918291826102f2565b0390f35b610138565b63ffffffff60e01b1690565b6103518161033c565b0361035857565b5f80fd5b9050359061036982610348565b565b91906040838203126103935780610387610390925f8601610222565b9360200161035c565b90565b61013c565b906103a29061027a565b5f5260205260405f2090565b6103b79061033c565b90565b906103c4906103ae565b5f5260205260405f2090565b60ff1690565b6103e69060086103eb930261029c565b6103d0565b90565b906103f991546103d6565b90565b61041561041a926104106003935f94610398565b6103ba565b6103ee565b90565b61042690610169565b9052565b919061043d905f6020850194019061041d565b565b346104705761046c61045b61045536600461036b565b906103fc565b610463610132565b9182918261042a565b0390f35b610138565b9060208282031261048e5761048b915f0161015a565b90565b61013c565b6104a76104a26104ac92610140565b61024f565b610140565b90565b906104b990610493565b5f5260205260405f2090565b6104db906104d66005915f926104af565b6103ee565b90565b3461050e5761050a6104f96104f4366004610475565b6104c5565b610501610132565b9182918261042a565b0390f35b610138565b90916060828403126105485761054561052e845f8501610222565b9361053c816020860161015a565b93604001610182565b90565b61013c565b3461057c57610566610560366004610513565b91610ddf565b61056e610132565b80610578816101be565b0390f35b610138565b9061058b9061027a565b5f5260205260405f2090565b906105a1906103ae565b5f5260205260405f2090565b6105c66105cb926105c16004935f94610581565b610597565b6102bb565b90565b346105ff576105fb6105ea6105e436600461036b565b906105ad565b6105f2610132565b918291826102f2565b0390f35b610138565b61060d90610202565b90565b61061981610604565b0361062057565b5f80fd5b9050359061063182610610565b565b9060208282031261064c57610649915f01610624565b90565b61013c565b3461067f57610669610664366004610633565b610f64565b610671610132565b8061067b816101be565b0390f35b610138565b6080818303126106c55761069a825f830161015a565b926106c26106ab8460208501610222565b936106b9816040860161035c565b93606001610182565b90565b61013c565b346106fc576106e66106dd366004610684565b929190916111ba565b6106ee610132565b806106f8816101be565b0390f35b610138565b5f91031261070b57565b61013c565b60018060a01b031690565b61072b906008610730930261029c565b610710565b90565b9061073e915461071b565b90565b61074c5f5f90610733565b90565b61075890610202565b9052565b919061076f905f6020850194019061074f565b565b346107a157610781366004610701565b61079d61078c610741565b610794610132565b9182918261075c565b0390f35b610138565b90565b6107b2906107a6565b9052565b91906107c9905f602085019401906107a9565b565b346107fb576107f76107e66107e1366004610231565b6111fc565b6107ee610132565b918291826107b6565b0390f35b610138565b9190604083820312610828578061081c610825925f8601610222565b9360200161015a565b90565b61013c565b3461085c57610846610840366004610800565b9061133f565b61084e610132565b80610858816101be565b0390f35b610138565b90916060828403126108965761089361087c845f850161015a565b9361088a8160208601610222565b9360400161035c565b90565b61013c565b346108cc576108c86108b76108b1366004610861565b91611395565b6108bf610132565b9182918261042a565b0390f35b610138565b9091606082840312610906576109036108ec845f8501610222565b936108fa8160208601610222565b9360400161035c565b90565b61013c565b3461093c576109386109276109213660046108d1565b91611409565b61092f610132565b9182918261042a565b0390f35b610138565b60018060a01b031690565b61095c906008610961930261029c565b610941565b90565b9061096f915461094c565b90565b61097e60015f90610964565b90565b61098a9061026e565b90565b61099690610981565b9052565b91906109ad905f6020850194019061098d565b565b346109df576109bf366004610701565b6109db6109ca610972565b6109d2610132565b9182918261099a565b0390f35b610138565b9091606082840312610a1957610a166109ff845f8501610222565b93610a0d816020860161035c565b93604001610182565b90565b61013c565b34610a4d57610a37610a313660046109e4565b91611533565b610a3f610132565b80610a49816101be565b0390f35b610138565b34610a8357610a7f610a6e610a68366004610800565b90611540565b610a76610132565b9182918261042a565b0390f35b610138565b34610ab657610aa0610a9b366004610231565b611631565b610aa8610132565b80610ab2816101be565b0390f35b610138565b5f80fd5b60209181520190565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610afc600c602092610abf565b610b0581610ac8565b0190565b610b1e9060208101905f818303910152610aef565b90565b15610b2857565b610b30610132565b62461bcd60e51b815280610b4660048201610b09565b0390fd5b90610b7191610b6c610b673363ffffffff60e01b5f351690611664565b610b21565b610bbd565b565b5f1b90565b90610b8460ff91610b73565b9181191691161790565b610b9790610169565b90565b90565b90610bb2610bad610bb992610b8e565b610b9a565b8254610b78565b9055565b610bd282610bcd600584906104af565b610b9d565b610c11610bff7ffe18b93b9d673d5fa9d47a90eecc041e521d2fc672cbc2c800ea5ebf269c06f092610493565b92610c08610132565b9182918261042a565b0390a2565b90610c2091610b4a565b565b90610c4a9291610c45610c403363ffffffff60e01b5f351690611664565b610b21565b610d26565b565b90565b610c63610c5e610c6892610c4c565b61024f565b6107a6565b90565b1b90565b610c8e90610c88610c82610c9394610140565b916107a6565b90610c6b565b6107a6565b90565b610caa610ca5610caf926107a6565b610b73565b6102e2565b90565b5f1c90565b610cc3610cc891610cb2565b6102a0565b90565b610cd59054610cb7565b90565b90610ce45f1991610b73565b9181191691161790565b610cf7906102e2565b90565b610d0390610cb2565b90565b90610d1b610d16610d2292610cee565b610cfa565b8254610cd8565b9055565b9091610d329015610169565b610dc357610d72610d55610d506001610d4b8691610c4f565b610c6f565b610c96565b610d6160028490610286565b90610d6b82610ccb565b1790610d06565b90600191610dbe610dac610da67f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf29361027a565b93610493565b93610db5610132565b9182918261042a565b0390a3565b5f632e6ec23560e21b815280610ddb600482016101be565b0390fd5b90610dea9291610c22565b565b610df8610dfd91610cb2565b610710565b90565b610e0a9054610dec565b90565b610e19610e1e91610cb2565b610941565b90565b610e2b9054610e0d565b90565b610e379061026e565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e6290610e3a565b810190811067ffffffffffffffff821117610e7c57604052565b610e44565b60e01b90565b90505190610e948261016e565b565b90602082820312610eaf57610eac915f01610e87565b90565b61013c565b610ebd9061033c565b9052565b604090610eea610ef19496959396610ee060608401985f85019061074f565b602083019061074f565b0190610eb4565b565b610efb610132565b3d5f823e3d90fd5b15610f0a57565b5f80fd5b90610f1f60018060a01b0391610b73565b9181191691161790565b610f3290610252565b90565b610f3e90610f29565b90565b90565b90610f59610f54610f6092610f35565b610f41565b8254610f0e565b9055565b33610f7f610f79610f745f610e00565b610202565b91610202565b148015610fe8575b610f9090610f03565b610f9b816001610f44565b3390610fd0610fca7fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b763899801989361027a565b91610f35565b91610fd9610132565b80610fe3816101be565b0390a3565b50610ffb610ff66001610e21565b610981565b602063b700961391339061103461101130610e2e565b9461103f63ffffffff60e01b5f3516611028610132565b97889687958695610e81565b855260048501610ec1565b03915afa801561108a57610f90915f9161105c575b509050610f87565b61107d915060203d8111611083575b6110758183610e58565b810190610e96565b5f611054565b503d61106b565b610ef3565b906110b89392916110b36110ae3363ffffffff60e01b5f351690611664565b610b21565b6110ba565b565b92919092825f146111665761110b6110e46110df60016110da8591610c4f565b610c6f565b610c96565b6110fa6110f360048890610581565b8590610597565b9061110482610ccb565b1790610d06565b5b9290919261116161114f6111496111437fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e94610493565b9461027a565b946103ae565b94611158610132565b9182918261042a565b0390a4565b6111b561118e611188611183600161117e8691610c4f565b610c6f565b610c96565b196102e2565b6111a461119d60048890610581565b8590610597565b906111ae82610ccb565b1690610d06565b61110c565b906111c693929161108f565b565b5f90565b6111e06111db6111e5926107a6565b61024f565b6107a6565b90565b6111f46111f991610cb2565b6111cc565b90565b61121b6112166112209261120e6111c8565b506002610286565b610ccb565b6111e8565b90565b9061124a916112456112403363ffffffff60e01b5f351690611664565b610b21565b61126d565b565b61125861125d91610cb2565b6103d0565b90565b61126a905461124c565b90565b61128a61128461127f600585906104af565b611260565b15610169565b611323576112d36112b66112b06112ab60016112a68791610c4f565b610c6f565b610c96565b196102e2565b6112c260028490610286565b906112cc82610ccb565b1690610d06565b905f9161131e61130c6113067f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf29361027a565b93610493565b93611315610132565b9182918261042a565b0390a3565b5f632e6ec23560e21b81528061133b600482016101be565b0390fd5b9061134991611223565b565b5f90565b61136e9061136861136261137394610140565b916107a6565b9061029c565b6107a6565b90565b90565b61138d61138861139292611376565b61024f565b6107a6565b90565b906113c16113bc6113cb946113b76113c6946113af61134b565b506004610581565b610597565b610ccb565b6111e8565b61134f565b6113d56001610c4f565b166113e86113e25f611379565b916107a6565b141590565b6114016113fc61140692611376565b610b73565b6102e2565b90565b9061141261134b565b5061143161142c61142560038490610398565b85906103ba565b611260565b92831561143f575b50505090565b61148d9293509061148161147c6114879361147761146f61146a6114625f6113ed565b996002610286565b610ccb565b946004610581565b610597565b610ccb565b166102e2565b916102e2565b14155f8080611439565b906114bf92916114ba6114b53363ffffffff60e01b5f351690611664565b610b21565b6114c1565b565b9190916114e3826114de6114d760038590610398565b86906103ba565b610b9d565b91909161152e61151c6115167f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9361027a565b936103ae565b93611525610132565b9182918261042a565b0390a3565b9061153e9291611497565b565b9061156861156361155e61156d9461155661134b565b506002610286565b610ccb565b6111e8565b61134f565b6115776001610c4f565b1661158a6115845f611379565b916107a6565b141590565b6115b5906115b06115ab3363ffffffff60e01b5f351690611664565b610b21565b6115da565b565b90565b906115cf6115ca6115d69261027a565b6115b7565b8254610f0e565b9055565b6115e4815f6115ba565b33906116196116137f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361027a565b9161027a565b91611622610132565b8061162c816101be565b0390a3565b61163a9061158f565b565b61165061164b61165592611376565b61024f565b6101f7565b90565b6116619061163c565b90565b9061166d61134b565b506116786001610e21565b9061168282610981565b61169c6116966116915f611658565b610202565b91610202565b141591826116d6575b50509081156116b3575b5090565b90506116cf6116c96116c45f610e00565b610202565b91610202565b145f6116af565b60209192506116e490610981565b63b700961390611710859261171b6116fb30610e2e565b96611704610132565b97889687958695610e81565b855260048501610ec1565b03915afa908115611763575f91611735575b505f806116a5565b611756915060203d811161175c575b61174e8183610e58565b810190610e96565b5f61172d565b503d611744565b610ef356000000000000000000000000b39cd45a870ccb5f3fcd7211f0c1853e5bf4d5f30000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361015610013575b610abb565b61001d5f3561012c565b806301d7b0221461012757806306a36aee146101225780632f47571f1461011d5780633e762e001461011857806367aff484146101135780637917b7941461010e5780637a9e5e4b146101095780637d40583d146101045780638da5cb5b146100ff578063b27fb668146100fa578063b44f794f146100f5578063b4bad06a146100f0578063b7009613146100eb578063bf7e214f146100e6578063c6b0263e146100e1578063ea7ca276146100dc5763f2fde38b0361000e57610a88565b610a52565b610a1e565b6109af565b61090b565b61089b565b61082d565b6107cb565b610771565b6106ca565b610651565b6105ce565b61054d565b6104de565b61043f565b610307565b6101c3565b60e01c90565b60405190565b5f80fd5b5f80fd5b60ff1690565b61014f81610140565b0361015657565b5f80fd5b9050359061016782610146565b565b151590565b61017781610169565b0361017e57565b5f80fd5b9050359061018f8261016e565b565b91906040838203126101b957806101ad6101b6925f860161015a565b93602001610182565b90565b61013c565b5f0190565b346101f2576101dc6101d6366004610191565b90610c16565b6101e4610132565b806101ee816101be565b0390f35b610138565b60018060a01b031690565b61020b906101f7565b90565b61021781610202565b0361021e57565b5f80fd5b9050359061022f8261020e565b565b9060208282031261024a57610247915f01610222565b90565b61013c565b90565b61026661026161026b926101f7565b61024f565b6101f7565b90565b61027790610252565b90565b6102839061026e565b90565b906102909061027a565b5f5260205260405f2090565b1c90565b90565b6102b39060086102b8930261029c565b6102a0565b90565b906102c691546102a3565b90565b6102df906102da6002915f92610286565b6102bb565b90565b90565b6102ee906102e2565b9052565b9190610305905f602085019401906102e5565b565b346103375761033361032261031d366004610231565b6102c9565b61032a610132565b918291826102f2565b0390f35b610138565b63ffffffff60e01b1690565b6103518161033c565b0361035857565b5f80fd5b9050359061036982610348565b565b91906040838203126103935780610387610390925f8601610222565b9360200161035c565b90565b61013c565b906103a29061027a565b5f5260205260405f2090565b6103b79061033c565b90565b906103c4906103ae565b5f5260205260405f2090565b60ff1690565b6103e69060086103eb930261029c565b6103d0565b90565b906103f991546103d6565b90565b61041561041a926104106003935f94610398565b6103ba565b6103ee565b90565b61042690610169565b9052565b919061043d905f6020850194019061041d565b565b346104705761046c61045b61045536600461036b565b906103fc565b610463610132565b9182918261042a565b0390f35b610138565b9060208282031261048e5761048b915f0161015a565b90565b61013c565b6104a76104a26104ac92610140565b61024f565b610140565b90565b906104b990610493565b5f5260205260405f2090565b6104db906104d66005915f926104af565b6103ee565b90565b3461050e5761050a6104f96104f4366004610475565b6104c5565b610501610132565b9182918261042a565b0390f35b610138565b90916060828403126105485761054561052e845f8501610222565b9361053c816020860161015a565b93604001610182565b90565b61013c565b3461057c57610566610560366004610513565b91610ddf565b61056e610132565b80610578816101be565b0390f35b610138565b9061058b9061027a565b5f5260205260405f2090565b906105a1906103ae565b5f5260205260405f2090565b6105c66105cb926105c16004935f94610581565b610597565b6102bb565b90565b346105ff576105fb6105ea6105e436600461036b565b906105ad565b6105f2610132565b918291826102f2565b0390f35b610138565b61060d90610202565b90565b61061981610604565b0361062057565b5f80fd5b9050359061063182610610565b565b9060208282031261064c57610649915f01610624565b90565b61013c565b3461067f57610669610664366004610633565b610f64565b610671610132565b8061067b816101be565b0390f35b610138565b6080818303126106c55761069a825f830161015a565b926106c26106ab8460208501610222565b936106b9816040860161035c565b93606001610182565b90565b61013c565b346106fc576106e66106dd366004610684565b929190916111ba565b6106ee610132565b806106f8816101be565b0390f35b610138565b5f91031261070b57565b61013c565b60018060a01b031690565b61072b906008610730930261029c565b610710565b90565b9061073e915461071b565b90565b61074c5f5f90610733565b90565b61075890610202565b9052565b919061076f905f6020850194019061074f565b565b346107a157610781366004610701565b61079d61078c610741565b610794610132565b9182918261075c565b0390f35b610138565b90565b6107b2906107a6565b9052565b91906107c9905f602085019401906107a9565b565b346107fb576107f76107e66107e1366004610231565b6111fc565b6107ee610132565b918291826107b6565b0390f35b610138565b9190604083820312610828578061081c610825925f8601610222565b9360200161015a565b90565b61013c565b3461085c57610846610840366004610800565b9061133f565b61084e610132565b80610858816101be565b0390f35b610138565b90916060828403126108965761089361087c845f850161015a565b9361088a8160208601610222565b9360400161035c565b90565b61013c565b346108cc576108c86108b76108b1366004610861565b91611395565b6108bf610132565b9182918261042a565b0390f35b610138565b9091606082840312610906576109036108ec845f8501610222565b936108fa8160208601610222565b9360400161035c565b90565b61013c565b3461093c576109386109276109213660046108d1565b91611409565b61092f610132565b9182918261042a565b0390f35b610138565b60018060a01b031690565b61095c906008610961930261029c565b610941565b90565b9061096f915461094c565b90565b61097e60015f90610964565b90565b61098a9061026e565b90565b61099690610981565b9052565b91906109ad905f6020850194019061098d565b565b346109df576109bf366004610701565b6109db6109ca610972565b6109d2610132565b9182918261099a565b0390f35b610138565b9091606082840312610a1957610a166109ff845f8501610222565b93610a0d816020860161035c565b93604001610182565b90565b61013c565b34610a4d57610a37610a313660046109e4565b91611533565b610a3f610132565b80610a49816101be565b0390f35b610138565b34610a8357610a7f610a6e610a68366004610800565b90611540565b610a76610132565b9182918261042a565b0390f35b610138565b34610ab657610aa0610a9b366004610231565b611631565b610aa8610132565b80610ab2816101be565b0390f35b610138565b5f80fd5b60209181520190565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610afc600c602092610abf565b610b0581610ac8565b0190565b610b1e9060208101905f818303910152610aef565b90565b15610b2857565b610b30610132565b62461bcd60e51b815280610b4660048201610b09565b0390fd5b90610b7191610b6c610b673363ffffffff60e01b5f351690611664565b610b21565b610bbd565b565b5f1b90565b90610b8460ff91610b73565b9181191691161790565b610b9790610169565b90565b90565b90610bb2610bad610bb992610b8e565b610b9a565b8254610b78565b9055565b610bd282610bcd600584906104af565b610b9d565b610c11610bff7ffe18b93b9d673d5fa9d47a90eecc041e521d2fc672cbc2c800ea5ebf269c06f092610493565b92610c08610132565b9182918261042a565b0390a2565b90610c2091610b4a565b565b90610c4a9291610c45610c403363ffffffff60e01b5f351690611664565b610b21565b610d26565b565b90565b610c63610c5e610c6892610c4c565b61024f565b6107a6565b90565b1b90565b610c8e90610c88610c82610c9394610140565b916107a6565b90610c6b565b6107a6565b90565b610caa610ca5610caf926107a6565b610b73565b6102e2565b90565b5f1c90565b610cc3610cc891610cb2565b6102a0565b90565b610cd59054610cb7565b90565b90610ce45f1991610b73565b9181191691161790565b610cf7906102e2565b90565b610d0390610cb2565b90565b90610d1b610d16610d2292610cee565b610cfa565b8254610cd8565b9055565b9091610d329015610169565b610dc357610d72610d55610d506001610d4b8691610c4f565b610c6f565b610c96565b610d6160028490610286565b90610d6b82610ccb565b1790610d06565b90600191610dbe610dac610da67f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf29361027a565b93610493565b93610db5610132565b9182918261042a565b0390a3565b5f632e6ec23560e21b815280610ddb600482016101be565b0390fd5b90610dea9291610c22565b565b610df8610dfd91610cb2565b610710565b90565b610e0a9054610dec565b90565b610e19610e1e91610cb2565b610941565b90565b610e2b9054610e0d565b90565b610e379061026e565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e6290610e3a565b810190811067ffffffffffffffff821117610e7c57604052565b610e44565b60e01b90565b90505190610e948261016e565b565b90602082820312610eaf57610eac915f01610e87565b90565b61013c565b610ebd9061033c565b9052565b604090610eea610ef19496959396610ee060608401985f85019061074f565b602083019061074f565b0190610eb4565b565b610efb610132565b3d5f823e3d90fd5b15610f0a57565b5f80fd5b90610f1f60018060a01b0391610b73565b9181191691161790565b610f3290610252565b90565b610f3e90610f29565b90565b90565b90610f59610f54610f6092610f35565b610f41565b8254610f0e565b9055565b33610f7f610f79610f745f610e00565b610202565b91610202565b148015610fe8575b610f9090610f03565b610f9b816001610f44565b3390610fd0610fca7fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b763899801989361027a565b91610f35565b91610fd9610132565b80610fe3816101be565b0390a3565b50610ffb610ff66001610e21565b610981565b602063b700961391339061103461101130610e2e565b9461103f63ffffffff60e01b5f3516611028610132565b97889687958695610e81565b855260048501610ec1565b03915afa801561108a57610f90915f9161105c575b509050610f87565b61107d915060203d8111611083575b6110758183610e58565b810190610e96565b5f611054565b503d61106b565b610ef3565b906110b89392916110b36110ae3363ffffffff60e01b5f351690611664565b610b21565b6110ba565b565b92919092825f146111665761110b6110e46110df60016110da8591610c4f565b610c6f565b610c96565b6110fa6110f360048890610581565b8590610597565b9061110482610ccb565b1790610d06565b5b9290919261116161114f6111496111437fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e94610493565b9461027a565b946103ae565b94611158610132565b9182918261042a565b0390a4565b6111b561118e611188611183600161117e8691610c4f565b610c6f565b610c96565b196102e2565b6111a461119d60048890610581565b8590610597565b906111ae82610ccb565b1690610d06565b61110c565b906111c693929161108f565b565b5f90565b6111e06111db6111e5926107a6565b61024f565b6107a6565b90565b6111f46111f991610cb2565b6111cc565b90565b61121b6112166112209261120e6111c8565b506002610286565b610ccb565b6111e8565b90565b9061124a916112456112403363ffffffff60e01b5f351690611664565b610b21565b61126d565b565b61125861125d91610cb2565b6103d0565b90565b61126a905461124c565b90565b61128a61128461127f600585906104af565b611260565b15610169565b611323576112d36112b66112b06112ab60016112a68791610c4f565b610c6f565b610c96565b196102e2565b6112c260028490610286565b906112cc82610ccb565b1690610d06565b905f9161131e61130c6113067f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf29361027a565b93610493565b93611315610132565b9182918261042a565b0390a3565b5f632e6ec23560e21b81528061133b600482016101be565b0390fd5b9061134991611223565b565b5f90565b61136e9061136861136261137394610140565b916107a6565b9061029c565b6107a6565b90565b90565b61138d61138861139292611376565b61024f565b6107a6565b90565b906113c16113bc6113cb946113b76113c6946113af61134b565b506004610581565b610597565b610ccb565b6111e8565b61134f565b6113d56001610c4f565b166113e86113e25f611379565b916107a6565b141590565b6114016113fc61140692611376565b610b73565b6102e2565b90565b9061141261134b565b5061143161142c61142560038490610398565b85906103ba565b611260565b92831561143f575b50505090565b61148d9293509061148161147c6114879361147761146f61146a6114625f6113ed565b996002610286565b610ccb565b946004610581565b610597565b610ccb565b166102e2565b916102e2565b14155f8080611439565b906114bf92916114ba6114b53363ffffffff60e01b5f351690611664565b610b21565b6114c1565b565b9190916114e3826114de6114d760038590610398565b86906103ba565b610b9d565b91909161152e61151c6115167f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9361027a565b936103ae565b93611525610132565b9182918261042a565b0390a3565b9061153e9291611497565b565b9061156861156361155e61156d9461155661134b565b506002610286565b610ccb565b6111e8565b61134f565b6115776001610c4f565b1661158a6115845f611379565b916107a6565b141590565b6115b5906115b06115ab3363ffffffff60e01b5f351690611664565b610b21565b6115da565b565b90565b906115cf6115ca6115d69261027a565b6115b7565b8254610f0e565b9055565b6115e4815f6115ba565b33906116196116137f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361027a565b9161027a565b91611622610132565b8061162c816101be565b0390a3565b61163a9061158f565b565b61165061164b61165592611376565b61024f565b6101f7565b90565b6116619061163c565b90565b9061166d61134b565b506116786001610e21565b9061168282610981565b61169c6116966116915f611658565b610202565b91610202565b141591826116d6575b50509081156116b3575b5090565b90506116cf6116c96116c45f610e00565b610202565b91610202565b145f6116af565b60209192506116e490610981565b63b700961390611710859261171b6116fb30610e2e565b96611704610132565b97889687958695610e81565b855260048501610ec1565b03915afa908115611763575f91611735575b505f806116a5565b611756915060203d811161175c575b61174e8183610e58565b810190610e96565b5f61172d565b503d611744565b610ef356
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b39cd45a870ccb5f3fcd7211f0c1853e5bf4d5f30000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _owner (address): 0xb39Cd45a870cCb5f3fcd7211f0c1853E5BF4D5f3
Arg [1] : _authority (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b39cd45a870ccb5f3fcd7211f0c1853e5bf4d5f3
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.