Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 13 from a total of 13 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Transfer Pro... | 21497304 | 111 days ago | IN | 0 ETH | 0.00011398 | ||||
Set Transfer Pro... | 21497291 | 111 days ago | IN | 0 ETH | 0.00012218 | ||||
Set Transfer Pro... | 16163607 | 858 days ago | IN | 0 ETH | 0.0004128 | ||||
Set Voting Proxy | 15627958 | 933 days ago | IN | 0 ETH | 0.00027538 | ||||
Set Transfer Pro... | 12854111 | 1369 days ago | IN | 0 ETH | 0.00044938 | ||||
Set Keys | 9522264 | 1883 days ago | IN | 0 ETH | 0.00040321 | ||||
Set Spawn Proxy | 7230832 | 2251 days ago | IN | 0 ETH | 0.00019092 | ||||
Set Spawn Proxy | 7176452 | 2263 days ago | IN | 0 ETH | 0.00007159 | ||||
Set Spawn Proxy | 7176362 | 2263 days ago | IN | 0 ETH | 0.00007159 | ||||
Activate Point | 7176342 | 2263 days ago | IN | 0 ETH | 0.0000686 | ||||
Activate Point | 7176332 | 2263 days ago | IN | 0 ETH | 0.00004305 | ||||
Transfer | 7072470 | 2284 days ago | IN | 0.01 ETH | 0.00021046 | ||||
Transfer Ownersh... | 6784943 | 2333 days ago | IN | 0 ETH | 0.00012863 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 14161037 | 1165 days ago | 0.025 ETH |
Loading...
Loading
Contract Name:
Azimuth
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-01-04 */ // the azimuth data store // https://azimuth.network pragma solidity 0.4.24; //////////////////////////////////////////////////////////////////////////////// // Imports //////////////////////////////////////////////////////////////////////////////// // OpenZeppelin's Ownable.sol /** * @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 OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() 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 relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @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 { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } //////////////////////////////////////////////////////////////////////////////// // Azimuth //////////////////////////////////////////////////////////////////////////////// // Azimuth: point state data contract // // This contract is used for storing all data related to Azimuth points // and their ownership. Consider this contract the Azimuth ledger. // // It also contains permissions data, which ties in to ERC721 // functionality. Operators of an address are allowed to transfer // ownership of all points owned by their associated address // (ERC721's approveAll()). A transfer proxy is allowed to transfer // ownership of a single point (ERC721's approve()). // Separate from ERC721 are managers, assigned per point. They are // allowed to perform "low-impact" operations on the owner's points, // like configuring public keys and making escape requests. // // Since data stores are difficult to upgrade, this contract contains // as little actual business logic as possible. Instead, the data stored // herein can only be modified by this contract's owner, which can be // changed and is thus upgradable/replaceable. // // This contract will be owned by the Ecliptic contract. // contract Azimuth is Ownable { // // Events // // OwnerChanged: :point is now owned by :owner // event OwnerChanged(uint32 indexed point, address indexed owner); // Activated: :point is now active // event Activated(uint32 indexed point); // Spawned: :prefix has spawned :child // event Spawned(uint32 indexed prefix, uint32 indexed child); // EscapeRequested: :point has requested a new :sponsor // event EscapeRequested(uint32 indexed point, uint32 indexed sponsor); // EscapeCanceled: :point's :sponsor request was canceled or rejected // event EscapeCanceled(uint32 indexed point, uint32 indexed sponsor); // EscapeAccepted: :point confirmed with a new :sponsor // event EscapeAccepted(uint32 indexed point, uint32 indexed sponsor); // LostSponsor: :point's :sponsor is now refusing it service // event LostSponsor(uint32 indexed point, uint32 indexed sponsor); // ChangedKeys: :point has new network public keys // event ChangedKeys( uint32 indexed point, bytes32 encryptionKey, bytes32 authenticationKey, uint32 cryptoSuiteVersion, uint32 keyRevisionNumber ); // BrokeContinuity: :point has a new continuity number, :number // event BrokeContinuity(uint32 indexed point, uint32 number); // ChangedSpawnProxy: :spawnProxy can now spawn using :point // event ChangedSpawnProxy(uint32 indexed point, address indexed spawnProxy); // ChangedTransferProxy: :transferProxy can now transfer ownership of :point // event ChangedTransferProxy( uint32 indexed point, address indexed transferProxy ); // ChangedManagementProxy: :managementProxy can now manage :point // event ChangedManagementProxy( uint32 indexed point, address indexed managementProxy ); // ChangedVotingProxy: :votingProxy can now vote using :point // event ChangedVotingProxy(uint32 indexed point, address indexed votingProxy); // ChangedDns: dnsDomains have been updated // event ChangedDns(string primary, string secondary, string tertiary); // // Structures // // Size: kinds of points registered on-chain // // NOTE: the order matters, because of Solidity enum numbering // enum Size { Galaxy, // = 0 Star, // = 1 Planet // = 2 } // Point: state of a point // // While the ordering of the struct members is semantically chaotic, // they are ordered to tightly pack them into Ethereum's 32-byte storage // slots, which reduces gas costs for some function calls. // The comment ticks indicate assumed slot boundaries. // struct Point { // encryptionKey: (curve25519) encryption public key, or 0 for none // bytes32 encryptionKey; // // authenticationKey: (ed25519) authentication public key, or 0 for none // bytes32 authenticationKey; // // spawned: for stars and galaxies, all :active children // uint32[] spawned; // // hasSponsor: true if the sponsor still supports the point // bool hasSponsor; // active: whether point can be linked // // false: point belongs to prefix, cannot be configured or linked // true: point no longer belongs to prefix, can be configured and linked // bool active; // escapeRequested: true if the point has requested to change sponsors // bool escapeRequested; // sponsor: the point that supports this one on the network, or, // if :hasSponsor is false, the last point that supported it. // (by default, the point's half-width prefix) // uint32 sponsor; // escapeRequestedTo: if :escapeRequested is true, new sponsor requested // uint32 escapeRequestedTo; // cryptoSuiteVersion: version of the crypto suite used for the pubkeys // uint32 cryptoSuiteVersion; // keyRevisionNumber: incremented every time the public keys change // uint32 keyRevisionNumber; // continuityNumber: incremented to indicate network-side state loss // uint32 continuityNumber; } // Deed: permissions for a point // struct Deed { // owner: address that owns this point // address owner; // managementProxy: 0, or another address with the right to perform // low-impact, managerial operations on this point // address managementProxy; // spawnProxy: 0, or another address with the right to spawn children // of this point // address spawnProxy; // votingProxy: 0, or another address with the right to vote as this point // address votingProxy; // transferProxy: 0, or another address with the right to transfer // ownership of this point // address transferProxy; } // // General state // // points: per point, general network-relevant point state // mapping(uint32 => Point) public points; // rights: per point, on-chain ownership and permissions // mapping(uint32 => Deed) public rights; // operators: per owner, per address, has the right to transfer ownership // of all the owner's points (ERC721) // mapping(address => mapping(address => bool)) public operators; // dnsDomains: base domains for contacting galaxies // // dnsDomains[0] is primary, the others are used as fallbacks // string[3] public dnsDomains; // // Lookups // // sponsoring: per point, the points they are sponsoring // mapping(uint32 => uint32[]) public sponsoring; // sponsoringIndexes: per point, per point, (index + 1) in // the sponsoring array // mapping(uint32 => mapping(uint32 => uint256)) public sponsoringIndexes; // escapeRequests: per point, the points they have open escape requests from // mapping(uint32 => uint32[]) public escapeRequests; // escapeRequestsIndexes: per point, per point, (index + 1) in // the escapeRequests array // mapping(uint32 => mapping(uint32 => uint256)) public escapeRequestsIndexes; // pointsOwnedBy: per address, the points they own // mapping(address => uint32[]) public pointsOwnedBy; // pointOwnerIndexes: per owner, per point, (index + 1) in // the pointsOwnedBy array // // We delete owners by moving the last entry in the array to the // newly emptied slot, which is (n - 1) where n is the value of // pointOwnerIndexes[owner][point]. // mapping(address => mapping(uint32 => uint256)) public pointOwnerIndexes; // managerFor: per address, the points they are the management proxy for // mapping(address => uint32[]) public managerFor; // managerForIndexes: per address, per point, (index + 1) in // the managerFor array // mapping(address => mapping(uint32 => uint256)) public managerForIndexes; // spawningFor: per address, the points they can spawn with // mapping(address => uint32[]) public spawningFor; // spawningForIndexes: per address, per point, (index + 1) in // the spawningFor array // mapping(address => mapping(uint32 => uint256)) public spawningForIndexes; // votingFor: per address, the points they can vote with // mapping(address => uint32[]) public votingFor; // votingForIndexes: per address, per point, (index + 1) in // the votingFor array // mapping(address => mapping(uint32 => uint256)) public votingForIndexes; // transferringFor: per address, the points they can transfer // mapping(address => uint32[]) public transferringFor; // transferringForIndexes: per address, per point, (index + 1) in // the transferringFor array // mapping(address => mapping(uint32 => uint256)) public transferringForIndexes; // // Logic // // constructor(): configure default dns domains // constructor() public { setDnsDomains("example.com", "example.com", "example.com"); } // setDnsDomains(): set the base domains used for contacting galaxies // // Note: since a string is really just a byte[], and Solidity can't // work with two-dimensional arrays yet, we pass in the three // domains as individual strings. // function setDnsDomains(string _primary, string _secondary, string _tertiary) onlyOwner public { dnsDomains[0] = _primary; dnsDomains[1] = _secondary; dnsDomains[2] = _tertiary; emit ChangedDns(_primary, _secondary, _tertiary); } // // Point reading // // isActive(): return true if _point is active // function isActive(uint32 _point) view external returns (bool equals) { return points[_point].active; } // getKeys(): returns the public keys and their details, as currently // registered for _point // function getKeys(uint32 _point) view external returns (bytes32 crypt, bytes32 auth, uint32 suite, uint32 revision) { Point storage point = points[_point]; return (point.encryptionKey, point.authenticationKey, point.cryptoSuiteVersion, point.keyRevisionNumber); } // getKeyRevisionNumber(): gets the revision number of _point's current // public keys // function getKeyRevisionNumber(uint32 _point) view external returns (uint32 revision) { return points[_point].keyRevisionNumber; } // hasBeenLinked(): returns true if the point has ever been assigned keys // function hasBeenLinked(uint32 _point) view external returns (bool result) { return ( points[_point].keyRevisionNumber > 0 ); } // isLive(): returns true if _point currently has keys properly configured // function isLive(uint32 _point) view external returns (bool result) { Point storage point = points[_point]; return ( point.encryptionKey != 0 && point.authenticationKey != 0 && point.cryptoSuiteVersion != 0 ); } // getContinuityNumber(): returns _point's current continuity number // function getContinuityNumber(uint32 _point) view external returns (uint32 continuityNumber) { return points[_point].continuityNumber; } // getSpawnCount(): return the number of children spawned by _point // function getSpawnCount(uint32 _point) view external returns (uint32 spawnCount) { uint256 len = points[_point].spawned.length; assert(len < 2**32); return uint32(len); } // getSpawned(): return array of points created under _point // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getSpawned(uint32 _point) view external returns (uint32[] spawned) { return points[_point].spawned; } // hasSponsor(): returns true if _point's sponsor is providing it service // function hasSponsor(uint32 _point) view external returns (bool has) { return points[_point].hasSponsor; } // getSponsor(): returns _point's current (or most recent) sponsor // function getSponsor(uint32 _point) view external returns (uint32 sponsor) { return points[_point].sponsor; } // isSponsor(): returns true if _sponsor is currently providing service // to _point // function isSponsor(uint32 _point, uint32 _sponsor) view external returns (bool result) { Point storage point = points[_point]; return ( point.hasSponsor && (point.sponsor == _sponsor) ); } // getSponsoringCount(): returns the number of points _sponsor is // providing service to // function getSponsoringCount(uint32 _sponsor) view external returns (uint256 count) { return sponsoring[_sponsor].length; } // getSponsoring(): returns a list of points _sponsor is providing // service to // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getSponsoring(uint32 _sponsor) view external returns (uint32[] sponsees) { return sponsoring[_sponsor]; } // escaping // isEscaping(): returns true if _point has an outstanding escape request // function isEscaping(uint32 _point) view external returns (bool escaping) { return points[_point].escapeRequested; } // getEscapeRequest(): returns _point's current escape request // // the returned escape request is only valid as long as isEscaping() // returns true // function getEscapeRequest(uint32 _point) view external returns (uint32 escape) { return points[_point].escapeRequestedTo; } // isRequestingEscapeTo(): returns true if _point has an outstanding // escape request targetting _sponsor // function isRequestingEscapeTo(uint32 _point, uint32 _sponsor) view public returns (bool equals) { Point storage point = points[_point]; return (point.escapeRequested && (point.escapeRequestedTo == _sponsor)); } // getEscapeRequestsCount(): returns the number of points _sponsor // is providing service to // function getEscapeRequestsCount(uint32 _sponsor) view external returns (uint256 count) { return escapeRequests[_sponsor].length; } // getEscapeRequests(): get the points _sponsor has received escape // requests from // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getEscapeRequests(uint32 _sponsor) view external returns (uint32[] requests) { return escapeRequests[_sponsor]; } // // Point writing // // activatePoint(): activate a point, register it as spawned by its prefix // function activatePoint(uint32 _point) onlyOwner external { // make a point active, setting its sponsor to its prefix // Point storage point = points[_point]; require(!point.active); point.active = true; registerSponsor(_point, true, getPrefix(_point)); emit Activated(_point); } // setKeys(): set network public keys of _point to _encryptionKey and // _authenticationKey, with the specified _cryptoSuiteVersion // function setKeys(uint32 _point, bytes32 _encryptionKey, bytes32 _authenticationKey, uint32 _cryptoSuiteVersion) onlyOwner external { Point storage point = points[_point]; if ( point.encryptionKey == _encryptionKey && point.authenticationKey == _authenticationKey && point.cryptoSuiteVersion == _cryptoSuiteVersion ) { return; } point.encryptionKey = _encryptionKey; point.authenticationKey = _authenticationKey; point.cryptoSuiteVersion = _cryptoSuiteVersion; point.keyRevisionNumber++; emit ChangedKeys(_point, _encryptionKey, _authenticationKey, _cryptoSuiteVersion, point.keyRevisionNumber); } // incrementContinuityNumber(): break continuity for _point // function incrementContinuityNumber(uint32 _point) onlyOwner external { Point storage point = points[_point]; point.continuityNumber++; emit BrokeContinuity(_point, point.continuityNumber); } // registerSpawn(): add a point to its prefix's list of spawned points // function registerSpawned(uint32 _point) onlyOwner external { // if a point is its own prefix (a galaxy) then don't register it // uint32 prefix = getPrefix(_point); if (prefix == _point) { return; } // register a new spawned point for the prefix // points[prefix].spawned.push(_point); emit Spawned(prefix, _point); } // loseSponsor(): indicates that _point's sponsor is no longer providing // it service // function loseSponsor(uint32 _point) onlyOwner external { Point storage point = points[_point]; if (!point.hasSponsor) { return; } registerSponsor(_point, false, point.sponsor); emit LostSponsor(_point, point.sponsor); } // setEscapeRequest(): for _point, start an escape request to _sponsor // function setEscapeRequest(uint32 _point, uint32 _sponsor) onlyOwner external { if (isRequestingEscapeTo(_point, _sponsor)) { return; } registerEscapeRequest(_point, true, _sponsor); emit EscapeRequested(_point, _sponsor); } // cancelEscape(): for _point, stop the current escape request, if any // function cancelEscape(uint32 _point) onlyOwner external { Point storage point = points[_point]; if (!point.escapeRequested) { return; } uint32 request = point.escapeRequestedTo; registerEscapeRequest(_point, false, 0); emit EscapeCanceled(_point, request); } // doEscape(): perform the requested escape // function doEscape(uint32 _point) onlyOwner external { Point storage point = points[_point]; require(point.escapeRequested); registerSponsor(_point, true, point.escapeRequestedTo); registerEscapeRequest(_point, false, 0); emit EscapeAccepted(_point, point.sponsor); } // // Point utils // // getPrefix(): compute prefix ("parent") of _point // function getPrefix(uint32 _point) pure public returns (uint16 prefix) { if (_point < 0x10000) { return uint16(_point % 0x100); } return uint16(_point % 0x10000); } // getPointSize(): return the size of _point // function getPointSize(uint32 _point) external pure returns (Size _size) { if (_point < 0x100) return Size.Galaxy; if (_point < 0x10000) return Size.Star; return Size.Planet; } // internal use // registerSponsor(): set the sponsorship state of _point and update the // reverse lookup for sponsors // function registerSponsor(uint32 _point, bool _hasSponsor, uint32 _sponsor) internal { Point storage point = points[_point]; bool had = point.hasSponsor; uint32 prev = point.sponsor; // if we didn't have a sponsor, and won't get one, // or if we get the sponsor we already have, // nothing will change, so jump out early. // if ( (!had && !_hasSponsor) || (had && _hasSponsor && prev == _sponsor) ) { return; } // if the point used to have a different sponsor, do some gymnastics // to keep the reverse lookup gapless. delete the point from the old // sponsor's list, then fill that gap with the list tail. // if (had) { // i: current index in previous sponsor's list of sponsored points // uint256 i = sponsoringIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :sponsoringIndexes reference // uint32[] storage prevSponsoring = sponsoring[prev]; uint256 last = prevSponsoring.length - 1; uint32 moved = prevSponsoring[last]; prevSponsoring[i] = moved; sponsoringIndexes[prev][moved] = i + 1; // delete the last item // delete(prevSponsoring[last]); prevSponsoring.length = last; sponsoringIndexes[prev][_point] = 0; } if (_hasSponsor) { uint32[] storage newSponsoring = sponsoring[_sponsor]; newSponsoring.push(_point); sponsoringIndexes[_sponsor][_point] = newSponsoring.length; } point.sponsor = _sponsor; point.hasSponsor = _hasSponsor; } // registerEscapeRequest(): set the escape state of _point and update the // reverse lookup for sponsors // function registerEscapeRequest( uint32 _point, bool _isEscaping, uint32 _sponsor ) internal { Point storage point = points[_point]; bool was = point.escapeRequested; uint32 prev = point.escapeRequestedTo; // if we weren't escaping, and won't be, // or if we were escaping, and the new target is the same, // nothing will change, so jump out early. // if ( (!was && !_isEscaping) || (was && _isEscaping && prev == _sponsor) ) { return; } // if the point used to have a different request, do some gymnastics // to keep the reverse lookup gapless. delete the point from the old // sponsor's list, then fill that gap with the list tail. // if (was) { // i: current index in previous sponsor's list of sponsored points // uint256 i = escapeRequestsIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :escapeRequestsIndexes reference // uint32[] storage prevRequests = escapeRequests[prev]; uint256 last = prevRequests.length - 1; uint32 moved = prevRequests[last]; prevRequests[i] = moved; escapeRequestsIndexes[prev][moved] = i + 1; // delete the last item // delete(prevRequests[last]); prevRequests.length = last; escapeRequestsIndexes[prev][_point] = 0; } if (_isEscaping) { uint32[] storage newRequests = escapeRequests[_sponsor]; newRequests.push(_point); escapeRequestsIndexes[_sponsor][_point] = newRequests.length; } point.escapeRequestedTo = _sponsor; point.escapeRequested = _isEscaping; } // // Deed reading // // owner // getOwner(): return owner of _point // function getOwner(uint32 _point) view external returns (address owner) { return rights[_point].owner; } // isOwner(): true if _point is owned by _address // function isOwner(uint32 _point, address _address) view external returns (bool result) { return (rights[_point].owner == _address); } // getOwnedPointCount(): return length of array of points that _whose owns // function getOwnedPointCount(address _whose) view external returns (uint256 count) { return pointsOwnedBy[_whose].length; } // getOwnedPoints(): return array of points that _whose owns // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getOwnedPoints(address _whose) view external returns (uint32[] ownedPoints) { return pointsOwnedBy[_whose]; } // getOwnedPointAtIndex(): get point at _index from array of points that // _whose owns // function getOwnedPointAtIndex(address _whose, uint256 _index) view external returns (uint32 point) { uint32[] storage owned = pointsOwnedBy[_whose]; require(_index < owned.length); return owned[_index]; } // management proxy // getManagementProxy(): returns _point's current management proxy // function getManagementProxy(uint32 _point) view external returns (address manager) { return rights[_point].managementProxy; } // isManagementProxy(): returns true if _proxy is _point's management proxy // function isManagementProxy(uint32 _point, address _proxy) view external returns (bool result) { return (rights[_point].managementProxy == _proxy); } // canManage(): true if _who is the owner or manager of _point // function canManage(uint32 _point, address _who) view external returns (bool result) { Deed storage deed = rights[_point]; return ( (0x0 != _who) && ( (_who == deed.owner) || (_who == deed.managementProxy) ) ); } // getManagerForCount(): returns the amount of points _proxy can manage // function getManagerForCount(address _proxy) view external returns (uint256 count) { return managerFor[_proxy].length; } // getManagerFor(): returns the points _proxy can manage // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getManagerFor(address _proxy) view external returns (uint32[] mfor) { return managerFor[_proxy]; } // spawn proxy // getSpawnProxy(): returns _point's current spawn proxy // function getSpawnProxy(uint32 _point) view external returns (address spawnProxy) { return rights[_point].spawnProxy; } // isSpawnProxy(): returns true if _proxy is _point's spawn proxy // function isSpawnProxy(uint32 _point, address _proxy) view external returns (bool result) { return (rights[_point].spawnProxy == _proxy); } // canSpawnAs(): true if _who is the owner or spawn proxy of _point // function canSpawnAs(uint32 _point, address _who) view external returns (bool result) { Deed storage deed = rights[_point]; return ( (0x0 != _who) && ( (_who == deed.owner) || (_who == deed.spawnProxy) ) ); } // getSpawningForCount(): returns the amount of points _proxy // can spawn with // function getSpawningForCount(address _proxy) view external returns (uint256 count) { return spawningFor[_proxy].length; } // getSpawningFor(): get the points _proxy can spawn with // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getSpawningFor(address _proxy) view external returns (uint32[] sfor) { return spawningFor[_proxy]; } // voting proxy // getVotingProxy(): returns _point's current voting proxy // function getVotingProxy(uint32 _point) view external returns (address voter) { return rights[_point].votingProxy; } // isVotingProxy(): returns true if _proxy is _point's voting proxy // function isVotingProxy(uint32 _point, address _proxy) view external returns (bool result) { return (rights[_point].votingProxy == _proxy); } // canVoteAs(): true if _who is the owner of _point, // or the voting proxy of _point's owner // function canVoteAs(uint32 _point, address _who) view external returns (bool result) { Deed storage deed = rights[_point]; return ( (0x0 != _who) && ( (_who == deed.owner) || (_who == deed.votingProxy) ) ); } // getVotingForCount(): returns the amount of points _proxy can vote as // function getVotingForCount(address _proxy) view external returns (uint256 count) { return votingFor[_proxy].length; } // getVotingFor(): returns the points _proxy can vote as // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getVotingFor(address _proxy) view external returns (uint32[] vfor) { return votingFor[_proxy]; } // transfer proxy // getTransferProxy(): returns _point's current transfer proxy // function getTransferProxy(uint32 _point) view external returns (address transferProxy) { return rights[_point].transferProxy; } // isTransferProxy(): returns true if _proxy is _point's transfer proxy // function isTransferProxy(uint32 _point, address _proxy) view external returns (bool result) { return (rights[_point].transferProxy == _proxy); } // canTransfer(): true if _who is the owner or transfer proxy of _point, // or is an operator for _point's current owner // function canTransfer(uint32 _point, address _who) view external returns (bool result) { Deed storage deed = rights[_point]; return ( (0x0 != _who) && ( (_who == deed.owner) || (_who == deed.transferProxy) || operators[deed.owner][_who] ) ); } // getTransferringForCount(): returns the amount of points _proxy // can transfer // function getTransferringForCount(address _proxy) view external returns (uint256 count) { return transferringFor[_proxy].length; } // getTransferringFor(): get the points _proxy can transfer // // Note: only useful for clients, as Solidity does not currently // support returning dynamic arrays. // function getTransferringFor(address _proxy) view external returns (uint32[] tfor) { return transferringFor[_proxy]; } // isOperator(): returns true if _operator is allowed to transfer // ownership of _owner's points // function isOperator(address _owner, address _operator) view external returns (bool result) { return operators[_owner][_operator]; } // // Deed writing // // setOwner(): set owner of _point to _owner // // Note: setOwner() only implements the minimal data storage // logic for a transfer; the full transfer is implemented in // Ecliptic. // // Note: _owner must not be the zero address. // function setOwner(uint32 _point, address _owner) onlyOwner external { // prevent burning of points by making zero the owner // require(0x0 != _owner); // prev: previous owner, if any // address prev = rights[_point].owner; if (prev == _owner) { return; } // if the point used to have a different owner, do some gymnastics to // keep the list of owned points gapless. delete this point from the // list, then fill that gap with the list tail. // if (0x0 != prev) { // i: current index in previous owner's list of owned points // uint256 i = pointOwnerIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :pointOwnerIndexes reference // uint32[] storage owner = pointsOwnedBy[prev]; uint256 last = owner.length - 1; uint32 moved = owner[last]; owner[i] = moved; pointOwnerIndexes[prev][moved] = i + 1; // delete the last item // delete(owner[last]); owner.length = last; pointOwnerIndexes[prev][_point] = 0; } // update the owner list and the owner's index list // rights[_point].owner = _owner; pointsOwnedBy[_owner].push(_point); pointOwnerIndexes[_owner][_point] = pointsOwnedBy[_owner].length; emit OwnerChanged(_point, _owner); } // setManagementProxy(): makes _proxy _point's management proxy // function setManagementProxy(uint32 _point, address _proxy) onlyOwner external { Deed storage deed = rights[_point]; address prev = deed.managementProxy; if (prev == _proxy) { return; } // if the point used to have a different manager, do some gymnastics // to keep the reverse lookup gapless. delete the point from the // old manager's list, then fill that gap with the list tail. // if (0x0 != prev) { // i: current index in previous manager's list of managed points // uint256 i = managerForIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :managerForIndexes reference // uint32[] storage prevMfor = managerFor[prev]; uint256 last = prevMfor.length - 1; uint32 moved = prevMfor[last]; prevMfor[i] = moved; managerForIndexes[prev][moved] = i + 1; // delete the last item // delete(prevMfor[last]); prevMfor.length = last; managerForIndexes[prev][_point] = 0; } if (0x0 != _proxy) { uint32[] storage mfor = managerFor[_proxy]; mfor.push(_point); managerForIndexes[_proxy][_point] = mfor.length; } deed.managementProxy = _proxy; emit ChangedManagementProxy(_point, _proxy); } // setSpawnProxy(): makes _proxy _point's spawn proxy // function setSpawnProxy(uint32 _point, address _proxy) onlyOwner external { Deed storage deed = rights[_point]; address prev = deed.spawnProxy; if (prev == _proxy) { return; } // if the point used to have a different spawn proxy, do some // gymnastics to keep the reverse lookup gapless. delete the point // from the old proxy's list, then fill that gap with the list tail. // if (0x0 != prev) { // i: current index in previous proxy's list of spawning points // uint256 i = spawningForIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :spawningForIndexes reference // uint32[] storage prevSfor = spawningFor[prev]; uint256 last = prevSfor.length - 1; uint32 moved = prevSfor[last]; prevSfor[i] = moved; spawningForIndexes[prev][moved] = i + 1; // delete the last item // delete(prevSfor[last]); prevSfor.length = last; spawningForIndexes[prev][_point] = 0; } if (0x0 != _proxy) { uint32[] storage sfor = spawningFor[_proxy]; sfor.push(_point); spawningForIndexes[_proxy][_point] = sfor.length; } deed.spawnProxy = _proxy; emit ChangedSpawnProxy(_point, _proxy); } // setVotingProxy(): makes _proxy _point's voting proxy // function setVotingProxy(uint32 _point, address _proxy) onlyOwner external { Deed storage deed = rights[_point]; address prev = deed.votingProxy; if (prev == _proxy) { return; } // if the point used to have a different voter, do some gymnastics // to keep the reverse lookup gapless. delete the point from the // old voter's list, then fill that gap with the list tail. // if (0x0 != prev) { // i: current index in previous voter's list of points it was // voting for // uint256 i = votingForIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :votingForIndexes reference // uint32[] storage prevVfor = votingFor[prev]; uint256 last = prevVfor.length - 1; uint32 moved = prevVfor[last]; prevVfor[i] = moved; votingForIndexes[prev][moved] = i + 1; // delete the last item // delete(prevVfor[last]); prevVfor.length = last; votingForIndexes[prev][_point] = 0; } if (0x0 != _proxy) { uint32[] storage vfor = votingFor[_proxy]; vfor.push(_point); votingForIndexes[_proxy][_point] = vfor.length; } deed.votingProxy = _proxy; emit ChangedVotingProxy(_point, _proxy); } // setManagementProxy(): makes _proxy _point's transfer proxy // function setTransferProxy(uint32 _point, address _proxy) onlyOwner external { Deed storage deed = rights[_point]; address prev = deed.transferProxy; if (prev == _proxy) { return; } // if the point used to have a different transfer proxy, do some // gymnastics to keep the reverse lookup gapless. delete the point // from the old proxy's list, then fill that gap with the list tail. // if (0x0 != prev) { // i: current index in previous proxy's list of transferable points // uint256 i = transferringForIndexes[prev][_point]; // we store index + 1, because 0 is the solidity default value // assert(i > 0); i--; // copy the last item in the list into the now-unused slot, // making sure to update its :transferringForIndexes reference // uint32[] storage prevTfor = transferringFor[prev]; uint256 last = prevTfor.length - 1; uint32 moved = prevTfor[last]; prevTfor[i] = moved; transferringForIndexes[prev][moved] = i + 1; // delete the last item // delete(prevTfor[last]); prevTfor.length = last; transferringForIndexes[prev][_point] = 0; } if (0x0 != _proxy) { uint32[] storage tfor = transferringFor[_proxy]; tfor.push(_point); transferringForIndexes[_proxy][_point] = tfor.length; } deed.transferProxy = _proxy; emit ChangedTransferProxy(_point, _proxy); } // setOperator(): dis/allow _operator to transfer ownership of all points // owned by _owner // // operators are part of the ERC721 standard // function setOperator(address _owner, address _operator, bool _approved) onlyOwner external { operators[_owner][_operator] = _approved; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"","type":"uint32"},{"name":"","type":"uint32"}],"name":"escapeRequestsIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_whose","type":"address"}],"name":"getOwnedPoints","outputs":[{"name":"ownedPoints","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"votingFor","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"rights","outputs":[{"name":"owner","type":"address"},{"name":"managementProxy","type":"address"},{"name":"spawnProxy","type":"address"},{"name":"votingProxy","type":"address"},{"name":"transferProxy","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"transferringFor","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_sponsor","type":"uint32"}],"name":"isSponsor","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getManagementProxy","outputs":[{"name":"manager","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getContinuityNumber","outputs":[{"name":"continuityNumber","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"},{"name":"","type":"uint256"}],"name":"sponsoring","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_whose","type":"address"}],"name":"getOwnedPointCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"}],"name":"doEscape","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_whose","type":"address"},{"name":"_index","type":"uint256"}],"name":"getOwnedPointAtIndex","outputs":[{"name":"point","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getTransferProxy","outputs":[{"name":"transferProxy","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"isSpawnProxy","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"pointsOwnedBy","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"operators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getSpawnCount","outputs":[{"name":"spawnCount","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"setSpawnProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"setTransferProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"},{"name":"","type":"uint32"}],"name":"sponsoringIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"isTransferProxy","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getVotingProxy","outputs":[{"name":"voter","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"isManagementProxy","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint32"}],"name":"votingForIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"isLive","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sponsor","type":"uint32"}],"name":"getEscapeRequests","outputs":[{"name":"requests","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getSponsor","outputs":[{"name":"sponsor","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sponsor","type":"uint32"}],"name":"getEscapeRequestsCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint32"}],"name":"pointOwnerIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getManagerFor","outputs":[{"name":"mfor","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint32"}],"name":"managerForIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"managerFor","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"isActive","outputs":[{"name":"equals","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"points","outputs":[{"name":"encryptionKey","type":"bytes32"},{"name":"authenticationKey","type":"bytes32"},{"name":"hasSponsor","type":"bool"},{"name":"active","type":"bool"},{"name":"escapeRequested","type":"bool"},{"name":"sponsor","type":"uint32"},{"name":"escapeRequestedTo","type":"uint32"},{"name":"cryptoSuiteVersion","type":"uint32"},{"name":"keyRevisionNumber","type":"uint32"},{"name":"continuityNumber","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getSpawningForCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"hasBeenLinked","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_who","type":"address"}],"name":"canTransfer","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint32"}],"name":"spawningForIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"hasSponsor","outputs":[{"name":"has","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"}],"name":"activatePoint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getSpawned","outputs":[{"name":"spawned","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"setManagementProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_who","type":"address"}],"name":"canSpawnAs","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getKeyRevisionNumber","outputs":[{"name":"revision","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_who","type":"address"}],"name":"canManage","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getTransferringFor","outputs":[{"name":"tfor","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getPointSize","outputs":[{"name":"_size","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_sponsor","type":"uint32"}],"name":"getSponsoringCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getSpawningFor","outputs":[{"name":"sfor","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"isEscaping","outputs":[{"name":"escaping","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"},{"name":"","type":"uint256"}],"name":"escapeRequests","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"setVotingProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sponsor","type":"uint32"}],"name":"getSponsoring","outputs":[{"name":"sponsees","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_sponsor","type":"uint32"}],"name":"setEscapeRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isOperator","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_who","type":"address"}],"name":"canVoteAs","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_primary","type":"string"},{"name":"_secondary","type":"string"},{"name":"_tertiary","type":"string"}],"name":"setDnsDomains","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"}],"name":"loseSponsor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"},{"name":"_approved","type":"bool"}],"name":"setOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"}],"name":"registerSpawned","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getKeys","outputs":[{"name":"crypt","type":"bytes32"},{"name":"auth","type":"bytes32"},{"name":"suite","type":"uint32"},{"name":"revision","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"}],"name":"cancelEscape","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getManagerForCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint32"}],"name":"transferringForIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getVotingFor","outputs":[{"name":"vfor","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"spawningFor","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getTransferringForCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_proxy","type":"address"}],"name":"isVotingProxy","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getPrefix","outputs":[{"name":"prefix","type":"uint16"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"dnsDomains","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"}],"name":"incrementContinuityNumber","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getSpawnProxy","outputs":[{"name":"spawnProxy","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"}],"name":"getEscapeRequest","outputs":[{"name":"escape","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_point","type":"uint32"},{"name":"_encryptionKey","type":"bytes32"},{"name":"_authenticationKey","type":"bytes32"},{"name":"_cryptoSuiteVersion","type":"uint32"}],"name":"setKeys","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_proxy","type":"address"}],"name":"getVotingForCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_point","type":"uint32"},{"name":"_sponsor","type":"uint32"}],"name":"isRequestingEscapeTo","outputs":[{"name":"equals","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"}],"name":"Activated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"prefix","type":"uint32"},{"indexed":true,"name":"child","type":"uint32"}],"name":"Spawned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"sponsor","type":"uint32"}],"name":"EscapeRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"sponsor","type":"uint32"}],"name":"EscapeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"sponsor","type":"uint32"}],"name":"EscapeAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"sponsor","type":"uint32"}],"name":"LostSponsor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":false,"name":"encryptionKey","type":"bytes32"},{"indexed":false,"name":"authenticationKey","type":"bytes32"},{"indexed":false,"name":"cryptoSuiteVersion","type":"uint32"},{"indexed":false,"name":"keyRevisionNumber","type":"uint32"}],"name":"ChangedKeys","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":false,"name":"number","type":"uint32"}],"name":"BrokeContinuity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"spawnProxy","type":"address"}],"name":"ChangedSpawnProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"transferProxy","type":"address"}],"name":"ChangedTransferProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"managementProxy","type":"address"}],"name":"ChangedManagementProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"point","type":"uint32"},{"indexed":true,"name":"votingProxy","type":"address"}],"name":"ChangedVotingProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"primary","type":"string"},{"indexed":false,"name":"secondary","type":"string"},{"indexed":false,"name":"tertiary","type":"string"}],"name":"ChangedDns","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060008054600160a060020a03191633179055604080518082018252600b8082527f6578616d706c652e636f6d00000000000000000000000000000000000000000060208084018290528451808601865283815280820183905285518087019096529285528401526200008d9264010000000062000093810204565b62000307565b600054600160a060020a03163314620000ab57600080fd5b8251620000c090600490602086019062000262565b508151620000d690600590602085019062000262565b508051620000ec90600690602084019062000262565b507ffafd04ade1daae2e1fdb0fc1cc6a899fd424063ed5c92120e67e073053b9489883838360405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015620001585781810151838201526020016200013e565b50505050905090810190601f168015620001865780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015620001bb578181015183820152602001620001a1565b50505050905090810190601f168015620001e95780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156200021e57818101518382015260200162000204565b50505050905090810190601f1680156200024c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a557805160ff1916838001178555620002d5565b82800160010185558215620002d5579182015b82811115620002d5578251825591602001919060010190620002b8565b50620002e3929150620002e7565b5090565b6200030491905b80821115620002e35760008155600101620002ee565b90565b613e0180620003176000396000f3006080604052600436106103bb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301d8a97f81146103c05780630333d499146103f657806304bbb61d1461046757806304bc94e5146104a4578063073167da146104fe57806308083039146105225780630f934e661461055a578063108d995b1461059457806312ace2e6146105b257806312afbc78146105d357806313063180146105f457806322a7906f1461061457806324541f781461063857806324ba1a461461065657806324cf61b5146106805780632637588e146106a4578063293a9169146106cb5780632a19642c146106e95780632c7ba564146107135780632cce0e291461073d5780633262207c1461076157806333f337241461078b578063375e24c1146107a957806337de45c1146107d35780633b17b4ea146107fd5780633c01a9fa1461081b578063439f7d3c146108395780634448f5fb14610857578063474dbae714610875578063483a15ed1461089f57806352c0683b146108c05780635a83df54146108ea5780635e19b3051461090e578063621b23e21461092c57806363fa9a871461094a5780636436b1b9146109c65780636d09887b146109e7578063715018a614610a05578063728aa85714610a1a57806376944d5b14610a4457806377eb4c5014610a6e5780637bc702a114610a8c578063846f652b14610aaa5780638866bb2c14610ac85780638a27bf5914610af25780638d2d3f4114610b1c5780638da5cb5b14610b3a5780639137fe0a14610b4f57806391398f2514610b795780639397640514610b9a578063942324c314610bdc5780639b0d1b2c14610bfa5780639b350e1214610c1b5780639dd9019014610c39578063a297c1d814610c5a578063a46afef114610c84578063a634585914610ca2578063b6363cf214610cc6578063b65afedd14610ced578063bac55edd14610d17578063bc562b9e14610dec578063bc735d9014610e0a578063c17ad9d814610e36578063c210c62314610e54578063c6d761d414610e9e578063caf590f914610ebc578063d154126414610ee6578063d2588e2014610f07578063d2a9b6ed14610f31578063d5c5164f14610f52578063ddc3595014610f76578063e01cff8414610fa0578063e213c84014610fc1578063e4a358d714610feb578063eccc8ff114611020578063f2fde38b146110ad578063f4914919146110ce578063f4e3be2d146110ec578063f5af66211461110a578063f9b87d4014611128578063fdb357be14611154578063fde9073314611175575b600080fd5b3480156103cc57600080fd5b506103e463ffffffff60043581169060243516611199565b60408051918252519081900360200190f35b34801561040257600080fd5b50610417600160a060020a03600435166111b6565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561045357818101518382015260200161043b565b505050509050019250505060405180910390f35b34801561047357600080fd5b5061048b600160a060020a036004351660243561124f565b6040805163ffffffff9092168252519081900360200190f35b3480156104b057600080fd5b506104c263ffffffff60043516611297565b60408051600160a060020a0396871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190f35b34801561050a57600080fd5b5061048b600160a060020a03600435166024356112d9565b34801561052e57600080fd5b5061054663ffffffff600435811690602435166112f4565b604080519115158252519081900360200190f35b34801561056657600080fd5b5061057863ffffffff60043516611338565b60408051600160a060020a039092168252519081900360200190f35b3480156105a057600080fd5b5061048b63ffffffff6004351661135c565b3480156105be57600080fd5b5061048b63ffffffff60043516602435611391565b3480156105df57600080fd5b506103e4600160a060020a03600435166113ac565b34801561060057600080fd5b5061061263ffffffff600435166113c7565b005b34801561062057600080fd5b5061048b600160a060020a036004351660243561147f565b34801561064457600080fd5b5061057863ffffffff600435166114e1565b34801561066257600080fd5b5061054663ffffffff60043516600160a060020a0360243516611505565b34801561068c57600080fd5b5061048b600160a060020a0360043516602435611532565b3480156106b057600080fd5b50610546600160a060020a036004358116906024351661154d565b3480156106d757600080fd5b5061048b63ffffffff6004351661156d565b3480156106f557600080fd5b5061061263ffffffff60043516600160a060020a036024351661159a565b34801561071f57600080fd5b5061061263ffffffff60043516600160a060020a036024351661189c565b34801561074957600080fd5b506103e463ffffffff60043581169060243516611b9b565b34801561076d57600080fd5b5061054663ffffffff60043516600160a060020a0360243516611bb8565b34801561079757600080fd5b5061057863ffffffff60043516611be4565b3480156107b557600080fd5b5061054663ffffffff60043516600160a060020a0360243516611c08565b3480156107df57600080fd5b506103e4600160a060020a036004351663ffffffff60243516611c34565b34801561080957600080fd5b5061054663ffffffff60043516611c51565b34801561082757600080fd5b5061041763ffffffff60043516611ca4565b34801561084557600080fd5b5061048b63ffffffff60043516611d11565b34801561086357600080fd5b506103e463ffffffff60043516611d36565b34801561088157600080fd5b506103e4600160a060020a036004351663ffffffff60243516611d4e565b3480156108ab57600080fd5b50610417600160a060020a0360043516611d6b565b3480156108cc57600080fd5b506103e4600160a060020a036004351663ffffffff60243516611ddb565b3480156108f657600080fd5b5061048b600160a060020a0360043516602435611df8565b34801561091a57600080fd5b5061054663ffffffff60043516611e13565b34801561093857600080fd5b5061057863ffffffff60043516611e36565b34801561095657600080fd5b5061096863ffffffff60043516611e57565b604080519a8b5260208b0199909952961515898901529415156060890152921515608088015263ffffffff91821660a0880152811660c087015290811660e08601529081166101008501521661012083015251908190036101400190f35b3480156109d257600080fd5b506103e4600160a060020a0360043516611eeb565b3480156109f357600080fd5b5061054663ffffffff60043516611f06565b348015610a1157600080fd5b50610612611f3a565b348015610a2657600080fd5b5061054663ffffffff60043516600160a060020a0360243516611f99565b348015610a5057600080fd5b506103e4600160a060020a036004351663ffffffff60243516612025565b348015610a7a57600080fd5b5061054663ffffffff60043516612042565b348015610a9857600080fd5b5061061263ffffffff60043516612060565b348015610ab657600080fd5b5061041763ffffffff60043516612103565b348015610ad457600080fd5b5061061263ffffffff60043516600160a060020a0360243516612173565b348015610afe57600080fd5b5061054663ffffffff60043516600160a060020a0360243516612472565b348015610b2857600080fd5b5061048b63ffffffff600435166124cb565b348015610b4657600080fd5b506105786124fc565b348015610b5b57600080fd5b5061054663ffffffff60043516600160a060020a036024351661250b565b348015610b8557600080fd5b50610417600160a060020a0360043516612564565b348015610ba657600080fd5b50610bb863ffffffff600435166125d4565b60405180826002811115610bc857fe5b60ff16815260200191505060405180910390f35b348015610be857600080fd5b506103e463ffffffff6004351661260f565b348015610c0657600080fd5b50610417600160a060020a0360043516612627565b348015610c2757600080fd5b5061054663ffffffff60043516612697565b348015610c4557600080fd5b5061048b63ffffffff600435166024356126bb565b348015610c6657600080fd5b5061061263ffffffff60043516600160a060020a03602435166126d6565b348015610c9057600080fd5b5061041763ffffffff600435166129d5565b348015610cae57600080fd5b5061061263ffffffff60043581169060243516612a42565b348015610cd257600080fd5b50610546600160a060020a0360043581169060243516612ab8565b348015610cf957600080fd5b5061054663ffffffff60043516600160a060020a0360243516612ae6565b348015610d2357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261061294369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750612b3f9650505050505050565b348015610df857600080fd5b5061061263ffffffff60043516612cfe565b348015610e1657600080fd5b50610612600160a060020a03600435811690602435166044351515612da4565b348015610e4257600080fd5b5061061263ffffffff60043516612df5565b348015610e6057600080fd5b50610e7263ffffffff60043516612ea8565b60408051948552602085019390935263ffffffff91821684840152166060830152519081900360800190f35b348015610eaa57600080fd5b5061061263ffffffff60043516612efa565b348015610ec857600080fd5b5061054663ffffffff60043516600160a060020a0360243516612fa8565b348015610ef257600080fd5b506103e4600160a060020a0360043516612fd1565b348015610f1357600080fd5b506103e4600160a060020a036004351663ffffffff60243516612fec565b348015610f3d57600080fd5b50610417600160a060020a0360043516613009565b348015610f5e57600080fd5b5061048b600160a060020a0360043516602435613079565b348015610f8257600080fd5b5061061263ffffffff60043516600160a060020a0360243516613094565b348015610fac57600080fd5b506103e4600160a060020a0360043516613328565b348015610fcd57600080fd5b5061054663ffffffff60043516600160a060020a0360243516613343565b348015610ff757600080fd5b5061100963ffffffff6004351661336f565b6040805161ffff9092168252519081900360200190f35b34801561102c57600080fd5b50611038600435613394565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561107257818101518382015260200161105a565b50505050905090810190601f16801561109f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156110b957600080fd5b50610612600160a060020a036004351661342f565b3480156110da57600080fd5b5061061263ffffffff60043516613452565b3480156110f857600080fd5b5061057863ffffffff60043516613508565b34801561111657600080fd5b5061048b63ffffffff6004351661352d565b34801561113457600080fd5b5061061263ffffffff600435811690602435906044359060643516613556565b34801561116057600080fd5b506103e4600160a060020a036004351661369b565b34801561118157600080fd5b5061054663ffffffff600435811690602435166136b6565b600a60209081526000928352604080842090915290825290205481565b600160a060020a0381166000908152600b602090815260409182902080548351818402810184019094528084526060939283018282801561124257602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116112055790505b505050505090505b919050565b60116020528160005260406000208181548110151561126a57fe5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b600260208190526000918252604090912080546001820154928201546003830154600490930154600160a060020a039283169483169391831692918216911685565b60136020528160005260406000208181548110151561126a57fe5b63ffffffff82166000908152600160205260408120600381015460ff1680156113305750600381015463ffffffff848116630100000090920416145b949350505050565b63ffffffff16600090815260026020526040902060010154600160a060020a031690565b63ffffffff90811660009081526001602052604090206003015473010000000000000000000000000000000000000090041690565b60076020528160005260406000208181548110151561126a57fe5b600160a060020a03166000908152600b602052604090205490565b60008054600160a060020a031633146113df57600080fd5b5063ffffffff81166000908152600160205260409020600381015462010000900460ff16151561140e57600080fd5b61142e8260018360030160079054906101000a900463ffffffff16613705565b61143a826000806139bf565b600381015460405163ffffffff63010000009092048216918416907f7e447c9b1bda4b174b0796e100bf7f34ebf36dbb7fe665490b1bfce6246a9da590600090a35050565b600160a060020a0382166000908152600b60205260408120805483106114a457600080fd5b80838154811015156114b257fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691505092915050565b63ffffffff16600090815260026020526040902060040154600160a060020a031690565b63ffffffff9190911660009081526002602081905260409091200154600160a060020a0391821691161490565b600b6020528160005260406000208181548110151561126a57fe5b600360209081526000928352604080842090915290825290205460ff1681565b63ffffffff8116600090815260016020526040812060020154640100000000811061159457fe5b92915050565b60008054819081908190819081908190600160a060020a031633146115be57600080fd5b63ffffffff8916600090815260026020819052604090912090810154909750600160a060020a03908116965088168614156115f857611891565b600160a060020a0386161561176d57600160a060020a038616600090815260106020908152604080832063ffffffff8d1684529091528120549550851161163b57fe5b600160a060020a0386166000908152600f60205260409020805460001996870196919550908101935084908490811061167057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691508184868154811015156116a757fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a03891682526010835260408083209186168352925220600186019055835484908490811061170c57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558284816117419190613d06565b50600160a060020a038616600090815260106020908152604080832063ffffffff8d1684529091528120555b600160a060020a0388161561183f57600f600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050601060008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600287018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907f902736af7b3cefe10d9e840aed0d687e35c84095122b25051a20ead8866f006d90600090a35b505050505050505050565b60008054819081908190819081908190600160a060020a031633146118c057600080fd5b63ffffffff891660009081526002602052604090206004810154909750600160a060020a03908116965088168614156118f857611891565b600160a060020a03861615611a6d57600160a060020a038616600090815260146020908152604080832063ffffffff8d1684529091528120549550851161193b57fe5b600160a060020a0386166000908152601360205260409020805460001996870196919550908101935084908490811061197057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691508184868154811015156119a757fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a038916825260148352604080832091861683529252206001860190558354849084908110611a0c57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055828481611a419190613d06565b50600160a060020a038616600090815260146020908152604080832063ffffffff8d1684529091528120555b600160a060020a03881615611b3f576013600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050601460008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600487018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907fcfe369b7197e7f0cf06793ae2472a9b13583fecbed2f78dfa14d1f10796b847c90600090a3505050505050505050565b600860209081526000928352604080842090915290825290205481565b63ffffffff91909116600090815260026020526040902060040154600160a060020a0391821691161490565b63ffffffff16600090815260026020526040902060030154600160a060020a031690565b63ffffffff91909116600090815260026020526040902060010154600160a060020a0391821691161490565b601260209081526000928352604080842090915290825290205481565b63ffffffff81166000908152600160205260408120805415801590611c795750600181015415155b8015611c9d575060038101546b010000000000000000000000900463ffffffff1615155b9392505050565b63ffffffff8116600090815260096020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b63ffffffff908116600090815260016020526040902060030154630100000090041690565b63ffffffff1660009081526009602052604090205490565b600c60209081526000928352604080842090915290825290205481565b600160a060020a0381166000908152600d6020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b600e60209081526000928352604080842090915290825290205481565b600d6020528160005260406000208181548110151561126a57fe5b63ffffffff16600090815260016020526040902060030154610100900460ff1690565b63ffffffff16600090815260026020526040902054600160a060020a031690565b600160208190526000918252604090912080549181015460039091015460ff808216916101008104821691620100008204169063ffffffff6301000000820481169167010000000000000081048216916b01000000000000000000000082048116916f010000000000000000000000000000008104821691730100000000000000000000000000000000000000909104168a565b600160a060020a03166000908152600f602052604090205490565b63ffffffff9081166000908152600160205260408120600301546f0100000000000000000000000000000090049091161190565b600054600160a060020a03163314611f5157600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a260008054600160a060020a0319169055565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611feb57506004810154600160a060020a038481169116145b8061133057508054600160a060020a0390811660009081526003602090815260408083209387168352929052205460ff1691505092915050565b601060209081526000928352604080842090915290825290205481565b63ffffffff1660009081526001602052604090206003015460ff1690565b60008054600160a060020a0316331461207857600080fd5b5063ffffffff811660009081526001602052604090206003810154610100900460ff16156120a557600080fd5b60038101805461ff0019166101001790556120ce8260016120c58261336f565b61ffff16613705565b60405163ffffffff8316907fe74c03809d0769e1b1f706cc8414258cd1f3b6fe020cd15d0165c210ba503a0f90600090a25050565b63ffffffff8116600090815260016020908152604091829020600201805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b60008054819081908190819081908190600160a060020a0316331461219757600080fd5b63ffffffff891660009081526002602052604090206001810154909750600160a060020a03908116965088168614156121cf57611891565b600160a060020a0386161561234457600160a060020a0386166000908152600e6020908152604080832063ffffffff8d1684529091528120549550851161221257fe5b600160a060020a0386166000908152600d60205260409020805460001996870196919550908101935084908490811061224757fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16915081848681548110151561227e57fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a0389168252600e83526040808320918616835292522060018601905583548490849081106122e357fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558284816123189190613d06565b50600160a060020a0386166000908152600e6020908152604080832063ffffffff8d1684529091528120555b600160a060020a0388161561241657600d600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050600e60008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600187018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907fab9c9327cffd2acc168fafedbe06139f5f55cb84c761df05e0511c251e2ee9bf90600090a3505050505050505050565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611330575060020154600160a060020a0390811692169190911492915050565b63ffffffff9081166000908152600160205260409020600301546f0100000000000000000000000000000090041690565b600054600160a060020a031681565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611330575060010154600160a060020a0390811692169190911492915050565b600160a060020a038116600090815260136020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b60006101008263ffffffff1610156125ee5750600061124a565b620100008263ffffffff1610156126075750600161124a565b506002919050565b63ffffffff1660009081526007602052604090205490565b600160a060020a0381166000908152600f6020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b63ffffffff1660009081526001602052604090206003015462010000900460ff1690565b60096020528160005260406000208181548110151561126a57fe5b60008054819081908190819081908190600160a060020a031633146126fa57600080fd5b63ffffffff891660009081526002602052604090206003810154909750600160a060020a039081169650881686141561273257611891565b600160a060020a038616156128a757600160a060020a038616600090815260126020908152604080832063ffffffff8d1684529091528120549550851161277557fe5b600160a060020a038616600090815260116020526040902080546000199687019691955090810193508490849081106127aa57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691508184868154811015156127e157fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a03891682526012835260408083209186168352925220600186019055835484908490811061284657fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905582848161287b9190613d06565b50600160a060020a038616600090815260126020908152604080832063ffffffff8d1684529091528120555b600160a060020a03881615612979576011600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050601260008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600387018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907fcbd6269ec71457f2c7b1a22774f246f6c5a2eae3795ed7300db517680c61c80590600090a3505050505050505050565b63ffffffff8116600090815260076020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b600054600160a060020a03163314612a5957600080fd5b612a6382826136b6565b15612a6d57612ab4565b612a79826001836139bf565b8063ffffffff168263ffffffff167fb4d4850b8f218218141c5665cba379e53e9bb015b51e8d934be70210aead874a60405160405180910390a35b5050565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205460ff1690565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611330575060030154600160a060020a0390811692169190911492915050565b600054600160a060020a03163314612b5657600080fd5b8251612b69906004906020860190613d3a565b508151612b7d906005906020850190613d3a565b508051612b91906006906020840190613d3a565b507ffafd04ade1daae2e1fdb0fc1cc6a899fd424063ed5c92120e67e073053b9489883838360405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015612bfb578181015183820152602001612be3565b50505050905090810190601f168015612c285780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015612c5b578181015183820152602001612c43565b50505050905090810190601f168015612c885780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015612cbb578181015183820152602001612ca3565b50505050905090810190601f168015612ce85780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b60008054600160a060020a03163314612d1657600080fd5b5063ffffffff81166000908152600160205260409020600381015460ff161515612d3f57612ab4565b612d5f8260008360030160039054906101000a900463ffffffff16613705565b600381015460405163ffffffff63010000009092048216918416907fd7704f9a25193dbd0b0cb4a809feffffa7f19d1aae8817a71346c194448210d590600090a35050565b600054600160a060020a03163314612dbb57600080fd5b600160a060020a03928316600090815260036020908152604080832094909516825292909252919020805460ff1916911515919091179055565b60008054600160a060020a03163314612e0d57600080fd5b612e168261336f565b61ffff16905063ffffffff8216811415612e2f57612ab4565b63ffffffff80821660008181526001602081815260408084206002018054938401815584529083206008830401805488871660046007909516949094026101000a848102970219169590951790945592517fb2d3a6e7a339f5c8ff96265e2f03a010a8541070f3744a2470909644150815469190a35050565b63ffffffff9081166000908152600160208190526040909120805491810154600390910154919390926b01000000000000000000000083048116926f0100000000000000000000000000000090041690565b600080548190600160a060020a03163314612f1457600080fd5b63ffffffff83166000908152600160205260409020600381015490925062010000900460ff161515612f4557612fa3565b506003810154670100000000000000900463ffffffff16612f68836000806139bf565b8063ffffffff168363ffffffff167fd653bb0e0bb7ce8393e624d98fbf17cda5902c8328ed0cd09988f36890d9932a60405160405180910390a35b505050565b63ffffffff91909116600090815260026020526040902054600160a060020a0391821691161490565b600160a060020a03166000908152600d602052604090205490565b601460209081526000928352604080842090915290825290205481565b600160a060020a038116600090815260116020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b600f6020528160005260406000208181548110151561126a57fe5b600080548190819081908190600160a060020a031633146130b457600080fd5b600160a060020a03861615156130c957600080fd5b63ffffffff8716600090815260026020526040902054600160a060020a03908116955086168514156130fa5761331f565b600160a060020a0385161561326f57600160a060020a0385166000908152600c6020908152604080832063ffffffff8b1684529091528120549450841161313d57fe5b600160a060020a0385166000908152600b60205260409020805460001995860195919450908101925083908390811061317257fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690508083858154811015156131a957fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a0388168252600c835260408083209185168352925220600185019055825483908390811061320e57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558183816132439190613d06565b50600160a060020a0385166000908152600c6020908152604080832063ffffffff8b1684529091528120555b63ffffffff87811660008181526002602090815260408083208054600160a060020a031916600160a060020a038d16908117909155808452600b835281842080546001810182558186528486206008820401805460079092166004026101000a98890219909116978702979097179096558084529454600c835281842085855290925280832091909155517f16d0f539d49c6cad822b767a9445bfb1cf7ea6f2a6c2b120a7ea4cc7660d8fda9190a35b50505050505050565b600160a060020a031660009081526013602052604090205490565b63ffffffff91909116600090815260026020526040902060030154600160a060020a0391821691161490565b6000620100008263ffffffff16101561338c575060ff811661124a565b5061ffff1690565b600481600381106133a157fe5b018054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815293508301828280156134275780601f106133fc57610100808354040283529160200191613427565b820191906000526020600020905b81548152906001019060200180831161340a57829003601f168201915b505050505081565b600054600160a060020a0316331461344657600080fd5b61344f81613c96565b50565b60008054600160a060020a0316331461346a57600080fd5b5063ffffffff80821660008181526001602081815260409283902060038101805473010000000000000000000000000000000000000080820489169095018816850276ffffffff000000000000000000000000000000000000001990911617908190558451939004909516825291517f29294799f1c21a37ef838e15f79dd91bcee2df99d63cd1c18ac968b129514e6e929181900390910190a25050565b63ffffffff1660009081526002602081905260409091200154600160a060020a031690565b63ffffffff90811660009081526001602052604090206003015467010000000000000090041690565b60008054600160a060020a0316331461356e57600080fd5b5063ffffffff841660009081526001602052604090208054841480156135975750600181015483145b80156135be5750600381015463ffffffff8381166b01000000000000000000000090920416145b156135c857613694565b83815560018082018490556003820180546f0100000000000000000000000000000063ffffffff8087166b01000000000000000000000081026effffffff0000000000000000000000199094169390931782810482169095018116820272ffffffff0000000000000000000000000000001990951694909417928390556040805189815260208101899052808201939093529204831660608201529051918716917faa10e7a0117d4323f1d99d630ec169bebb3a988e895770e351987e01ff5423d59181900360800190a25b5050505050565b600160a060020a031660009081526011602052604090205490565b63ffffffff82166000908152600160205260408120600381015462010000900460ff16801561133057506003810154670100000000000000900463ffffffff9081169084161491505092915050565b63ffffffff80841660009081526001602052604081206003810154909260ff821692630100000090920416908080808086158015613741575089155b8061376857508680156137515750895b801561376857508863ffffffff168663ffffffff16145b15613772576139b2565b86156138cc5763ffffffff8087166000908152600860209081526040808320938f16835292905290812054955085116137a757fe5b63ffffffff8616600090815260076020526040902080546000199687019691955090810193508490849081106137d957fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16915081848681548110151561381057fe5b600091825260208083206008808404909101805460079094166004026101000a63ffffffff818102199095169685160295909517909455898216835292835260408083209186168352925220600186019055835484908490811061387057fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558284816138a59190613d06565b5063ffffffff8087166000908152600860209081526040808320938f168352929052908120555b891561398957600760008a63ffffffff1663ffffffff1681526020019081526020016000209050808b908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050600860008b63ffffffff1663ffffffff16815260200190815260200160002060008d63ffffffff1663ffffffff168152602001908152602001600020819055505b60038801805466ffffffff0000001916630100000063ffffffff8c16021760ff19168b15151790555b5050505050505050505050565b63ffffffff80841660009081526001602052604081206003810154909260ff620100008304169267010000000000000090920416908080808086158015613a04575089155b80613a2b5750868015613a145750895b8015613a2b57508863ffffffff168663ffffffff16145b15613a35576139b2565b8615613b8d5763ffffffff8087166000908152600a60209081526040808320938f1683529290529081205495508511613a6a57fe5b63ffffffff861660009081526009602052604090208054600019968701969195509081019350849084908110613a9c57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff169150818486815481101515613ad357fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff8181021990941695841602949094179093558881168252600a8352604080832091861683529252206001860190558354849084908110613b3157fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055828481613b669190613d06565b5063ffffffff8087166000908152600a60209081526040808320938f168352929052908120555b8915613c4a57600960008a63ffffffff1663ffffffff1681526020019081526020016000209050808b908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050600a60008b63ffffffff1663ffffffff16815260200190815260200160002060008d63ffffffff1663ffffffff168152602001908152602001600020819055505b6003880180548b1515620100000262ff00001963ffffffff8d16670100000000000000026affffffff000000000000001990931692909217919091161790555050505050505050505050565b600160a060020a0381161515613cab57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b815481835581811115612fa3576007016008900481600701600890048360005260206000209182019101612fa39190613db8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d7b57805160ff1916838001178555613da8565b82800160010185558215613da8579182015b82811115613da8578251825591602001919060010190613d8d565b50613db4929150613db8565b5090565b613dd291905b80821115613db45760008155600101613dbe565b905600a165627a7a72305820e17b29d41082d92ff3fcb77ee16ddd9cee4ce75a55eb3bc727ed72ff0e59df930029
Deployed Bytecode
0x6080604052600436106103bb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301d8a97f81146103c05780630333d499146103f657806304bbb61d1461046757806304bc94e5146104a4578063073167da146104fe57806308083039146105225780630f934e661461055a578063108d995b1461059457806312ace2e6146105b257806312afbc78146105d357806313063180146105f457806322a7906f1461061457806324541f781461063857806324ba1a461461065657806324cf61b5146106805780632637588e146106a4578063293a9169146106cb5780632a19642c146106e95780632c7ba564146107135780632cce0e291461073d5780633262207c1461076157806333f337241461078b578063375e24c1146107a957806337de45c1146107d35780633b17b4ea146107fd5780633c01a9fa1461081b578063439f7d3c146108395780634448f5fb14610857578063474dbae714610875578063483a15ed1461089f57806352c0683b146108c05780635a83df54146108ea5780635e19b3051461090e578063621b23e21461092c57806363fa9a871461094a5780636436b1b9146109c65780636d09887b146109e7578063715018a614610a05578063728aa85714610a1a57806376944d5b14610a4457806377eb4c5014610a6e5780637bc702a114610a8c578063846f652b14610aaa5780638866bb2c14610ac85780638a27bf5914610af25780638d2d3f4114610b1c5780638da5cb5b14610b3a5780639137fe0a14610b4f57806391398f2514610b795780639397640514610b9a578063942324c314610bdc5780639b0d1b2c14610bfa5780639b350e1214610c1b5780639dd9019014610c39578063a297c1d814610c5a578063a46afef114610c84578063a634585914610ca2578063b6363cf214610cc6578063b65afedd14610ced578063bac55edd14610d17578063bc562b9e14610dec578063bc735d9014610e0a578063c17ad9d814610e36578063c210c62314610e54578063c6d761d414610e9e578063caf590f914610ebc578063d154126414610ee6578063d2588e2014610f07578063d2a9b6ed14610f31578063d5c5164f14610f52578063ddc3595014610f76578063e01cff8414610fa0578063e213c84014610fc1578063e4a358d714610feb578063eccc8ff114611020578063f2fde38b146110ad578063f4914919146110ce578063f4e3be2d146110ec578063f5af66211461110a578063f9b87d4014611128578063fdb357be14611154578063fde9073314611175575b600080fd5b3480156103cc57600080fd5b506103e463ffffffff60043581169060243516611199565b60408051918252519081900360200190f35b34801561040257600080fd5b50610417600160a060020a03600435166111b6565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561045357818101518382015260200161043b565b505050509050019250505060405180910390f35b34801561047357600080fd5b5061048b600160a060020a036004351660243561124f565b6040805163ffffffff9092168252519081900360200190f35b3480156104b057600080fd5b506104c263ffffffff60043516611297565b60408051600160a060020a0396871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190f35b34801561050a57600080fd5b5061048b600160a060020a03600435166024356112d9565b34801561052e57600080fd5b5061054663ffffffff600435811690602435166112f4565b604080519115158252519081900360200190f35b34801561056657600080fd5b5061057863ffffffff60043516611338565b60408051600160a060020a039092168252519081900360200190f35b3480156105a057600080fd5b5061048b63ffffffff6004351661135c565b3480156105be57600080fd5b5061048b63ffffffff60043516602435611391565b3480156105df57600080fd5b506103e4600160a060020a03600435166113ac565b34801561060057600080fd5b5061061263ffffffff600435166113c7565b005b34801561062057600080fd5b5061048b600160a060020a036004351660243561147f565b34801561064457600080fd5b5061057863ffffffff600435166114e1565b34801561066257600080fd5b5061054663ffffffff60043516600160a060020a0360243516611505565b34801561068c57600080fd5b5061048b600160a060020a0360043516602435611532565b3480156106b057600080fd5b50610546600160a060020a036004358116906024351661154d565b3480156106d757600080fd5b5061048b63ffffffff6004351661156d565b3480156106f557600080fd5b5061061263ffffffff60043516600160a060020a036024351661159a565b34801561071f57600080fd5b5061061263ffffffff60043516600160a060020a036024351661189c565b34801561074957600080fd5b506103e463ffffffff60043581169060243516611b9b565b34801561076d57600080fd5b5061054663ffffffff60043516600160a060020a0360243516611bb8565b34801561079757600080fd5b5061057863ffffffff60043516611be4565b3480156107b557600080fd5b5061054663ffffffff60043516600160a060020a0360243516611c08565b3480156107df57600080fd5b506103e4600160a060020a036004351663ffffffff60243516611c34565b34801561080957600080fd5b5061054663ffffffff60043516611c51565b34801561082757600080fd5b5061041763ffffffff60043516611ca4565b34801561084557600080fd5b5061048b63ffffffff60043516611d11565b34801561086357600080fd5b506103e463ffffffff60043516611d36565b34801561088157600080fd5b506103e4600160a060020a036004351663ffffffff60243516611d4e565b3480156108ab57600080fd5b50610417600160a060020a0360043516611d6b565b3480156108cc57600080fd5b506103e4600160a060020a036004351663ffffffff60243516611ddb565b3480156108f657600080fd5b5061048b600160a060020a0360043516602435611df8565b34801561091a57600080fd5b5061054663ffffffff60043516611e13565b34801561093857600080fd5b5061057863ffffffff60043516611e36565b34801561095657600080fd5b5061096863ffffffff60043516611e57565b604080519a8b5260208b0199909952961515898901529415156060890152921515608088015263ffffffff91821660a0880152811660c087015290811660e08601529081166101008501521661012083015251908190036101400190f35b3480156109d257600080fd5b506103e4600160a060020a0360043516611eeb565b3480156109f357600080fd5b5061054663ffffffff60043516611f06565b348015610a1157600080fd5b50610612611f3a565b348015610a2657600080fd5b5061054663ffffffff60043516600160a060020a0360243516611f99565b348015610a5057600080fd5b506103e4600160a060020a036004351663ffffffff60243516612025565b348015610a7a57600080fd5b5061054663ffffffff60043516612042565b348015610a9857600080fd5b5061061263ffffffff60043516612060565b348015610ab657600080fd5b5061041763ffffffff60043516612103565b348015610ad457600080fd5b5061061263ffffffff60043516600160a060020a0360243516612173565b348015610afe57600080fd5b5061054663ffffffff60043516600160a060020a0360243516612472565b348015610b2857600080fd5b5061048b63ffffffff600435166124cb565b348015610b4657600080fd5b506105786124fc565b348015610b5b57600080fd5b5061054663ffffffff60043516600160a060020a036024351661250b565b348015610b8557600080fd5b50610417600160a060020a0360043516612564565b348015610ba657600080fd5b50610bb863ffffffff600435166125d4565b60405180826002811115610bc857fe5b60ff16815260200191505060405180910390f35b348015610be857600080fd5b506103e463ffffffff6004351661260f565b348015610c0657600080fd5b50610417600160a060020a0360043516612627565b348015610c2757600080fd5b5061054663ffffffff60043516612697565b348015610c4557600080fd5b5061048b63ffffffff600435166024356126bb565b348015610c6657600080fd5b5061061263ffffffff60043516600160a060020a03602435166126d6565b348015610c9057600080fd5b5061041763ffffffff600435166129d5565b348015610cae57600080fd5b5061061263ffffffff60043581169060243516612a42565b348015610cd257600080fd5b50610546600160a060020a0360043581169060243516612ab8565b348015610cf957600080fd5b5061054663ffffffff60043516600160a060020a0360243516612ae6565b348015610d2357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261061294369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750612b3f9650505050505050565b348015610df857600080fd5b5061061263ffffffff60043516612cfe565b348015610e1657600080fd5b50610612600160a060020a03600435811690602435166044351515612da4565b348015610e4257600080fd5b5061061263ffffffff60043516612df5565b348015610e6057600080fd5b50610e7263ffffffff60043516612ea8565b60408051948552602085019390935263ffffffff91821684840152166060830152519081900360800190f35b348015610eaa57600080fd5b5061061263ffffffff60043516612efa565b348015610ec857600080fd5b5061054663ffffffff60043516600160a060020a0360243516612fa8565b348015610ef257600080fd5b506103e4600160a060020a0360043516612fd1565b348015610f1357600080fd5b506103e4600160a060020a036004351663ffffffff60243516612fec565b348015610f3d57600080fd5b50610417600160a060020a0360043516613009565b348015610f5e57600080fd5b5061048b600160a060020a0360043516602435613079565b348015610f8257600080fd5b5061061263ffffffff60043516600160a060020a0360243516613094565b348015610fac57600080fd5b506103e4600160a060020a0360043516613328565b348015610fcd57600080fd5b5061054663ffffffff60043516600160a060020a0360243516613343565b348015610ff757600080fd5b5061100963ffffffff6004351661336f565b6040805161ffff9092168252519081900360200190f35b34801561102c57600080fd5b50611038600435613394565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561107257818101518382015260200161105a565b50505050905090810190601f16801561109f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156110b957600080fd5b50610612600160a060020a036004351661342f565b3480156110da57600080fd5b5061061263ffffffff60043516613452565b3480156110f857600080fd5b5061057863ffffffff60043516613508565b34801561111657600080fd5b5061048b63ffffffff6004351661352d565b34801561113457600080fd5b5061061263ffffffff600435811690602435906044359060643516613556565b34801561116057600080fd5b506103e4600160a060020a036004351661369b565b34801561118157600080fd5b5061054663ffffffff600435811690602435166136b6565b600a60209081526000928352604080842090915290825290205481565b600160a060020a0381166000908152600b602090815260409182902080548351818402810184019094528084526060939283018282801561124257602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116112055790505b505050505090505b919050565b60116020528160005260406000208181548110151561126a57fe5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b600260208190526000918252604090912080546001820154928201546003830154600490930154600160a060020a039283169483169391831692918216911685565b60136020528160005260406000208181548110151561126a57fe5b63ffffffff82166000908152600160205260408120600381015460ff1680156113305750600381015463ffffffff848116630100000090920416145b949350505050565b63ffffffff16600090815260026020526040902060010154600160a060020a031690565b63ffffffff90811660009081526001602052604090206003015473010000000000000000000000000000000000000090041690565b60076020528160005260406000208181548110151561126a57fe5b600160a060020a03166000908152600b602052604090205490565b60008054600160a060020a031633146113df57600080fd5b5063ffffffff81166000908152600160205260409020600381015462010000900460ff16151561140e57600080fd5b61142e8260018360030160079054906101000a900463ffffffff16613705565b61143a826000806139bf565b600381015460405163ffffffff63010000009092048216918416907f7e447c9b1bda4b174b0796e100bf7f34ebf36dbb7fe665490b1bfce6246a9da590600090a35050565b600160a060020a0382166000908152600b60205260408120805483106114a457600080fd5b80838154811015156114b257fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691505092915050565b63ffffffff16600090815260026020526040902060040154600160a060020a031690565b63ffffffff9190911660009081526002602081905260409091200154600160a060020a0391821691161490565b600b6020528160005260406000208181548110151561126a57fe5b600360209081526000928352604080842090915290825290205460ff1681565b63ffffffff8116600090815260016020526040812060020154640100000000811061159457fe5b92915050565b60008054819081908190819081908190600160a060020a031633146115be57600080fd5b63ffffffff8916600090815260026020819052604090912090810154909750600160a060020a03908116965088168614156115f857611891565b600160a060020a0386161561176d57600160a060020a038616600090815260106020908152604080832063ffffffff8d1684529091528120549550851161163b57fe5b600160a060020a0386166000908152600f60205260409020805460001996870196919550908101935084908490811061167057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691508184868154811015156116a757fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a03891682526010835260408083209186168352925220600186019055835484908490811061170c57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558284816117419190613d06565b50600160a060020a038616600090815260106020908152604080832063ffffffff8d1684529091528120555b600160a060020a0388161561183f57600f600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050601060008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600287018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907f902736af7b3cefe10d9e840aed0d687e35c84095122b25051a20ead8866f006d90600090a35b505050505050505050565b60008054819081908190819081908190600160a060020a031633146118c057600080fd5b63ffffffff891660009081526002602052604090206004810154909750600160a060020a03908116965088168614156118f857611891565b600160a060020a03861615611a6d57600160a060020a038616600090815260146020908152604080832063ffffffff8d1684529091528120549550851161193b57fe5b600160a060020a0386166000908152601360205260409020805460001996870196919550908101935084908490811061197057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691508184868154811015156119a757fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a038916825260148352604080832091861683529252206001860190558354849084908110611a0c57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055828481611a419190613d06565b50600160a060020a038616600090815260146020908152604080832063ffffffff8d1684529091528120555b600160a060020a03881615611b3f576013600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050601460008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600487018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907fcfe369b7197e7f0cf06793ae2472a9b13583fecbed2f78dfa14d1f10796b847c90600090a3505050505050505050565b600860209081526000928352604080842090915290825290205481565b63ffffffff91909116600090815260026020526040902060040154600160a060020a0391821691161490565b63ffffffff16600090815260026020526040902060030154600160a060020a031690565b63ffffffff91909116600090815260026020526040902060010154600160a060020a0391821691161490565b601260209081526000928352604080842090915290825290205481565b63ffffffff81166000908152600160205260408120805415801590611c795750600181015415155b8015611c9d575060038101546b010000000000000000000000900463ffffffff1615155b9392505050565b63ffffffff8116600090815260096020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b63ffffffff908116600090815260016020526040902060030154630100000090041690565b63ffffffff1660009081526009602052604090205490565b600c60209081526000928352604080842090915290825290205481565b600160a060020a0381166000908152600d6020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b600e60209081526000928352604080842090915290825290205481565b600d6020528160005260406000208181548110151561126a57fe5b63ffffffff16600090815260016020526040902060030154610100900460ff1690565b63ffffffff16600090815260026020526040902054600160a060020a031690565b600160208190526000918252604090912080549181015460039091015460ff808216916101008104821691620100008204169063ffffffff6301000000820481169167010000000000000081048216916b01000000000000000000000082048116916f010000000000000000000000000000008104821691730100000000000000000000000000000000000000909104168a565b600160a060020a03166000908152600f602052604090205490565b63ffffffff9081166000908152600160205260408120600301546f0100000000000000000000000000000090049091161190565b600054600160a060020a03163314611f5157600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a260008054600160a060020a0319169055565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611feb57506004810154600160a060020a038481169116145b8061133057508054600160a060020a0390811660009081526003602090815260408083209387168352929052205460ff1691505092915050565b601060209081526000928352604080842090915290825290205481565b63ffffffff1660009081526001602052604090206003015460ff1690565b60008054600160a060020a0316331461207857600080fd5b5063ffffffff811660009081526001602052604090206003810154610100900460ff16156120a557600080fd5b60038101805461ff0019166101001790556120ce8260016120c58261336f565b61ffff16613705565b60405163ffffffff8316907fe74c03809d0769e1b1f706cc8414258cd1f3b6fe020cd15d0165c210ba503a0f90600090a25050565b63ffffffff8116600090815260016020908152604091829020600201805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b60008054819081908190819081908190600160a060020a0316331461219757600080fd5b63ffffffff891660009081526002602052604090206001810154909750600160a060020a03908116965088168614156121cf57611891565b600160a060020a0386161561234457600160a060020a0386166000908152600e6020908152604080832063ffffffff8d1684529091528120549550851161221257fe5b600160a060020a0386166000908152600d60205260409020805460001996870196919550908101935084908490811061224757fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16915081848681548110151561227e57fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a0389168252600e83526040808320918616835292522060018601905583548490849081106122e357fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558284816123189190613d06565b50600160a060020a0386166000908152600e6020908152604080832063ffffffff8d1684529091528120555b600160a060020a0388161561241657600d600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050600e60008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600187018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907fab9c9327cffd2acc168fafedbe06139f5f55cb84c761df05e0511c251e2ee9bf90600090a3505050505050505050565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611330575060020154600160a060020a0390811692169190911492915050565b63ffffffff9081166000908152600160205260409020600301546f0100000000000000000000000000000090041690565b600054600160a060020a031681565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611330575060010154600160a060020a0390811692169190911492915050565b600160a060020a038116600090815260136020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b60006101008263ffffffff1610156125ee5750600061124a565b620100008263ffffffff1610156126075750600161124a565b506002919050565b63ffffffff1660009081526007602052604090205490565b600160a060020a0381166000908152600f6020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b63ffffffff1660009081526001602052604090206003015462010000900460ff1690565b60096020528160005260406000208181548110151561126a57fe5b60008054819081908190819081908190600160a060020a031633146126fa57600080fd5b63ffffffff891660009081526002602052604090206003810154909750600160a060020a039081169650881686141561273257611891565b600160a060020a038616156128a757600160a060020a038616600090815260126020908152604080832063ffffffff8d1684529091528120549550851161277557fe5b600160a060020a038616600090815260116020526040902080546000199687019691955090810193508490849081106127aa57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1691508184868154811015156127e157fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a03891682526012835260408083209186168352925220600186019055835484908490811061284657fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905582848161287b9190613d06565b50600160a060020a038616600090815260126020908152604080832063ffffffff8d1684529091528120555b600160a060020a03881615612979576011600089600160a060020a0316600160a060020a0316815260200190815260200160002090508089908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050601260008a600160a060020a0316600160a060020a0316815260200190815260200160002060008b63ffffffff1663ffffffff168152602001908152602001600020819055505b600387018054600160a060020a031916600160a060020a038a1690811790915560405163ffffffff8b16907fcbd6269ec71457f2c7b1a22774f246f6c5a2eae3795ed7300db517680c61c80590600090a3505050505050505050565b63ffffffff8116600090815260076020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b600054600160a060020a03163314612a5957600080fd5b612a6382826136b6565b15612a6d57612ab4565b612a79826001836139bf565b8063ffffffff168263ffffffff167fb4d4850b8f218218141c5665cba379e53e9bb015b51e8d934be70210aead874a60405160405180910390a35b5050565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205460ff1690565b63ffffffff82166000908152600260205260408120600160a060020a0383161580159061133057508054600160a060020a0384811691161480611330575060030154600160a060020a0390811692169190911492915050565b600054600160a060020a03163314612b5657600080fd5b8251612b69906004906020860190613d3a565b508151612b7d906005906020850190613d3a565b508051612b91906006906020840190613d3a565b507ffafd04ade1daae2e1fdb0fc1cc6a899fd424063ed5c92120e67e073053b9489883838360405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015612bfb578181015183820152602001612be3565b50505050905090810190601f168015612c285780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015612c5b578181015183820152602001612c43565b50505050905090810190601f168015612c885780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015612cbb578181015183820152602001612ca3565b50505050905090810190601f168015612ce85780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b60008054600160a060020a03163314612d1657600080fd5b5063ffffffff81166000908152600160205260409020600381015460ff161515612d3f57612ab4565b612d5f8260008360030160039054906101000a900463ffffffff16613705565b600381015460405163ffffffff63010000009092048216918416907fd7704f9a25193dbd0b0cb4a809feffffa7f19d1aae8817a71346c194448210d590600090a35050565b600054600160a060020a03163314612dbb57600080fd5b600160a060020a03928316600090815260036020908152604080832094909516825292909252919020805460ff1916911515919091179055565b60008054600160a060020a03163314612e0d57600080fd5b612e168261336f565b61ffff16905063ffffffff8216811415612e2f57612ab4565b63ffffffff80821660008181526001602081815260408084206002018054938401815584529083206008830401805488871660046007909516949094026101000a848102970219169590951790945592517fb2d3a6e7a339f5c8ff96265e2f03a010a8541070f3744a2470909644150815469190a35050565b63ffffffff9081166000908152600160208190526040909120805491810154600390910154919390926b01000000000000000000000083048116926f0100000000000000000000000000000090041690565b600080548190600160a060020a03163314612f1457600080fd5b63ffffffff83166000908152600160205260409020600381015490925062010000900460ff161515612f4557612fa3565b506003810154670100000000000000900463ffffffff16612f68836000806139bf565b8063ffffffff168363ffffffff167fd653bb0e0bb7ce8393e624d98fbf17cda5902c8328ed0cd09988f36890d9932a60405160405180910390a35b505050565b63ffffffff91909116600090815260026020526040902054600160a060020a0391821691161490565b600160a060020a03166000908152600d602052604090205490565b601460209081526000928352604080842090915290825290205481565b600160a060020a038116600090815260116020908152604091829020805483518184028101840190945280845260609392830182828015611242576000918252602091829020805463ffffffff168452908202830192909160049101808411611205575094979650505050505050565b600f6020528160005260406000208181548110151561126a57fe5b600080548190819081908190600160a060020a031633146130b457600080fd5b600160a060020a03861615156130c957600080fd5b63ffffffff8716600090815260026020526040902054600160a060020a03908116955086168514156130fa5761331f565b600160a060020a0385161561326f57600160a060020a0385166000908152600c6020908152604080832063ffffffff8b1684529091528120549450841161313d57fe5b600160a060020a0385166000908152600b60205260409020805460001995860195919450908101925083908390811061317257fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690508083858154811015156131a957fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff818102199094169584160294909417909355600160a060020a0388168252600c835260408083209185168352925220600185019055825483908390811061320e57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558183816132439190613d06565b50600160a060020a0385166000908152600c6020908152604080832063ffffffff8b1684529091528120555b63ffffffff87811660008181526002602090815260408083208054600160a060020a031916600160a060020a038d16908117909155808452600b835281842080546001810182558186528486206008820401805460079092166004026101000a98890219909116978702979097179096558084529454600c835281842085855290925280832091909155517f16d0f539d49c6cad822b767a9445bfb1cf7ea6f2a6c2b120a7ea4cc7660d8fda9190a35b50505050505050565b600160a060020a031660009081526013602052604090205490565b63ffffffff91909116600090815260026020526040902060030154600160a060020a0391821691161490565b6000620100008263ffffffff16101561338c575060ff811661124a565b5061ffff1690565b600481600381106133a157fe5b018054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815293508301828280156134275780601f106133fc57610100808354040283529160200191613427565b820191906000526020600020905b81548152906001019060200180831161340a57829003601f168201915b505050505081565b600054600160a060020a0316331461344657600080fd5b61344f81613c96565b50565b60008054600160a060020a0316331461346a57600080fd5b5063ffffffff80821660008181526001602081815260409283902060038101805473010000000000000000000000000000000000000080820489169095018816850276ffffffff000000000000000000000000000000000000001990911617908190558451939004909516825291517f29294799f1c21a37ef838e15f79dd91bcee2df99d63cd1c18ac968b129514e6e929181900390910190a25050565b63ffffffff1660009081526002602081905260409091200154600160a060020a031690565b63ffffffff90811660009081526001602052604090206003015467010000000000000090041690565b60008054600160a060020a0316331461356e57600080fd5b5063ffffffff841660009081526001602052604090208054841480156135975750600181015483145b80156135be5750600381015463ffffffff8381166b01000000000000000000000090920416145b156135c857613694565b83815560018082018490556003820180546f0100000000000000000000000000000063ffffffff8087166b01000000000000000000000081026effffffff0000000000000000000000199094169390931782810482169095018116820272ffffffff0000000000000000000000000000001990951694909417928390556040805189815260208101899052808201939093529204831660608201529051918716917faa10e7a0117d4323f1d99d630ec169bebb3a988e895770e351987e01ff5423d59181900360800190a25b5050505050565b600160a060020a031660009081526011602052604090205490565b63ffffffff82166000908152600160205260408120600381015462010000900460ff16801561133057506003810154670100000000000000900463ffffffff9081169084161491505092915050565b63ffffffff80841660009081526001602052604081206003810154909260ff821692630100000090920416908080808086158015613741575089155b8061376857508680156137515750895b801561376857508863ffffffff168663ffffffff16145b15613772576139b2565b86156138cc5763ffffffff8087166000908152600860209081526040808320938f16835292905290812054955085116137a757fe5b63ffffffff8616600090815260076020526040902080546000199687019691955090810193508490849081106137d957fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16915081848681548110151561381057fe5b600091825260208083206008808404909101805460079094166004026101000a63ffffffff818102199095169685160295909517909455898216835292835260408083209186168352925220600186019055835484908490811061387057fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690558284816138a59190613d06565b5063ffffffff8087166000908152600860209081526040808320938f168352929052908120555b891561398957600760008a63ffffffff1663ffffffff1681526020019081526020016000209050808b908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050600860008b63ffffffff1663ffffffff16815260200190815260200160002060008d63ffffffff1663ffffffff168152602001908152602001600020819055505b60038801805466ffffffff0000001916630100000063ffffffff8c16021760ff19168b15151790555b5050505050505050505050565b63ffffffff80841660009081526001602052604081206003810154909260ff620100008304169267010000000000000090920416908080808086158015613a04575089155b80613a2b5750868015613a145750895b8015613a2b57508863ffffffff168663ffffffff16145b15613a35576139b2565b8615613b8d5763ffffffff8087166000908152600a60209081526040808320938f1683529290529081205495508511613a6a57fe5b63ffffffff861660009081526009602052604090208054600019968701969195509081019350849084908110613a9c57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff169150818486815481101515613ad357fe5b600091825260208083206008830401805460079093166004026101000a63ffffffff8181021990941695841602949094179093558881168252600a8352604080832091861683529252206001860190558354849084908110613b3157fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055828481613b669190613d06565b5063ffffffff8087166000908152600a60209081526040808320938f168352929052908120555b8915613c4a57600960008a63ffffffff1663ffffffff1681526020019081526020016000209050808b908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550508080549050600a60008b63ffffffff1663ffffffff16815260200190815260200160002060008d63ffffffff1663ffffffff168152602001908152602001600020819055505b6003880180548b1515620100000262ff00001963ffffffff8d16670100000000000000026affffffff000000000000001990931692909217919091161790555050505050505050505050565b600160a060020a0381161515613cab57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b815481835581811115612fa3576007016008900481600701600890048360005260206000209182019101612fa39190613db8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d7b57805160ff1916838001178555613da8565b82800160010185558215613da8579182015b82811115613da8578251825591602001919060010190613d8d565b50613db4929150613db8565b5090565b613dd291905b80821115613db45760008155600101613dbe565b905600a165627a7a72305820e17b29d41082d92ff3fcb77ee16ddd9cee4ce75a55eb3bc727ed72ff0e59df930029
Swarm Source
bzzr://e17b29d41082d92ff3fcb77ee16ddd9cee4ce75a55eb3bc727ed72ff0e59df93
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.