Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 47,194 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Account | 6778511 | 2206 days ago | IN | 0 ETH | 0.000281 | ||||
Create Account | 6778509 | 2206 days ago | IN | 0 ETH | 0.0003372 | ||||
Create Account | 6778507 | 2206 days ago | IN | 0 ETH | 0.00033682 | ||||
Create Account | 6778505 | 2206 days ago | IN | 0 ETH | 0.0003372 | ||||
Create Account | 6778502 | 2206 days ago | IN | 0 ETH | 0.00037092 | ||||
Create Account | 6778501 | 2206 days ago | IN | 0 ETH | 0.00037654 | ||||
Create Account | 6778501 | 2206 days ago | IN | 0 ETH | 0.0003934 | ||||
Create Account | 6778499 | 2206 days ago | IN | 0 ETH | 0.00048332 | ||||
Create Account | 6778496 | 2206 days ago | IN | 0 ETH | 0.00048332 | ||||
Create Account | 6778495 | 2206 days ago | IN | 0 ETH | 0.00048332 | ||||
Create Account | 6778495 | 2206 days ago | IN | 0 ETH | 0.00043836 | ||||
Create Account | 6778495 | 2206 days ago | IN | 0 ETH | 0.00043836 | ||||
Create Account | 6778493 | 2206 days ago | IN | 0 ETH | 0.0002248 | ||||
Create Account | 6778485 | 2206 days ago | IN | 0 ETH | 0.00018546 | ||||
Create Account | 6778482 | 2206 days ago | IN | 0 ETH | 0.0002248 | ||||
Create Account | 6778481 | 2206 days ago | IN | 0 ETH | 0.0002248 | ||||
Create Account | 6778481 | 2206 days ago | IN | 0 ETH | 0.0002248 | ||||
Create Account | 6778478 | 2206 days ago | IN | 0 ETH | 0.00020232 | ||||
Create Account | 6778475 | 2206 days ago | IN | 0 ETH | 0.00020232 | ||||
Create Account | 6778475 | 2206 days ago | IN | 0 ETH | 0.00020209 | ||||
Create Account | 6778468 | 2206 days ago | IN | 0 ETH | 0.00037092 | ||||
Create Account | 6778466 | 2206 days ago | IN | 0 ETH | 0.00037092 | ||||
Create Account | 6778463 | 2206 days ago | IN | 0 ETH | 0.00037092 | ||||
Create Account | 6778463 | 2206 days ago | IN | 0 ETH | 0.00037092 | ||||
Create Account | 6778463 | 2206 days ago | IN | 0 ETH | 0.00037092 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AccountRegistryLogic
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-18 */ pragma solidity 0.4.24; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract SigningLogicInterface { function recoverSigner(bytes32 _hash, bytes _sig) external pure returns (address); function generateRequestAttestationSchemaHash( address _subject, address _attester, address _requester, bytes32 _dataHash, uint256[] _typeIds, bytes32 _nonce ) external view returns (bytes32); function generateAttestForDelegationSchemaHash( address _subject, address _requester, uint256 _reward, bytes32 _paymentNonce, bytes32 _dataHash, uint256[] _typeIds, bytes32 _requestNonce ) external view returns (bytes32); function generateContestForDelegationSchemaHash( address _requester, uint256 _reward, bytes32 _paymentNonce ) external view returns (bytes32); function generateStakeForDelegationSchemaHash( address _subject, uint256 _value, bytes32 _paymentNonce, bytes32 _dataHash, uint256[] _typeIds, bytes32 _requestNonce, uint256 _stakeDuration ) external view returns (bytes32); function generateRevokeStakeForDelegationSchemaHash( uint256 _subjectId, uint256 _attestationId ) external view returns (bytes32); function generateAddAddressSchemaHash( address _senderAddress, bytes32 _nonce ) external view returns (bytes32); function generateVoteForDelegationSchemaHash( uint16 _choice, address _voter, bytes32 _nonce, address _poll ) external view returns (bytes32); function generateReleaseTokensSchemaHash( address _sender, address _receiver, uint256 _amount, bytes32 _uuid ) external view returns (bytes32); function generateLockupTokensDelegationSchemaHash( address _sender, uint256 _amount, bytes32 _nonce ) external view returns (bytes32); } interface AccountRegistryInterface { function accountIdForAddress(address _address) public view returns (uint256); function addressBelongsToAccount(address _address) public view returns (bool); function createNewAccount(address _newUser) external; function addAddressToAccount( address _newAddress, address _sender ) external; function removeAddressFromAccount(address _addressToRemove) external; } /** * @title Bloom account registry * @notice Account Registry Logic provides a public interface for Bloom and users to * create and control their Bloom Ids. * Users can associate create and accept invites and associate additional addresses with their BloomId. * As the Bloom protocol matures, this contract can be upgraded to enable new capabilities * without needing to migrate the underlying Account Registry storage contract. * * In order to invite someone, a user must generate a new public key private key pair * and sign their own ethereum address. The user provides this signature to the * `createInvite` function where the public key is recovered and the invite is created. * The inviter should then share the one-time-use private key out of band with the recipient. * The recipient accepts the invite by signing their own address and passing that signature * to the `acceptInvite` function. The contract should recover the same public key, demonstrating * that the recipient knows the secret and is likely the person intended to receive the invite. * * @dev This invite model is supposed to aid usability by not requiring the inviting user to know * the Ethereum address of the recipient. If the one-time-use private key is leaked then anyone * else can accept the invite. This is an intentional tradeoff of this invite system. A well built * dApp should generate the private key on the backend and sign the user's address for them. Likewise, * the signing should also happen on the backend (not visible to the user) for signing an address to * accept an invite. This reduces the private key exposure so that the dApp can still require traditional * checks like verifying an associated email address before finally signing the user's Ethereum address. * * @dev The private key generated for this invite system should NEVER be used for an Ethereum address. * The private key should be used only for the invite flow and then it should effectively be discarded. * * @dev If a user DOES know the address of the person they are inviting then they can still use this * invite system. All they have to do then is sign the address of the user being invited and share the * signature with them. */ contract AccountRegistryLogic is Ownable{ SigningLogicInterface public signingLogic; AccountRegistryInterface public registry; address public registryAdmin; /** * @notice The AccountRegistry constructor configures the signing logic implementation * and creates an account for the user who deployed the contract. * @dev The owner is also set as the original registryAdmin, who has the privilege to * create accounts outside of the normal invitation flow. * @param _signingLogic The address of the deployed SigningLogic contract * @param _registry The address of the deployed account registry */ constructor( SigningLogicInterface _signingLogic, AccountRegistryInterface _registry ) public { signingLogic = _signingLogic; registry = _registry; registryAdmin = owner; } event AccountCreated(uint256 indexed accountId, address indexed newUser); event InviteCreated(address indexed inviter, address indexed inviteAddress); event InviteAccepted(address recipient, address indexed inviteAddress); event AddressAdded(uint256 indexed accountId, address indexed newAddress); event AddressRemoved(uint256 indexed accountId, address indexed oldAddress); event RegistryAdminChanged(address oldRegistryAdmin, address newRegistryAdmin); event SigningLogicChanged(address oldSigningLogic, address newSigningLogic); event AccountRegistryChanged(address oldRegistry, address newRegistry); /** * @dev Addresses with Bloom accounts already are not allowed */ modifier onlyNonUser { require(!registry.addressBelongsToAccount(msg.sender)); _; } /** * @dev Addresses without Bloom accounts already are not allowed */ modifier onlyUser { require(registry.addressBelongsToAccount(msg.sender)); _; } /** * @dev Zero address not allowed */ modifier nonZero(address _address) { require(_address != 0); _; } /** * @dev Restricted to registryAdmin */ modifier onlyRegistryAdmin { require(msg.sender == registryAdmin); _; } // Signatures contain a nonce to make them unique. usedSignatures tracks which signatures // have been used so they can't be replayed mapping (bytes32 => bool) public usedSignatures; // Mapping of public keys as Ethereum addresses to invite information // NOTE: the address keys here are NOT Ethereum addresses, we just happen // to work with the public keys in terms of Ethereum address strings because // this is what `ecrecover` produces when working with signed text. mapping(address => bool) public pendingInvites; /** * @notice Change the implementation of the SigningLogic contract by setting a new address * @dev Restricted to AccountRegistry owner and new implementation address cannot be 0x0 * @param _newSigningLogic Address of new SigningLogic implementation */ function setSigningLogic(SigningLogicInterface _newSigningLogic) public nonZero(_newSigningLogic) onlyOwner { address oldSigningLogic = signingLogic; signingLogic = _newSigningLogic; emit SigningLogicChanged(oldSigningLogic, signingLogic); } /** * @notice Change the address of the registryAdmin, who has the privilege to create new accounts * @dev Restricted to AccountRegistry owner and new admin address cannot be 0x0 * @param _newRegistryAdmin Address of new registryAdmin */ function setRegistryAdmin(address _newRegistryAdmin) public onlyOwner nonZero(_newRegistryAdmin) { address _oldRegistryAdmin = registryAdmin; registryAdmin = _newRegistryAdmin; emit RegistryAdminChanged(_oldRegistryAdmin, registryAdmin); } /** * @notice Change the address of AccountRegistry, which enables authorization of subject comments * @dev Restricted to owner and new address cannot be 0x0 * @param _newRegistry Address of new Account Registry contract */ function setAccountRegistry(AccountRegistryInterface _newRegistry) public nonZero(_newRegistry) onlyOwner { address oldRegistry = registry; registry = _newRegistry; emit AccountRegistryChanged(oldRegistry, registry); } /** * @notice Create an invite using the signing model described in the contract description * @dev Recovers public key of invitation key pair using * @param _sig Signature of one-time-use keypair generated for invite */ function createInvite(bytes _sig) public onlyUser { address inviteAddress = signingLogic.recoverSigner(keccak256(abi.encodePacked(msg.sender)), _sig); require(!pendingInvites[inviteAddress]); pendingInvites[inviteAddress] = true; emit InviteCreated(msg.sender, inviteAddress); } /** * @notice Accept an invite using the signing model described in the contract description * @dev Recovers public key of invitation key pair * Assumes signed message matches format described in recoverSigner * Restricted to addresses that are not already registered by a user * Invite is accepted by setting recipient to nonzero address for invite associated with recovered public key * and creating an account for the sender * @param _sig Signature for `msg.sender` via the same key that issued the initial invite */ function acceptInvite(bytes _sig) public onlyNonUser { address inviteAddress = signingLogic.recoverSigner(keccak256(abi.encodePacked(msg.sender)), _sig); require(pendingInvites[inviteAddress]); pendingInvites[inviteAddress] = false; createAccountForUser(msg.sender); emit InviteAccepted(msg.sender, inviteAddress); } /** * @notice Create an account instantly without an invitation * @dev Restricted to the "invite admin" which is managed by the Bloom team * @param _newUser Address of the user receiving an account */ function createAccount(address _newUser) public onlyRegistryAdmin { createAccountForUser(_newUser); } /** * @notice Create an account for a user and emit an event * @dev Records address as taken so it cannot be used to sign up for another account * accountId is a unique ID across all users generated by calculating the length of the accounts array * addressId is the position in the unordered list of addresses associated with a user account * AccountInfo is a struct containing accountId and addressId so all addresses can be found for a user * new Login structs represent user accounts. The first one is pushed onto the array associated with a user's accountID * To push a new account onto the same Id, accounts array should be addressed accounts[_accountID - 1].push * @param _newUser Address of the new user */ function createAccountForUser(address _newUser) internal nonZero(_newUser) { registry.createNewAccount(_newUser); uint256 _accountId = registry.accountIdForAddress(_newUser); emit AccountCreated(_accountId, _newUser); } /** * @notice Add an address to an existing id on behalf of a user to pay the gas costs * @param _newAddress Address to add to account * @param _newAddressSig Signed message from new address confirming ownership by the sender * @param _senderSig Signed message from address currently associated with account confirming intention * @param _sender User requesting this action * @param _nonce uuid used when generating sigs to make them one time use */ function addAddressToAccountFor( address _newAddress, bytes _newAddressSig, bytes _senderSig, address _sender, bytes32 _nonce ) public onlyRegistryAdmin { addAddressToAccountForUser(_newAddress, _newAddressSig, _senderSig, _sender, _nonce); } /** * @notice Add an address to an existing id by a user * @dev Wrapper for addAddressTooAccountForUser with msg.sender as sender * @param _newAddress Address to add to account * @param _newAddressSig Signed message from new address confirming ownership by the sender * @param _senderSig Signed message from msg.sender confirming intention by the sender * @param _nonce uuid used when generating sigs to make them one time use */ function addAddressToAccount( address _newAddress, bytes _newAddressSig, bytes _senderSig, bytes32 _nonce ) public onlyUser { addAddressToAccountForUser(_newAddress, _newAddressSig, _senderSig, msg.sender, _nonce); } /** * @notice Add an address to an existing id * @dev Checks that new address signed _sig * @param _newAddress Address to add to account * @param _newAddressSig Signed message from new address confirming ownership by the sender * @param _senderSig Signed message from new address confirming ownership by the sender * @param _sender User requesting this action * @param _nonce uuid used when generating sigs to make them one time use */ function addAddressToAccountForUser( address _newAddress, bytes _newAddressSig, bytes _senderSig, address _sender, bytes32 _nonce ) private nonZero(_newAddress) { require(!usedSignatures[keccak256(abi.encodePacked(_newAddressSig))], "Signature not unique"); require(!usedSignatures[keccak256(abi.encodePacked(_senderSig))], "Signature not unique"); usedSignatures[keccak256(abi.encodePacked(_newAddressSig))] = true; usedSignatures[keccak256(abi.encodePacked(_senderSig))] = true; // Confirm new address is signed by current address bytes32 _currentAddressDigest = signingLogic.generateAddAddressSchemaHash(_newAddress, _nonce); require(_sender == signingLogic.recoverSigner(_currentAddressDigest, _senderSig)); // Confirm current address is signed by new address bytes32 _newAddressDigest = signingLogic.generateAddAddressSchemaHash(_sender, _nonce); require(_newAddress == signingLogic.recoverSigner(_newAddressDigest, _newAddressSig)); registry.addAddressToAccount(_newAddress, _sender); uint256 _accountId = registry.accountIdForAddress(_newAddress); emit AddressAdded(_accountId, _newAddress); } /** * @notice Remove an address from an account for a user * @dev Restricted to admin * @param _addressToRemove Address to remove from account */ function removeAddressFromAccountFor( address _addressToRemove ) public onlyRegistryAdmin { uint256 _accountId = registry.accountIdForAddress(_addressToRemove); registry.removeAddressFromAccount(_addressToRemove); emit AddressRemoved(_accountId, _addressToRemove); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pendingInvites","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRegistryAdmin","type":"address"}],"name":"setRegistryAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"},{"name":"_newAddressSig","type":"bytes"},{"name":"_senderSig","type":"bytes"},{"name":"_sender","type":"address"},{"name":"_nonce","type":"bytes32"}],"name":"addAddressToAccountFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signingLogic","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sig","type":"bytes"}],"name":"createInvite","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newRegistry","type":"address"}],"name":"setAccountRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"},{"name":"_newAddressSig","type":"bytes"},{"name":"_senderSig","type":"bytes"},{"name":"_nonce","type":"bytes32"}],"name":"addAddressToAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"registryAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"registry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newSigningLogic","type":"address"}],"name":"setSigningLogic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newUser","type":"address"}],"name":"createAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addressToRemove","type":"address"}],"name":"removeAddressFromAccountFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sig","type":"bytes"}],"name":"acceptInvite","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"usedSignatures","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_signingLogic","type":"address"},{"name":"_registry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"accountId","type":"uint256"},{"indexed":true,"name":"newUser","type":"address"}],"name":"AccountCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"inviter","type":"address"},{"indexed":true,"name":"inviteAddress","type":"address"}],"name":"InviteCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":true,"name":"inviteAddress","type":"address"}],"name":"InviteAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"accountId","type":"uint256"},{"indexed":true,"name":"newAddress","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"accountId","type":"uint256"},{"indexed":true,"name":"oldAddress","type":"address"}],"name":"AddressRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldRegistryAdmin","type":"address"},{"indexed":false,"name":"newRegistryAdmin","type":"address"}],"name":"RegistryAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldSigningLogic","type":"address"},{"indexed":false,"name":"newSigningLogic","type":"address"}],"name":"SigningLogicChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldRegistry","type":"address"},{"indexed":false,"name":"newRegistry","type":"address"}],"name":"AccountRegistryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051604080612b408339810180604052810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506129ce806101726000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d0373ad146100eb57806339069d8c146101465780633dcbf7eb1461018957806344d0afbc1461028657806349c462d7146102dd5780636661a51e14610346578063726802a41461038957806374c16b23146104665780637b103999146104bd5780638da5cb5b14610514578063977d03511461056b5780639859387b146105ae578063dc628c04146105f1578063f2fde38b14610634578063f610e52a14610677578063f978fd61146106e0575b600080fd5b3480156100f757600080fd5b5061012c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610729565b604051808215151515815260200191505060405180910390f35b34801561015257600080fd5b50610187600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610749565b005b34801561019557600080fd5b50610284600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506108f1565b005b34801561029257600080fd5b5061029b610961565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e957600080fd5b50610344600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610987565b005b34801561035257600080fd5b50610387600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9a565b005b34801561039557600080fd5b50610464600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035600019169060200190929190505050610f42565b005b34801561047257600080fd5b5061047b611058565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c957600080fd5b506104d261107e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052057600080fd5b506105296110a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057757600080fd5b506105ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c9565b005b3480156105ba57600080fd5b506105ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611271565b005b3480156105fd57600080fd5b50610632600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d9565b005b34801561064057600080fd5b50610675600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061154e565b005b34801561068357600080fd5b506106de600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506116a3565b005b3480156106ec57600080fd5b5061070f6004803603810190808035600019169060200190929190505050611adf565b604051808215151515815260200191505060405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107a657600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff16141515156107cd57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4fba7fc38f674802f76db83afb3e5f87dee0e5234b1e7f832f19168b05e0048682600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561094d57600080fd5b61095a8585858585611aff565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663178daa54336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610a4657600080fd5b505af1158015610a5a573d6000803e3d6000fd5b505050506040513d6020811015610a7057600080fd5b81019080805190602001909291905050501515610a8c57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f933604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610b5a5780518252602082019150602081019050602083039250610b35565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c01578082015181840152602081019050610be6565b50505050905090810190601f168015610c2e5780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b81019080805190602001909291905050509050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ce457600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f264c2a13cbb614f5c05aa1bd9cbfd0a1466f73f27887866039a63ec56a190ddd60405160405180910390a35050565b60008160008173ffffffffffffffffffffffffffffffffffffffff1614151515610dc357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e1e57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f68913200cecf41727f9b83c3ef808abc9b8a07e16a8ccb2fbb9fd9bcc7183f8282600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663178daa54336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610fff57600080fd5b505af1158015611013573d6000803e3d6000fd5b505050506040513d602081101561102957600080fd5b8101908080519060200190929190505050151561104557600080fd5b6110528484843385611aff565b50505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008160008173ffffffffffffffffffffffffffffffffffffffff16141515156110f257600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114d57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9065f3654b16a9bdc012d8a568f9f881cbfc95ccce9c9ee0f648481bdca4f70582600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112cd57600080fd5b6112d681612761565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133757600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a5b70ad836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113f457600080fd5b505af1158015611408573d6000803e3d6000fd5b505050506040513d602081101561141e57600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a5a8662836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16817fc7120a00a251890416360c3add60c9843cb4a5ed80a7761c3b3be917c24f71e260405160405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115a957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115e557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663178daa54336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561176257600080fd5b505af1158015611776573d6000803e3d6000fd5b505050506040513d602081101561178c57600080fd5b81019080805190602001909291905050501515156117a957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f933604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156118775780518252602082019150602081019050602083039250611852565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561191e578082015181840152602081019050611903565b50505050905090810190601f16801561194b5780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561196b57600080fd5b505af115801561197f573d6000803e3d6000fd5b505050506040513d602081101561199557600080fd5b81019080805190602001909291905050509050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a0057600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a6133612761565b8073ffffffffffffffffffffffffffffffffffffffff167f7dfe7741b2816f4b390ea9c6a8fcef91c87d66b9235a24019b792806bc3ece0233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b60046020528060005260406000206000915054906101000a900460ff1681565b60008060008760008173ffffffffffffffffffffffffffffffffffffffff1614151515611b2b57600080fd5b60046000896040516020018082805190602001908083835b602083101515611b685780518252602082019150602081019050602083039250611b43565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611bd15780518252602082019150602081019050602083039250611bac565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611c97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206e6f7420756e6971756500000000000000000000000081525060200191505060405180910390fd5b60046000886040516020018082805190602001908083835b602083101515611cd45780518252602082019150602081019050602083039250611caf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611d3d5780518252602082019150602081019050602083039250611d18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206e6f7420756e6971756500000000000000000000000081525060200191505060405180910390fd5b6001600460008a6040516020018082805190602001908083835b602083101515611e425780518252602082019150602081019050602083039250611e1d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611eab5780518252602082019150602081019050602083039250611e86565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000896040516020018082805190602001908083835b602083101515611f445780518252602082019150602081019050602083039250611f1f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611fad5780518252602082019150602081019050602083039250611f88565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323f809f68a876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b1580156120d457600080fd5b505af11580156120e8573d6000803e3d6000fd5b505050506040513d60208110156120fe57600080fd5b81019080805190602001909291905050509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f985896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156121ca5780820151818401526020810190506121af565b50505050905090810190601f1680156121f75780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561221757600080fd5b505af115801561222b573d6000803e3d6000fd5b505050506040513d602081101561224157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151561228b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323f809f687876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561235857600080fd5b505af115801561236c573d6000803e3d6000fd5b505050506040513d602081101561238257600080fd5b81019080805190602001909291905050509250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f9848a6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561244e578082015181840152602081019050612433565b50505050905090810190601f16801561247b5780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561249b57600080fd5b505af11580156124af573d6000803e3d6000fd5b505050506040513d60208110156124c557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151561250f57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663275bf2308a886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561260057600080fd5b505af1158015612614573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a5b70ad8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126d557600080fd5b505af11580156126e9573d6000803e3d6000fd5b505050506040513d60208110156126ff57600080fd5b810190808051906020019092919050505091508873ffffffffffffffffffffffffffffffffffffffff16827fedec6416a94b784dc98025e70b146d8d8628117664f0da05822fc95132bc4f5860405160405180910390a3505050505050505050565b60008160008173ffffffffffffffffffffffffffffffffffffffff161415151561278a57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f96baf1846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561284757600080fd5b505af115801561285b573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a5b70ad846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561291c57600080fd5b505af1158015612930573d6000803e3d6000fd5b505050506040513d602081101561294657600080fd5b810190808051906020019092919050505091508273ffffffffffffffffffffffffffffffffffffffff16827f487f75407abee1a719a204e683a93f0583efee10816d2651b112f8be571f7d3260405160405180910390a35050505600a165627a7a723058200ac03ce77dfad31e6468e5e71f58e17e375cbcadacaf8562785dce2af504fa6b002900000000000000000000000000677ec3e34d9eb794f2eba943f43bf0639cce5d000000000000000000000000a08b00eb41a452540c44e953d9ee86f86793af55
Deployed Bytecode
0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d0373ad146100eb57806339069d8c146101465780633dcbf7eb1461018957806344d0afbc1461028657806349c462d7146102dd5780636661a51e14610346578063726802a41461038957806374c16b23146104665780637b103999146104bd5780638da5cb5b14610514578063977d03511461056b5780639859387b146105ae578063dc628c04146105f1578063f2fde38b14610634578063f610e52a14610677578063f978fd61146106e0575b600080fd5b3480156100f757600080fd5b5061012c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610729565b604051808215151515815260200191505060405180910390f35b34801561015257600080fd5b50610187600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610749565b005b34801561019557600080fd5b50610284600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506108f1565b005b34801561029257600080fd5b5061029b610961565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e957600080fd5b50610344600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610987565b005b34801561035257600080fd5b50610387600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9a565b005b34801561039557600080fd5b50610464600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035600019169060200190929190505050610f42565b005b34801561047257600080fd5b5061047b611058565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c957600080fd5b506104d261107e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052057600080fd5b506105296110a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057757600080fd5b506105ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c9565b005b3480156105ba57600080fd5b506105ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611271565b005b3480156105fd57600080fd5b50610632600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d9565b005b34801561064057600080fd5b50610675600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061154e565b005b34801561068357600080fd5b506106de600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506116a3565b005b3480156106ec57600080fd5b5061070f6004803603810190808035600019169060200190929190505050611adf565b604051808215151515815260200191505060405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107a657600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff16141515156107cd57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4fba7fc38f674802f76db83afb3e5f87dee0e5234b1e7f832f19168b05e0048682600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561094d57600080fd5b61095a8585858585611aff565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663178daa54336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610a4657600080fd5b505af1158015610a5a573d6000803e3d6000fd5b505050506040513d6020811015610a7057600080fd5b81019080805190602001909291905050501515610a8c57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f933604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610b5a5780518252602082019150602081019050602083039250610b35565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c01578082015181840152602081019050610be6565b50505050905090810190601f168015610c2e5780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b81019080805190602001909291905050509050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ce457600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f264c2a13cbb614f5c05aa1bd9cbfd0a1466f73f27887866039a63ec56a190ddd60405160405180910390a35050565b60008160008173ffffffffffffffffffffffffffffffffffffffff1614151515610dc357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e1e57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f68913200cecf41727f9b83c3ef808abc9b8a07e16a8ccb2fbb9fd9bcc7183f8282600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663178daa54336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610fff57600080fd5b505af1158015611013573d6000803e3d6000fd5b505050506040513d602081101561102957600080fd5b8101908080519060200190929190505050151561104557600080fd5b6110528484843385611aff565b50505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008160008173ffffffffffffffffffffffffffffffffffffffff16141515156110f257600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114d57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9065f3654b16a9bdc012d8a568f9f881cbfc95ccce9c9ee0f648481bdca4f70582600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112cd57600080fd5b6112d681612761565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133757600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a5b70ad836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113f457600080fd5b505af1158015611408573d6000803e3d6000fd5b505050506040513d602081101561141e57600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a5a8662836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16817fc7120a00a251890416360c3add60c9843cb4a5ed80a7761c3b3be917c24f71e260405160405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115a957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115e557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663178daa54336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561176257600080fd5b505af1158015611776573d6000803e3d6000fd5b505050506040513d602081101561178c57600080fd5b81019080805190602001909291905050501515156117a957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f933604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156118775780518252602082019150602081019050602083039250611852565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561191e578082015181840152602081019050611903565b50505050905090810190601f16801561194b5780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561196b57600080fd5b505af115801561197f573d6000803e3d6000fd5b505050506040513d602081101561199557600080fd5b81019080805190602001909291905050509050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a0057600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a6133612761565b8073ffffffffffffffffffffffffffffffffffffffff167f7dfe7741b2816f4b390ea9c6a8fcef91c87d66b9235a24019b792806bc3ece0233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b60046020528060005260406000206000915054906101000a900460ff1681565b60008060008760008173ffffffffffffffffffffffffffffffffffffffff1614151515611b2b57600080fd5b60046000896040516020018082805190602001908083835b602083101515611b685780518252602082019150602081019050602083039250611b43565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611bd15780518252602082019150602081019050602083039250611bac565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611c97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206e6f7420756e6971756500000000000000000000000081525060200191505060405180910390fd5b60046000886040516020018082805190602001908083835b602083101515611cd45780518252602082019150602081019050602083039250611caf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611d3d5780518252602082019150602081019050602083039250611d18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151515611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206e6f7420756e6971756500000000000000000000000081525060200191505060405180910390fd5b6001600460008a6040516020018082805190602001908083835b602083101515611e425780518252602082019150602081019050602083039250611e1d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611eab5780518252602082019150602081019050602083039250611e86565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000896040516020018082805190602001908083835b602083101515611f445780518252602082019150602081019050602083039250611f1f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611fad5780518252602082019150602081019050602083039250611f88565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323f809f68a876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b1580156120d457600080fd5b505af11580156120e8573d6000803e3d6000fd5b505050506040513d60208110156120fe57600080fd5b81019080805190602001909291905050509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f985896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156121ca5780820151818401526020810190506121af565b50505050905090810190601f1680156121f75780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561221757600080fd5b505af115801561222b573d6000803e3d6000fd5b505050506040513d602081101561224157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151561228b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323f809f687876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561235857600080fd5b505af115801561236c573d6000803e3d6000fd5b505050506040513d602081101561238257600080fd5b81019080805190602001909291905050509250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397aba7f9848a6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561244e578082015181840152602081019050612433565b50505050905090810190601f16801561247b5780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561249b57600080fd5b505af11580156124af573d6000803e3d6000fd5b505050506040513d60208110156124c557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151561250f57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663275bf2308a886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561260057600080fd5b505af1158015612614573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a5b70ad8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126d557600080fd5b505af11580156126e9573d6000803e3d6000fd5b505050506040513d60208110156126ff57600080fd5b810190808051906020019092919050505091508873ffffffffffffffffffffffffffffffffffffffff16827fedec6416a94b784dc98025e70b146d8d8628117664f0da05822fc95132bc4f5860405160405180910390a3505050505050505050565b60008160008173ffffffffffffffffffffffffffffffffffffffff161415151561278a57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f96baf1846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561284757600080fd5b505af115801561285b573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a5b70ad846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561291c57600080fd5b505af1158015612930573d6000803e3d6000fd5b505050506040513d602081101561294657600080fd5b810190808051906020019092919050505091508273ffffffffffffffffffffffffffffffffffffffff16827f487f75407abee1a719a204e683a93f0583efee10816d2651b112f8be571f7d3260405160405180910390a35050505600a165627a7a723058200ac03ce77dfad31e6468e5e71f58e17e375cbcadacaf8562785dce2af504fa6b0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000677ec3e34d9eb794f2eba943f43bf0639cce5d000000000000000000000000a08b00eb41a452540c44e953d9ee86f86793af55
-----Decoded View---------------
Arg [0] : _signingLogic (address): 0x00677Ec3E34d9eb794f2eBA943f43BF0639cCE5D
Arg [1] : _registry (address): 0xa08B00eB41a452540C44E953D9Ee86F86793Af55
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000677ec3e34d9eb794f2eba943f43bf0639cce5d
Arg [1] : 000000000000000000000000a08b00eb41a452540c44e953d9ee86f86793af55
Swarm Source
bzzr://0ac03ce77dfad31e6468e5e71f58e17e375cbcadacaf8562785dce2af504fa6b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.