Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 13 from a total of 13 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Validator | 7843280 | 7 days ago | IN | 0 S | 0.07197613 | ||||
Create Validator | 7843266 | 7 days ago | IN | 0 S | 0.07153267 | ||||
Create Validator | 7843255 | 7 days ago | IN | 0 S | 0.0710892 | ||||
Create Validator | 7843225 | 7 days ago | IN | 0 S | 0.07064574 | ||||
Create Validator | 7843215 | 7 days ago | IN | 0 S | 0.07020233 | ||||
Create Validator | 7843208 | 7 days ago | IN | 0 S | 0.06975886 | ||||
Create Validator | 7843197 | 7 days ago | IN | 0 S | 0.0693154 | ||||
Create Validator | 7843190 | 7 days ago | IN | 0 S | 0.06887193 | ||||
Create Validator | 7843182 | 7 days ago | IN | 0 S | 0.06842852 | ||||
Create Validator | 7843155 | 7 days ago | IN | 0 S | 0.06892556 | ||||
Set Authorizatio... | 7842475 | 7 days ago | IN | 0 S | 0.0026571 | ||||
Set Authorizatio... | 7842415 | 7 days ago | IN | 0 S | 0.00265776 | ||||
Set Authorizatio... | 7842319 | 7 days ago | IN | 0 S | 0.00265776 |
Latest 10 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
7843280 | 7 days ago | Contract Creation | 0 S | |||
7843266 | 7 days ago | Contract Creation | 0 S | |||
7843255 | 7 days ago | Contract Creation | 0 S | |||
7843225 | 7 days ago | Contract Creation | 0 S | |||
7843215 | 7 days ago | Contract Creation | 0 S | |||
7843208 | 7 days ago | Contract Creation | 0 S | |||
7843197 | 7 days ago | Contract Creation | 0 S | |||
7843190 | 7 days ago | Contract Creation | 0 S | |||
7843182 | 7 days ago | Contract Creation | 0 S | |||
7843155 | 7 days ago | Contract Creation | 0 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ValidatorFactory
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./sources/OZ/Ownable.sol"; import "./validator.sol"; contract ValidatorFactory is Ownable { // Mapping to store the addresses of deployed validators mapping(address => bool) public validators; // Mapping of authorized Contracts mapping(address => bool) public authorizedContracts; // List of deployed validators address[] public deployedValidators; // Maximum number of active validators uint256 public constant MAX_ACTIVE_VALIDATORS = 25; // Events event ValidatorCreated(address indexed validatorAddress); event ContractAuthorized(address indexed contractAddress, bool isAuthorized); // Modifier modifier onlyAuthorized() { require(authorizedContracts[msg.sender], "Caller is not authorized"); _; } constructor(address _initialOwner) Ownable(_initialOwner) { } // Autorize contracts for validator creation function setAuthorization(address _contract, bool _isAuthorized) external onlyOwner { authorizedContracts[_contract] = _isAuthorized; emit ContractAuthorized(_contract, _isAuthorized); } // Function to create a single Validator and assign ownership to the provided owner function createValidator(address _EMLTokenAddress, address _owner) external onlyAuthorized returns (address) { // Check the number of active validators uint256 activeValidatorCount = 0; for (uint256 i = 0; i < deployedValidators.length; i++) { if (Validator(deployedValidators[i]).isActive()) { activeValidatorCount++; } } require( activeValidatorCount < MAX_ACTIVE_VALIDATORS, "Maximum number of active validators reached" ); // Create the validator and pass this factory address in the constructor Validator newValidator = new Validator(_EMLTokenAddress, _owner, address(this)); // Register the new validator in the factory address validatorAddress = address(newValidator); validators[validatorAddress] = true; deployedValidators.push(validatorAddress); emit ValidatorCreated(validatorAddress); return validatorAddress; } // Create a batch of Validators function createInitialValidators(address _EMLTokenAddress, uint256 numberOfValidators) external onlyOwner { require(numberOfValidators > 0, "Number of validators must be greater than 0"); require(numberOfValidators <= MAX_ACTIVE_VALIDATORS, "Cannot create more than the maximum allowed validators"); // Check active Validators number uint256 activeValidatorCount = 0; for (uint256 i = 0; i < deployedValidators.length; i++) { if (Validator(deployedValidators[i]).isActive()) { activeValidatorCount++; } } require( deployedValidators.length + numberOfValidators <= MAX_ACTIVE_VALIDATORS || activeValidatorCount < MAX_ACTIVE_VALIDATORS, "Cannot exceed the maximum number of validators" ); for (uint256 i = 0; i < numberOfValidators; i++) { Validator newValidator = new Validator(_EMLTokenAddress, msg.sender, address(this)); address validatorAddress = address(newValidator); validators[validatorAddress] = true; deployedValidators.push(validatorAddress); emit ValidatorCreated(validatorAddress); } } // Check if a validator is active function isValidatorActive(address validatorAddress) external view returns (bool) { require(validators[validatorAddress], "Validator not found"); return Validator(validatorAddress).isActive(); } // Get the owner of a validator function getValidatorOwner(address validatorAddress) external view returns (address) { require(validators[validatorAddress], "Validator not found"); return Validator(validatorAddress).getValidatorOwner(); } // Get the list of deployed validators function getDeployedValidators() external view returns (address[] memory) { return deployedValidators; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./sources/OZ/IERC20.sol"; import "./sources/OZ/Ownable.sol"; contract Validator is Ownable { address public EMLTokenAddress; address public validatorFactory; uint256 public validatorPrice; address public admin; bool public active = false; // Validator Current Owner mapping(address => address) public validatorOwners; // Mapping to associate the contract address with the validator address mapping(address => address) public validatorContracts; // Events event EMLBalanceChecked(uint256 balance); event ValidatorCount(uint256 activeCount, uint256 maxCount); event ValidatorClosed(address indexed owner, uint256 amount); event ValidatorOpened(); event ValidatorClosedEvent(); constructor(address _EMLTokenAddress, address _initialOwner, address _validatorFactory) Ownable(_initialOwner) { EMLTokenAddress = _EMLTokenAddress; admin = _initialOwner; validatorFactory = _validatorFactory; // Set the validatorFactory by default validatorContracts[address(this)] = address(this); validatorOwners[address(this)] = _initialOwner; } // Keccak hash function for an array of strings function calculateKeccak256(string[] calldata inputs) external view returns (bytes32) { require(active, "Validator is not active"); // Check if the validator is active // Concatenate all strings in the array bytes memory concatenatedString; for (uint256 i = 0; i < inputs.length; i++) { concatenatedString = abi.encodePacked(concatenatedString, inputs[i]); } // Calculate the Keccak256 hash of the concatenated string bytes32 hash = keccak256(concatenatedString); return hash; } // Set a new validator factory function setValidatorFactory(address _validatorFactory) external onlyOwner { require(_validatorFactory != address(0), "Invalid validator factory address"); validatorFactory = _validatorFactory; } // Return the validator contract address function getValidatorContractAddress() external view returns (address) { return validatorContracts[address(this)]; } // Return the current validator owner function getValidatorOwner() external view returns (address) { return validatorOwners[address(this)]; } // Return the amount of EML available in the contract function getEMLBalance() external view returns (uint256) { return IERC20(EMLTokenAddress).balanceOf(address(this)); } // Function to close the validator and send the EML balance to the owner function closeValidator() external onlyOwner { uint256 balance = IERC20(EMLTokenAddress).balanceOf(address(this)); require(balance > 0, "No EML tokens to transfer"); IERC20(EMLTokenAddress).transfer(owner(), balance); active = false; emit ValidatorClosed(owner(), balance); emit ValidatorClosedEvent(); } // Open the validator if it holds at least 20,000 EML function openValidator() external onlyOwner { uint256 emlBalance = IERC20(EMLTokenAddress).balanceOf(address(this)); emit EMLBalanceChecked(emlBalance); // Log la balance require(emlBalance >= 20000 * 10**18, "Validator must hold at least 20,000 EML"); active = true; emit ValidatorOpened(); } // Function to check if the validator is active function isActive() external view returns (bool) { return active; } // Function to get the admin address function getAdmin() external view returns (address) { return admin; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import "./Context.sol"; abstract contract Ownable is Context { address private _owner; error OwnableUnauthorizedAccount(address account); error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; 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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"contractAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isAuthorized","type":"bool"}],"name":"ContractAuthorized","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":"validatorAddress","type":"address"}],"name":"ValidatorCreated","type":"event"},{"inputs":[],"name":"MAX_ACTIVE_VALIDATORS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_EMLTokenAddress","type":"address"},{"internalType":"uint256","name":"numberOfValidators","type":"uint256"}],"name":"createInitialValidators","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_EMLTokenAddress","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"name":"createValidator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deployedValidators","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeployedValidators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"validatorAddress","type":"address"}],"name":"getValidatorOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"validatorAddress","type":"address"}],"name":"isValidatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_contract","type":"address"},{"internalType":"bool","name":"_isAuthorized","type":"bool"}],"name":"setAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b50604051613021380380613021833981810160405281019061003191906101d7565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610211565b60405180910390fd5b6100b1816100b860201b60201c565b505061022a565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101a68261017d565b9050919050565b6101b68161019c565b81146101c0575f80fd5b50565b5f815190506101d1816101ad565b92915050565b5f602082840312156101ec576101eb610179565b5b5f6101f9848285016101c3565b91505092915050565b61020b8161019c565b82525050565b5f6020820190506102245f830184610202565b92915050565b612dea806102375f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c8063830e4eef1161008a578063d5b9221b11610064578063d5b9221b14610211578063eecea00014610241578063f2fde38b1461025d578063fa52c7d814610279576100cd565b8063830e4eef146101935780638da5cb5b146101c3578063bf5c0875146101e1576100cd565b80633278869a146100d15780633f97dd86146100ed57806342ad55ac1461010b5780635d8874621461013b578063715018a6146101595780638265377e14610163575b5f80fd5b6100eb60048036038101906100e69190610f02565b6102a9565b005b6100f56105c2565b6040516101029190610ff7565b60405180910390f35b61012560048036038101906101209190611017565b61064d565b604051610132919061105c565b60405180910390f35b61014361074b565b6040516101509190611084565b60405180910390f35b610161610750565b005b61017d6004803603810190610178919061109d565b610763565b60405161018a91906110d7565b60405180910390f35b6101ad60048036038101906101a891906110f0565b61079e565b6040516101ba91906110d7565b60405180910390f35b6101cb610a84565b6040516101d891906110d7565b60405180910390f35b6101fb60048036038101906101f69190611017565b610aab565b60405161020891906110d7565b60405180910390f35b61022b60048036038101906102269190611017565b610ba9565b604051610238919061105c565b60405180910390f35b61025b60048036038101906102569190611158565b610bc6565b005b61027760048036038101906102729190611017565b610c74565b005b610293600480360381019061028e9190611017565b610cf8565b6040516102a0919061105c565b60405180910390f35b6102b1610d15565b5f81116102f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ea90611216565b60405180910390fd5b6019811115610337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032e906112a4565b60405180910390fd5b5f805b600380549050811015610410576003818154811061035b5761035a6112c2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ef9190611303565b156104035781806103ff9061135b565b9250505b808060010191505061033a565b5060198260038054905061042491906113a2565b1115806104315750601981105b610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046790611445565b60405180910390fd5b5f5b828110156105bc575f84333060405161048a90610e64565b61049693929190611463565b604051809103905ff0801580156104af573d5f803e3d5ffd5b5090505f8190506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600381908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f02db26aafd16e8ecd93c4fa202917d50b1693f30b1594e57f7a432ede944eefc60405160405180910390a250508080600101915050610472565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561064357602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116105fa575b5050505050905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906114e2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107449190611303565b9050919050565b601981565b610758610d15565b6107615f610d9c565b565b60038181548110610772575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f9061154a565b60405180910390fd5b5f805b600380549050811015610901576003818154811061084c5761084b6112c2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190611303565b156108f45781806108f09061135b565b9250505b808060010191505061082b565b5060198110610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c906115d8565b60405180910390fd5b5f84843060405161095590610e64565b61096193929190611463565b604051809103905ff08015801561097a573d5f803e3d5ffd5b5090505f8190506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600381908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f02db26aafd16e8ecd93c4fa202917d50b1693f30b1594e57f7a432ede944eefc60405160405180910390a280935050505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c906114e2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16633741b3516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba2919061160a565b9050919050565b6002602052805f5260405f205f915054906101000a900460ff1681565b610bce610d15565b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f3213ab8ec2ed122402f038736b41878b69ae9f61f49a7edd0666bce891d29fc982604051610c68919061105c565b60405180910390a25050565b610c7c610d15565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cec575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ce391906110d7565b60405180910390fd5b610cf581610d9c565b50565b6001602052805f5260405f205f915054906101000a900460ff1681565b610d1d610e5d565b73ffffffffffffffffffffffffffffffffffffffff16610d3b610a84565b73ffffffffffffffffffffffffffffffffffffffff1614610d9a57610d5e610e5d565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d9191906110d7565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b61177f8061163683390190565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e9e82610e75565b9050919050565b610eae81610e94565b8114610eb8575f80fd5b50565b5f81359050610ec981610ea5565b92915050565b5f819050919050565b610ee181610ecf565b8114610eeb575f80fd5b50565b5f81359050610efc81610ed8565b92915050565b5f8060408385031215610f1857610f17610e71565b5b5f610f2585828601610ebb565b9250506020610f3685828601610eee565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610f7281610e94565b82525050565b5f610f838383610f69565b60208301905092915050565b5f602082019050919050565b5f610fa582610f40565b610faf8185610f4a565b9350610fba83610f5a565b805f5b83811015610fea578151610fd18882610f78565b9750610fdc83610f8f565b925050600181019050610fbd565b5085935050505092915050565b5f6020820190508181035f83015261100f8184610f9b565b905092915050565b5f6020828403121561102c5761102b610e71565b5b5f61103984828501610ebb565b91505092915050565b5f8115159050919050565b61105681611042565b82525050565b5f60208201905061106f5f83018461104d565b92915050565b61107e81610ecf565b82525050565b5f6020820190506110975f830184611075565b92915050565b5f602082840312156110b2576110b1610e71565b5b5f6110bf84828501610eee565b91505092915050565b6110d181610e94565b82525050565b5f6020820190506110ea5f8301846110c8565b92915050565b5f806040838503121561110657611105610e71565b5b5f61111385828601610ebb565b925050602061112485828601610ebb565b9150509250929050565b61113781611042565b8114611141575f80fd5b50565b5f813590506111528161112e565b92915050565b5f806040838503121561116e5761116d610e71565b5b5f61117b85828601610ebb565b925050602061118c85828601611144565b9150509250929050565b5f82825260208201905092915050565b7f4e756d626572206f662076616c696461746f7273206d757374206265206772655f8201527f61746572207468616e2030000000000000000000000000000000000000000000602082015250565b5f611200602b83611196565b915061120b826111a6565b604082019050919050565b5f6020820190508181035f83015261122d816111f4565b9050919050565b7f43616e6e6f7420637265617465206d6f7265207468616e20746865206d6178695f8201527f6d756d20616c6c6f7765642076616c696461746f727300000000000000000000602082015250565b5f61128e603683611196565b915061129982611234565b604082019050919050565b5f6020820190508181035f8301526112bb81611282565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506112fd8161112e565b92915050565b5f6020828403121561131857611317610e71565b5b5f611325848285016112ef565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61136582610ecf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113975761139661132e565b5b600182019050919050565b5f6113ac82610ecf565b91506113b783610ecf565b92508282019050808211156113cf576113ce61132e565b5b92915050565b7f43616e6e6f742065786365656420746865206d6178696d756d206e756d6265725f8201527f206f662076616c696461746f7273000000000000000000000000000000000000602082015250565b5f61142f602e83611196565b915061143a826113d5565b604082019050919050565b5f6020820190508181035f83015261145c81611423565b9050919050565b5f6060820190506114765f8301866110c8565b61148360208301856110c8565b61149060408301846110c8565b949350505050565b7f56616c696461746f72206e6f7420666f756e64000000000000000000000000005f82015250565b5f6114cc601383611196565b91506114d782611498565b602082019050919050565b5f6020820190508181035f8301526114f9816114c0565b9050919050565b7f43616c6c6572206973206e6f7420617574686f72697a656400000000000000005f82015250565b5f611534601883611196565b915061153f82611500565b602082019050919050565b5f6020820190508181035f83015261156181611528565b9050919050565b7f4d6178696d756d206e756d626572206f66206163746976652076616c696461745f8201527f6f72732072656163686564000000000000000000000000000000000000000000602082015250565b5f6115c2602b83611196565b91506115cd82611568565b604082019050919050565b5f6020820190508181035f8301526115ef816115b6565b9050919050565b5f8151905061160481610ea5565b92915050565b5f6020828403121561161f5761161e610e71565b5b5f61162c848285016115f6565b9150509291505056fe60806040525f600460146101000a81548160ff021916908315150217905550348015610029575f80fd5b5060405161177f38038061177f833981810160405281019061004b91906103a9565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100bc575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100b39190610408565b60405180910390fd5b6100cb8161028a60201b60201c565b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503060065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610421565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103788261034f565b9050919050565b6103888161036e565b8114610392575f80fd5b50565b5f815190506103a38161037f565b92915050565b5f805f606084860312156103c0576103bf61034b565b5b5f6103cd86828701610395565b93505060206103de86828701610395565b92505060406103ef86828701610395565b9150509250925092565b6104028161036e565b82525050565b5f60208201905061041b5f8301846103f9565b92915050565b6113518061042e5f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c8063725eecf1116100ab578063c10f74611161006f578063c10f7461146102bf578063d7368fd6146102dd578063e727530d146102fb578063f2fde38b14610319578063f851a440146103355761011f565b8063725eecf1146102195780638da5cb5b146102375780638e0a98f51461025557806393d26c1a14610285578063bddb92de146102b55761011f565b806322227e50116100f257806322227e50146101ab57806322f3e2d4146101b55780633741b351146101d35780636e9960c3146101f1578063715018a61461020f5761011f565b806302fb0c5e1461012357806308975904146101415780630c45192f1461015f5780631a521d831461018f575b5f80fd5b61012b610353565b6040516101389190610d24565b60405180910390f35b610149610366565b6040516101569190610d55565b60405180910390f35b61017960048036038101906101749190610dd7565b61036c565b6040516101869190610e3a565b60405180910390f35b6101a960048036038101906101a49190610ead565b610438565b005b6101b36104f1565b005b6101bd610663565b6040516101ca9190610d24565b60405180910390f35b6101db610679565b6040516101e89190610ee7565b60405180910390f35b6101f96106dc565b6040516102069190610ee7565b60405180910390f35b610217610704565b005b610221610717565b60405161022e9190610ee7565b60405180910390f35b61023f61077a565b60405161024c9190610ee7565b60405180910390f35b61026f600480360381019061026a9190610ead565b6107a1565b60405161027c9190610ee7565b60405180910390f35b61029f600480360381019061029a9190610ead565b6107d1565b6040516102ac9190610ee7565b60405180910390f35b6102bd610801565b005b6102c7610a29565b6040516102d49190610d55565b60405180910390f35b6102e5610ac8565b6040516102f29190610ee7565b60405180910390f35b610303610aed565b6040516103109190610ee7565b60405180910390f35b610333600480360381019061032e9190610ead565b610b12565b005b61033d610b96565b60405161034a9190610ee7565b60405180910390f35b600460149054906101000a900460ff1681565b60035481565b5f600460149054906101000a900460ff166103bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b390610f5a565b60405180910390fd5b60605f5b8484905081101561042157818585838181106103df576103de610f78565b5b90506020028101906103f19190610fb1565b604051602001610403939291906110a1565b604051602081830303815290604052915080806001019150506103c0565b505f81805190602001209050809250505092915050565b610440610bbb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a590611136565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104f9610bbb565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105549190610ee7565b602060405180830381865afa15801561056f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610593919061117e565b90507f64f92430a863b716cb543f76c5e5261d58e00def4da37fc65d94e7973f85be5d816040516105c49190610d55565b60405180910390a169043c33c1937564800000811015610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061090611219565b60405180910390fd5b6001600460146101000a81548160ff0219169083151502179055507feecaf0fad5fdd007a30b9e010c1e85793a74fea4c863836e1c17d073890b129660405160405180910390a150565b5f600460149054906101000a900460ff16905090565b5f60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61070c610bbb565b6107155f610c42565b565b5f60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610809610bbb565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108649190610ee7565b602060405180830381865afa15801561087f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a3919061117e565b90505f81116108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90611281565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61092c61077a565b836040518363ffffffff1660e01b815260040161094a92919061129f565b6020604051808303815f875af1158015610966573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098a91906112f0565b505f600460146101000a81548160ff0219169083151502179055506109ad61077a565b73ffffffffffffffffffffffffffffffffffffffff167f9d03f7af1f34c5005e27fe2af80d574ce35cd499379a90d0e40290cf3b95fc7c826040516109f29190610d55565b60405180910390a27fac7c9a336f6590ba5c617c188a74b09fcbb0924ef0f93f03d9d47ab69c10070a60405160405180910390a150565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a849190610ee7565b602060405180830381865afa158015610a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac3919061117e565b905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b1a610bbb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b8a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b819190610ee7565b60405180910390fd5b610b9381610c42565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bc3610d03565b73ffffffffffffffffffffffffffffffffffffffff16610be161077a565b73ffffffffffffffffffffffffffffffffffffffff1614610c4057610c04610d03565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c379190610ee7565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f8115159050919050565b610d1e81610d0a565b82525050565b5f602082019050610d375f830184610d15565b92915050565b5f819050919050565b610d4f81610d3d565b82525050565b5f602082019050610d685f830184610d46565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610d9757610d96610d76565b5b8235905067ffffffffffffffff811115610db457610db3610d7a565b5b602083019150836020820283011115610dd057610dcf610d7e565b5b9250929050565b5f8060208385031215610ded57610dec610d6e565b5b5f83013567ffffffffffffffff811115610e0a57610e09610d72565b5b610e1685828601610d82565b92509250509250929050565b5f819050919050565b610e3481610e22565b82525050565b5f602082019050610e4d5f830184610e2b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e7c82610e53565b9050919050565b610e8c81610e72565b8114610e96575f80fd5b50565b5f81359050610ea781610e83565b92915050565b5f60208284031215610ec257610ec1610d6e565b5b5f610ecf84828501610e99565b91505092915050565b610ee181610e72565b82525050565b5f602082019050610efa5f830184610ed8565b92915050565b5f82825260208201905092915050565b7f56616c696461746f72206973206e6f74206163746976650000000000000000005f82015250565b5f610f44601783610f00565b9150610f4f82610f10565b602082019050919050565b5f6020820190508181035f830152610f7181610f38565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112610fcd57610fcc610fa5565b5b80840192508235915067ffffffffffffffff821115610fef57610fee610fa9565b5b60208301925060018202360383131561100b5761100a610fad565b5b509250929050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61103f82611013565b611049818561101d565b9350611059818560208601611027565b80840191505092915050565b5f81905092915050565b828183375f83830152505050565b5f6110888385611065565b935061109583858461106f565b82840190509392505050565b5f6110ac8286611035565b91506110b982848661107d565b9150819050949350505050565b7f496e76616c69642076616c696461746f7220666163746f7279206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f611120602183610f00565b915061112b826110c6565b604082019050919050565b5f6020820190508181035f83015261114d81611114565b9050919050565b61115d81610d3d565b8114611167575f80fd5b50565b5f8151905061117881611154565b92915050565b5f6020828403121561119357611192610d6e565b5b5f6111a08482850161116a565b91505092915050565b7f56616c696461746f72206d75737420686f6c64206174206c656173742032302c5f8201527f30303020454d4c00000000000000000000000000000000000000000000000000602082015250565b5f611203602783610f00565b915061120e826111a9565b604082019050919050565b5f6020820190508181035f830152611230816111f7565b9050919050565b7f4e6f20454d4c20746f6b656e7320746f207472616e73666572000000000000005f82015250565b5f61126b601983610f00565b915061127682611237565b602082019050919050565b5f6020820190508181035f8301526112988161125f565b9050919050565b5f6040820190506112b25f830185610ed8565b6112bf6020830184610d46565b9392505050565b6112cf81610d0a565b81146112d9575f80fd5b50565b5f815190506112ea816112c6565b92915050565b5f6020828403121561130557611304610d6e565b5b5f611312848285016112dc565b9150509291505056fea264697066735822122058f1e0bdd875ebb21ab69f8a11083c02fc1e5e24de36b548f89a8c3ae3e87da764736f6c634300081a0033a264697066735822122068b9513dafd6e88977ab1e5ce463f659e11d2281879b0694ba4983e8afb2a86a64736f6c634300081a003300000000000000000000000092eed0282c6665c9bcc81605a13a5c3b1e4dc7f2
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100cd575f3560e01c8063830e4eef1161008a578063d5b9221b11610064578063d5b9221b14610211578063eecea00014610241578063f2fde38b1461025d578063fa52c7d814610279576100cd565b8063830e4eef146101935780638da5cb5b146101c3578063bf5c0875146101e1576100cd565b80633278869a146100d15780633f97dd86146100ed57806342ad55ac1461010b5780635d8874621461013b578063715018a6146101595780638265377e14610163575b5f80fd5b6100eb60048036038101906100e69190610f02565b6102a9565b005b6100f56105c2565b6040516101029190610ff7565b60405180910390f35b61012560048036038101906101209190611017565b61064d565b604051610132919061105c565b60405180910390f35b61014361074b565b6040516101509190611084565b60405180910390f35b610161610750565b005b61017d6004803603810190610178919061109d565b610763565b60405161018a91906110d7565b60405180910390f35b6101ad60048036038101906101a891906110f0565b61079e565b6040516101ba91906110d7565b60405180910390f35b6101cb610a84565b6040516101d891906110d7565b60405180910390f35b6101fb60048036038101906101f69190611017565b610aab565b60405161020891906110d7565b60405180910390f35b61022b60048036038101906102269190611017565b610ba9565b604051610238919061105c565b60405180910390f35b61025b60048036038101906102569190611158565b610bc6565b005b61027760048036038101906102729190611017565b610c74565b005b610293600480360381019061028e9190611017565b610cf8565b6040516102a0919061105c565b60405180910390f35b6102b1610d15565b5f81116102f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ea90611216565b60405180910390fd5b6019811115610337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032e906112a4565b60405180910390fd5b5f805b600380549050811015610410576003818154811061035b5761035a6112c2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ef9190611303565b156104035781806103ff9061135b565b9250505b808060010191505061033a565b5060198260038054905061042491906113a2565b1115806104315750601981105b610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046790611445565b60405180910390fd5b5f5b828110156105bc575f84333060405161048a90610e64565b61049693929190611463565b604051809103905ff0801580156104af573d5f803e3d5ffd5b5090505f8190506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600381908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f02db26aafd16e8ecd93c4fa202917d50b1693f30b1594e57f7a432ede944eefc60405160405180910390a250508080600101915050610472565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561064357602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116105fa575b5050505050905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906114e2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107449190611303565b9050919050565b601981565b610758610d15565b6107615f610d9c565b565b60038181548110610772575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f9061154a565b60405180910390fd5b5f805b600380549050811015610901576003818154811061084c5761084b6112c2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190611303565b156108f45781806108f09061135b565b9250505b808060010191505061082b565b5060198110610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c906115d8565b60405180910390fd5b5f84843060405161095590610e64565b61096193929190611463565b604051809103905ff08015801561097a573d5f803e3d5ffd5b5090505f8190506001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600381908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f02db26aafd16e8ecd93c4fa202917d50b1693f30b1594e57f7a432ede944eefc60405160405180910390a280935050505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c906114e2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16633741b3516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba2919061160a565b9050919050565b6002602052805f5260405f205f915054906101000a900460ff1681565b610bce610d15565b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f3213ab8ec2ed122402f038736b41878b69ae9f61f49a7edd0666bce891d29fc982604051610c68919061105c565b60405180910390a25050565b610c7c610d15565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cec575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ce391906110d7565b60405180910390fd5b610cf581610d9c565b50565b6001602052805f5260405f205f915054906101000a900460ff1681565b610d1d610e5d565b73ffffffffffffffffffffffffffffffffffffffff16610d3b610a84565b73ffffffffffffffffffffffffffffffffffffffff1614610d9a57610d5e610e5d565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d9191906110d7565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b61177f8061163683390190565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e9e82610e75565b9050919050565b610eae81610e94565b8114610eb8575f80fd5b50565b5f81359050610ec981610ea5565b92915050565b5f819050919050565b610ee181610ecf565b8114610eeb575f80fd5b50565b5f81359050610efc81610ed8565b92915050565b5f8060408385031215610f1857610f17610e71565b5b5f610f2585828601610ebb565b9250506020610f3685828601610eee565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610f7281610e94565b82525050565b5f610f838383610f69565b60208301905092915050565b5f602082019050919050565b5f610fa582610f40565b610faf8185610f4a565b9350610fba83610f5a565b805f5b83811015610fea578151610fd18882610f78565b9750610fdc83610f8f565b925050600181019050610fbd565b5085935050505092915050565b5f6020820190508181035f83015261100f8184610f9b565b905092915050565b5f6020828403121561102c5761102b610e71565b5b5f61103984828501610ebb565b91505092915050565b5f8115159050919050565b61105681611042565b82525050565b5f60208201905061106f5f83018461104d565b92915050565b61107e81610ecf565b82525050565b5f6020820190506110975f830184611075565b92915050565b5f602082840312156110b2576110b1610e71565b5b5f6110bf84828501610eee565b91505092915050565b6110d181610e94565b82525050565b5f6020820190506110ea5f8301846110c8565b92915050565b5f806040838503121561110657611105610e71565b5b5f61111385828601610ebb565b925050602061112485828601610ebb565b9150509250929050565b61113781611042565b8114611141575f80fd5b50565b5f813590506111528161112e565b92915050565b5f806040838503121561116e5761116d610e71565b5b5f61117b85828601610ebb565b925050602061118c85828601611144565b9150509250929050565b5f82825260208201905092915050565b7f4e756d626572206f662076616c696461746f7273206d757374206265206772655f8201527f61746572207468616e2030000000000000000000000000000000000000000000602082015250565b5f611200602b83611196565b915061120b826111a6565b604082019050919050565b5f6020820190508181035f83015261122d816111f4565b9050919050565b7f43616e6e6f7420637265617465206d6f7265207468616e20746865206d6178695f8201527f6d756d20616c6c6f7765642076616c696461746f727300000000000000000000602082015250565b5f61128e603683611196565b915061129982611234565b604082019050919050565b5f6020820190508181035f8301526112bb81611282565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506112fd8161112e565b92915050565b5f6020828403121561131857611317610e71565b5b5f611325848285016112ef565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61136582610ecf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113975761139661132e565b5b600182019050919050565b5f6113ac82610ecf565b91506113b783610ecf565b92508282019050808211156113cf576113ce61132e565b5b92915050565b7f43616e6e6f742065786365656420746865206d6178696d756d206e756d6265725f8201527f206f662076616c696461746f7273000000000000000000000000000000000000602082015250565b5f61142f602e83611196565b915061143a826113d5565b604082019050919050565b5f6020820190508181035f83015261145c81611423565b9050919050565b5f6060820190506114765f8301866110c8565b61148360208301856110c8565b61149060408301846110c8565b949350505050565b7f56616c696461746f72206e6f7420666f756e64000000000000000000000000005f82015250565b5f6114cc601383611196565b91506114d782611498565b602082019050919050565b5f6020820190508181035f8301526114f9816114c0565b9050919050565b7f43616c6c6572206973206e6f7420617574686f72697a656400000000000000005f82015250565b5f611534601883611196565b915061153f82611500565b602082019050919050565b5f6020820190508181035f83015261156181611528565b9050919050565b7f4d6178696d756d206e756d626572206f66206163746976652076616c696461745f8201527f6f72732072656163686564000000000000000000000000000000000000000000602082015250565b5f6115c2602b83611196565b91506115cd82611568565b604082019050919050565b5f6020820190508181035f8301526115ef816115b6565b9050919050565b5f8151905061160481610ea5565b92915050565b5f6020828403121561161f5761161e610e71565b5b5f61162c848285016115f6565b9150509291505056fe60806040525f600460146101000a81548160ff021916908315150217905550348015610029575f80fd5b5060405161177f38038061177f833981810160405281019061004b91906103a9565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100bc575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100b39190610408565b60405180910390fd5b6100cb8161028a60201b60201c565b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503060065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610421565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103788261034f565b9050919050565b6103888161036e565b8114610392575f80fd5b50565b5f815190506103a38161037f565b92915050565b5f805f606084860312156103c0576103bf61034b565b5b5f6103cd86828701610395565b93505060206103de86828701610395565b92505060406103ef86828701610395565b9150509250925092565b6104028161036e565b82525050565b5f60208201905061041b5f8301846103f9565b92915050565b6113518061042e5f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c8063725eecf1116100ab578063c10f74611161006f578063c10f7461146102bf578063d7368fd6146102dd578063e727530d146102fb578063f2fde38b14610319578063f851a440146103355761011f565b8063725eecf1146102195780638da5cb5b146102375780638e0a98f51461025557806393d26c1a14610285578063bddb92de146102b55761011f565b806322227e50116100f257806322227e50146101ab57806322f3e2d4146101b55780633741b351146101d35780636e9960c3146101f1578063715018a61461020f5761011f565b806302fb0c5e1461012357806308975904146101415780630c45192f1461015f5780631a521d831461018f575b5f80fd5b61012b610353565b6040516101389190610d24565b60405180910390f35b610149610366565b6040516101569190610d55565b60405180910390f35b61017960048036038101906101749190610dd7565b61036c565b6040516101869190610e3a565b60405180910390f35b6101a960048036038101906101a49190610ead565b610438565b005b6101b36104f1565b005b6101bd610663565b6040516101ca9190610d24565b60405180910390f35b6101db610679565b6040516101e89190610ee7565b60405180910390f35b6101f96106dc565b6040516102069190610ee7565b60405180910390f35b610217610704565b005b610221610717565b60405161022e9190610ee7565b60405180910390f35b61023f61077a565b60405161024c9190610ee7565b60405180910390f35b61026f600480360381019061026a9190610ead565b6107a1565b60405161027c9190610ee7565b60405180910390f35b61029f600480360381019061029a9190610ead565b6107d1565b6040516102ac9190610ee7565b60405180910390f35b6102bd610801565b005b6102c7610a29565b6040516102d49190610d55565b60405180910390f35b6102e5610ac8565b6040516102f29190610ee7565b60405180910390f35b610303610aed565b6040516103109190610ee7565b60405180910390f35b610333600480360381019061032e9190610ead565b610b12565b005b61033d610b96565b60405161034a9190610ee7565b60405180910390f35b600460149054906101000a900460ff1681565b60035481565b5f600460149054906101000a900460ff166103bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b390610f5a565b60405180910390fd5b60605f5b8484905081101561042157818585838181106103df576103de610f78565b5b90506020028101906103f19190610fb1565b604051602001610403939291906110a1565b604051602081830303815290604052915080806001019150506103c0565b505f81805190602001209050809250505092915050565b610440610bbb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a590611136565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104f9610bbb565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105549190610ee7565b602060405180830381865afa15801561056f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610593919061117e565b90507f64f92430a863b716cb543f76c5e5261d58e00def4da37fc65d94e7973f85be5d816040516105c49190610d55565b60405180910390a169043c33c1937564800000811015610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061090611219565b60405180910390fd5b6001600460146101000a81548160ff0219169083151502179055507feecaf0fad5fdd007a30b9e010c1e85793a74fea4c863836e1c17d073890b129660405160405180910390a150565b5f600460149054906101000a900460ff16905090565b5f60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61070c610bbb565b6107155f610c42565b565b5f60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610809610bbb565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108649190610ee7565b602060405180830381865afa15801561087f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a3919061117e565b90505f81116108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90611281565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61092c61077a565b836040518363ffffffff1660e01b815260040161094a92919061129f565b6020604051808303815f875af1158015610966573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098a91906112f0565b505f600460146101000a81548160ff0219169083151502179055506109ad61077a565b73ffffffffffffffffffffffffffffffffffffffff167f9d03f7af1f34c5005e27fe2af80d574ce35cd499379a90d0e40290cf3b95fc7c826040516109f29190610d55565b60405180910390a27fac7c9a336f6590ba5c617c188a74b09fcbb0924ef0f93f03d9d47ab69c10070a60405160405180910390a150565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a849190610ee7565b602060405180830381865afa158015610a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac3919061117e565b905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b1a610bbb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b8a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b819190610ee7565b60405180910390fd5b610b9381610c42565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bc3610d03565b73ffffffffffffffffffffffffffffffffffffffff16610be161077a565b73ffffffffffffffffffffffffffffffffffffffff1614610c4057610c04610d03565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c379190610ee7565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f8115159050919050565b610d1e81610d0a565b82525050565b5f602082019050610d375f830184610d15565b92915050565b5f819050919050565b610d4f81610d3d565b82525050565b5f602082019050610d685f830184610d46565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610d9757610d96610d76565b5b8235905067ffffffffffffffff811115610db457610db3610d7a565b5b602083019150836020820283011115610dd057610dcf610d7e565b5b9250929050565b5f8060208385031215610ded57610dec610d6e565b5b5f83013567ffffffffffffffff811115610e0a57610e09610d72565b5b610e1685828601610d82565b92509250509250929050565b5f819050919050565b610e3481610e22565b82525050565b5f602082019050610e4d5f830184610e2b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e7c82610e53565b9050919050565b610e8c81610e72565b8114610e96575f80fd5b50565b5f81359050610ea781610e83565b92915050565b5f60208284031215610ec257610ec1610d6e565b5b5f610ecf84828501610e99565b91505092915050565b610ee181610e72565b82525050565b5f602082019050610efa5f830184610ed8565b92915050565b5f82825260208201905092915050565b7f56616c696461746f72206973206e6f74206163746976650000000000000000005f82015250565b5f610f44601783610f00565b9150610f4f82610f10565b602082019050919050565b5f6020820190508181035f830152610f7181610f38565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112610fcd57610fcc610fa5565b5b80840192508235915067ffffffffffffffff821115610fef57610fee610fa9565b5b60208301925060018202360383131561100b5761100a610fad565b5b509250929050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61103f82611013565b611049818561101d565b9350611059818560208601611027565b80840191505092915050565b5f81905092915050565b828183375f83830152505050565b5f6110888385611065565b935061109583858461106f565b82840190509392505050565b5f6110ac8286611035565b91506110b982848661107d565b9150819050949350505050565b7f496e76616c69642076616c696461746f7220666163746f7279206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f611120602183610f00565b915061112b826110c6565b604082019050919050565b5f6020820190508181035f83015261114d81611114565b9050919050565b61115d81610d3d565b8114611167575f80fd5b50565b5f8151905061117881611154565b92915050565b5f6020828403121561119357611192610d6e565b5b5f6111a08482850161116a565b91505092915050565b7f56616c696461746f72206d75737420686f6c64206174206c656173742032302c5f8201527f30303020454d4c00000000000000000000000000000000000000000000000000602082015250565b5f611203602783610f00565b915061120e826111a9565b604082019050919050565b5f6020820190508181035f830152611230816111f7565b9050919050565b7f4e6f20454d4c20746f6b656e7320746f207472616e73666572000000000000005f82015250565b5f61126b601983610f00565b915061127682611237565b602082019050919050565b5f6020820190508181035f8301526112988161125f565b9050919050565b5f6040820190506112b25f830185610ed8565b6112bf6020830184610d46565b9392505050565b6112cf81610d0a565b81146112d9575f80fd5b50565b5f815190506112ea816112c6565b92915050565b5f6020828403121561130557611304610d6e565b5b5f611312848285016112dc565b9150509291505056fea264697066735822122058f1e0bdd875ebb21ab69f8a11083c02fc1e5e24de36b548f89a8c3ae3e87da764736f6c634300081a0033a264697066735822122068b9513dafd6e88977ab1e5ce463f659e11d2281879b0694ba4983e8afb2a86a64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000092eed0282c6665c9bcc81605a13a5c3b1e4dc7f2
-----Decoded View---------------
Arg [0] : _initialOwner (address): 0x92eED0282c6665c9bcc81605A13a5C3b1E4Dc7F2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000092eed0282c6665c9bcc81605a13a5c3b1e4dc7f2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.