Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
EACAggregatorProxy
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Nova.Arbiscan.io on 2023-03-19 */ pragma solidity ^0.8.15; /** * @title The Owned contract * @notice A contract with helpers for basic contract ownership. */ contract Owned { address public owner; address private pendingOwner; event OwnershipTransferRequested(address indexed from, address indexed to); event OwnershipTransferred(address indexed from, address indexed to); constructor() public { owner = msg.sender; } /** * @dev Allows an owner to begin transferring ownership to a new address, * pending. */ function transferOwnership(address _to) external onlyOwner { pendingOwner = _to; emit OwnershipTransferRequested(owner, _to); } /** * @dev Allows an ownership transfer to be completed by the recipient. */ function acceptOwnership() external { require(msg.sender == pendingOwner, "Must be proposed owner"); address oldOwner = owner; owner = msg.sender; pendingOwner = address(0); emit OwnershipTransferred(oldOwner, msg.sender); } /** * @dev Reverts if called by anyone other than the contract owner. */ modifier onlyOwner() { require(msg.sender == owner, "Only callable by owner"); _; } } interface AggregatorInterface { function latestAnswer() external view returns (int256); function latestTimestamp() external view returns (uint256); function latestRound() external view returns (uint256); function getAnswer(uint256 roundId) external view returns (int256); function getTimestamp(uint256 roundId) external view returns (uint256); event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt); event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt); } interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData( uint80 _roundId ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); } interface AggregatorV2V3Interface is AggregatorInterface, AggregatorV3Interface {} /** * @title A trusted proxy for updating where current answers are read from * @notice This contract provides a consistent address for the * CurrentAnwerInterface but delegates where it reads from to the owner, who is * trusted to update it. */ contract AggregatorProxy is AggregatorV2V3Interface, Owned { struct Phase { uint16 id; AggregatorV2V3Interface aggregator; } Phase private currentPhase; AggregatorV2V3Interface public proposedAggregator; mapping(uint16 => AggregatorV2V3Interface) public phaseAggregators; uint256 private constant PHASE_OFFSET = 64; uint256 private constant PHASE_SIZE = 16; uint256 private constant MAX_ID = 2 ** (PHASE_OFFSET + PHASE_SIZE) - 1; constructor(address _aggregator) public Owned() { setAggregator(_aggregator); } /** * @notice Reads the current answer from aggregator delegated to. * * @dev #[deprecated] Use latestRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended latestRoundData * instead which includes better verification information. */ function latestAnswer() public view virtual override returns (int256 answer) { return currentPhase.aggregator.latestAnswer(); } /** * @notice Reads the last updated height from aggregator delegated to. * * @dev #[deprecated] Use latestRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended latestRoundData * instead which includes better verification information. */ function latestTimestamp() public view virtual override returns (uint256 updatedAt) { return currentPhase.aggregator.latestTimestamp(); } /** * @notice get past rounds answers * @param _roundId the answer number to retrieve the answer for * * @dev #[deprecated] Use getRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended getRoundData * instead which includes better verification information. */ function getAnswer(uint256 _roundId) public view virtual override returns (int256 answer) { if (_roundId > MAX_ID) return 0; (uint16 phaseId, uint64 aggregatorRoundId) = parseIds(_roundId); AggregatorV2V3Interface aggregator = phaseAggregators[phaseId]; if (address(aggregator) == address(0)) return 0; return aggregator.getAnswer(aggregatorRoundId); } /** * @notice get block timestamp when an answer was last updated * @param _roundId the answer number to retrieve the updated timestamp for * * @dev #[deprecated] Use getRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended getRoundData * instead which includes better verification information. */ function getTimestamp(uint256 _roundId) public view virtual override returns (uint256 updatedAt) { if (_roundId > MAX_ID) return 0; (uint16 phaseId, uint64 aggregatorRoundId) = parseIds(_roundId); AggregatorV2V3Interface aggregator = phaseAggregators[phaseId]; if (address(aggregator) == address(0)) return 0; return aggregator.getTimestamp(aggregatorRoundId); } /** * @notice get the latest completed round where the answer was updated. This * ID includes the proxy's phase, to make sure round IDs increase even when * switching to a newly deployed aggregator. * * @dev #[deprecated] Use latestRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended latestRoundData * instead which includes better verification information. */ function latestRound() public view virtual override returns (uint256 roundId) { Phase memory phase = currentPhase; // cache storage reads return addPhase(phase.id, uint64(phase.aggregator.latestRound())); } /** * @notice get data about a round. Consumers are encouraged to check * that they're receiving fresh data by inspecting the updatedAt and * answeredInRound return values. * Note that different underlying implementations of AggregatorV3Interface * have slightly different semantics for some of the return values. Consumers * should determine what implementations they expect to receive * data from and validate that they can properly handle return data from all * of them. * @param _roundId the requested round ID as presented through the proxy, this * is made up of the aggregator's round ID with the phase ID encoded in the * two highest order bytes * @return roundId is the round ID from the aggregator for which the data was * retrieved combined with an phase to ensure that round IDs get larger as * time moves forward. * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. * (Only some AggregatorV3Interface implementations return meaningful values) * @dev Note that answer and updatedAt may change between queries. */ function getRoundData( uint80 _roundId ) public view virtual override returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { (uint16 phaseId, uint64 aggregatorRoundId) = parseIds(_roundId); (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 ansIn) = phaseAggregators[phaseId] .getRoundData(aggregatorRoundId); return addPhaseIds(roundId, answer, startedAt, updatedAt, ansIn, phaseId); } /** * @notice get data about the latest round. Consumers are encouraged to check * that they're receiving fresh data by inspecting the updatedAt and * answeredInRound return values. * Note that different underlying implementations of AggregatorV3Interface * have slightly different semantics for some of the return values. Consumers * should determine what implementations they expect to receive * data from and validate that they can properly handle return data from all * of them. * @return roundId is the round ID from the aggregator for which the data was * retrieved combined with an phase to ensure that round IDs get larger as * time moves forward. * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. * (Only some AggregatorV3Interface implementations return meaningful values) * @dev Note that answer and updatedAt may change between queries. */ function latestRoundData() public view virtual override returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { Phase memory current = currentPhase; // cache storage reads (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 ansIn) = current .aggregator .latestRoundData(); return addPhaseIds(roundId, answer, startedAt, updatedAt, ansIn, current.id); } /** * @notice Used if an aggregator contract has been proposed. * @param _roundId the round ID to retrieve the round data for * @return roundId is the round ID for which data was retrieved * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. */ function proposedGetRoundData( uint80 _roundId ) public view virtual hasProposal returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { return proposedAggregator.getRoundData(_roundId); } /** * @notice Used if an aggregator contract has been proposed. * @return roundId is the round ID for which data was retrieved * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. */ function proposedLatestRoundData() public view virtual hasProposal returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { return proposedAggregator.latestRoundData(); } /** * @notice returns the current phase's aggregator address. */ function aggregator() external view returns (address) { return address(currentPhase.aggregator); } /** * @notice returns the current phase's ID. */ function phaseId() external view returns (uint16) { return currentPhase.id; } /** * @notice represents the number of decimals the aggregator responses represent. */ function decimals() external view override returns (uint8) { return currentPhase.aggregator.decimals(); } /** * @notice the version number representing the type of aggregator the proxy * points to. */ function version() external view override returns (uint256) { return currentPhase.aggregator.version(); } /** * @notice returns the description of the aggregator the proxy points to. */ function description() external view override returns (string memory) { return currentPhase.aggregator.description(); } /** * @notice Allows the owner to propose a new address for the aggregator * @param _aggregator The new address for the aggregator contract */ function proposeAggregator(address _aggregator) external onlyOwner { proposedAggregator = AggregatorV2V3Interface(_aggregator); } /** * @notice Allows the owner to confirm and change the address * to the proposed aggregator * @dev Reverts if the given address doesn't match what was previously * proposed * @param _aggregator The new address for the aggregator contract */ function confirmAggregator(address _aggregator) external onlyOwner { require(_aggregator == address(proposedAggregator), "Invalid proposed aggregator"); delete proposedAggregator; setAggregator(_aggregator); } /* * Internal */ function setAggregator(address _aggregator) internal { uint16 id = currentPhase.id + 1; currentPhase = Phase(id, AggregatorV2V3Interface(_aggregator)); phaseAggregators[id] = AggregatorV2V3Interface(_aggregator); } function addPhase(uint16 _phase, uint64 _originalId) internal view returns (uint80) { return uint80((uint256(_phase) << PHASE_OFFSET) | _originalId); } function parseIds(uint256 _roundId) internal view returns (uint16, uint64) { uint16 phaseId = uint16(_roundId >> PHASE_OFFSET); uint64 aggregatorRoundId = uint64(_roundId); return (phaseId, aggregatorRoundId); } function addPhaseIds( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound, uint16 phaseId ) internal view returns (uint80, int256, uint256, uint256, uint80) { return ( addPhase(phaseId, uint64(roundId)), answer, startedAt, updatedAt, addPhase(phaseId, uint64(answeredInRound)) ); } /* * Modifiers */ modifier hasProposal() { require(address(proposedAggregator) != address(0), "No proposed aggregator present"); _; } } interface AccessControllerInterface { function hasAccess(address user, bytes calldata data) external view returns (bool); } /** * @title External Access Controlled Aggregator Proxy * @notice A trusted proxy for updating where current answers are read from * @notice This contract provides a consistent address for the * Aggregator and AggregatorV3Interface but delegates where it reads from to the owner, who is * trusted to update it. * @notice Only access enabled addresses are allowed to access getters for * aggregated answers and round information. */ contract EACAggregatorProxy is AggregatorProxy { AccessControllerInterface public accessController; constructor(address _aggregator, address _accessController) public AggregatorProxy(_aggregator) { setController(_accessController); } /** * @notice Allows the owner to update the accessController contract address. * @param _accessController The new address for the accessController contract */ function setController(address _accessController) public onlyOwner { accessController = AccessControllerInterface(_accessController); } /** * @notice Reads the current answer from aggregator delegated to. * @dev overridden function to add the checkAccess() modifier * * @dev #[deprecated] Use latestRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended latestRoundData * instead which includes better verification information. */ function latestAnswer() public view override checkAccess returns (int256) { return super.latestAnswer(); } /** * @notice get the latest completed round where the answer was updated. This * ID includes the proxy's phase, to make sure round IDs increase even when * switching to a newly deployed aggregator. * * @dev #[deprecated] Use latestRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended latestRoundData * instead which includes better verification information. */ function latestTimestamp() public view override checkAccess returns (uint256) { return super.latestTimestamp(); } /** * @notice get past rounds answers * @param _roundId the answer number to retrieve the answer for * @dev overridden function to add the checkAccess() modifier * * @dev #[deprecated] Use getRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended getRoundData * instead which includes better verification information. */ function getAnswer(uint256 _roundId) public view override checkAccess returns (int256) { return super.getAnswer(_roundId); } /** * @notice get block timestamp when an answer was last updated * @param _roundId the answer number to retrieve the updated timestamp for * @dev overridden function to add the checkAccess() modifier * * @dev #[deprecated] Use getRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended getRoundData * instead which includes better verification information. */ function getTimestamp(uint256 _roundId) public view override checkAccess returns (uint256) { return super.getTimestamp(_roundId); } /** * @notice get the latest completed round where the answer was updated * @dev overridden function to add the checkAccess() modifier * * @dev #[deprecated] Use latestRoundData instead. This does not error if no * answer has been reached, it will simply return 0. Either wait to point to * an already answered Aggregator or use the recommended latestRoundData * instead which includes better verification information. */ function latestRound() public view override checkAccess returns (uint256) { return super.latestRound(); } /** * @notice get data about a round. Consumers are encouraged to check * that they're receiving fresh data by inspecting the updatedAt and * answeredInRound return values. * Note that different underlying implementations of AggregatorV3Interface * have slightly different semantics for some of the return values. Consumers * should determine what implementations they expect to receive * data from and validate that they can properly handle return data from all * of them. * @param _roundId the round ID to retrieve the round data for * @return roundId is the round ID from the aggregator for which the data was * retrieved combined with a phase to ensure that round IDs get larger as * time moves forward. * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. * (Only some AggregatorV3Interface implementations return meaningful values) * @dev Note that answer and updatedAt may change between queries. */ function getRoundData( uint80 _roundId ) public view override checkAccess returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { return super.getRoundData(_roundId); } /** * @notice get data about the latest round. Consumers are encouraged to check * that they're receiving fresh data by inspecting the updatedAt and * answeredInRound return values. * Note that different underlying implementations of AggregatorV3Interface * have slightly different semantics for some of the return values. Consumers * should determine what implementations they expect to receive * data from and validate that they can properly handle return data from all * of them. * @return roundId is the round ID from the aggregator for which the data was * retrieved combined with a phase to ensure that round IDs get larger as * time moves forward. * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. * (Only some AggregatorV3Interface implementations return meaningful values) * @dev Note that answer and updatedAt may change between queries. */ function latestRoundData() public view override checkAccess returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { return super.latestRoundData(); } /** * @notice Used if an aggregator contract has been proposed. * @param _roundId the round ID to retrieve the round data for * @return roundId is the round ID for which data was retrieved * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. */ function proposedGetRoundData( uint80 _roundId ) public view override checkAccess hasProposal returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { return super.proposedGetRoundData(_roundId); } /** * @notice Used if an aggregator contract has been proposed. * @return roundId is the round ID for which data was retrieved * @return answer is the answer for the given round * @return startedAt is the timestamp when the round was started. * (Only some AggregatorV3Interface implementations return meaningful values) * @return updatedAt is the timestamp when the round last was updated (i.e. * answer was last computed) * @return answeredInRound is the round ID of the round in which the answer * was computed. */ function proposedLatestRoundData() public view override checkAccess hasProposal returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { return super.proposedLatestRoundData(); } /** * @dev reverts if the caller does not have access by the accessController * contract or is the contract itself. */ modifier checkAccess() { AccessControllerInterface ac = accessController; require(address(ac) == address(0) || ac.hasAccess(msg.sender, msg.data), "No access"); _; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract AccessControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"confirmAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"phaseAggregators","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phaseId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"name":"proposeAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedAggregator","outputs":[{"internalType":"contract AggregatorV2V3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"proposedGetRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedLatestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_accessController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001b5738038062001b5783398101604081905262000034916200017d565b600080546001600160a01b0319163317905581620000528162000066565b506200005e81620000df565b5050620001e6565b6002546000906200007d9061ffff166001620001b5565b60408051808201825261ffff9092168083526001600160a01b039094166020928301819052600280546201000083026001600160b01b031990911687171790556000948552600490925290922080546001600160a01b03191690921790915550565b6000546001600160a01b031633146200013e5760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b03811681146200017857600080fd5b919050565b600080604083850312156200019157600080fd5b6200019c8362000160565b9150620001ac6020840162000160565b90509250929050565b61ffff818116838216019080821115620001df57634e487b7160e01b600052601160045260246000fd5b5092915050565b61196180620001f66000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638f6b4d91116100c3578063bc43cbaf1161007c578063bc43cbaf146102c0578063c1597304146102d3578063e8c4be30146102fc578063f2fde38b1461030f578063f8a2abd314610322578063feaf968c1461033557600080fd5b80638f6b4d911461025957806392eefe9b146102615780639a6fc8f514610274578063a928c09614610287578063b5ab58dc1461029a578063b633620c146102ad57600080fd5b80636001ac53116101155780636001ac53146101d0578063668a0f02146102175780637284e4161461021f57806379ba5097146102345780638205bf6a1461023e5780638da5cb5b1461024657600080fd5b8063245a7bfc14610152578063313ce5671461018257806350d25bcd1461019c57806354fd4d50146101b257806358303b10146101ba575b600080fd5b6002546201000090046001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61018a61033d565b60405160ff9091168152602001610179565b6101a46103be565b604051908152602001610179565b6101a461047a565b60025460405161ffff9091168152602001610179565b6101e36101de3660046114c0565b6104f6565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610179565b6101a46105e7565b610227610694565b6040516101799190611501565b61023c610714565b005b6101a46107be565b600054610165906001600160a01b031681565b6101e361086b565b61023c61026f366004611534565b61095a565b6101e36102823660046114c0565b6109a6565b61023c610295366004611534565b610a5c565b6101a46102a836600461155d565b610aff565b6101a46102bb36600461155d565b610bb4565b600554610165906001600160a01b031681565b6101656102e1366004611576565b6004602052600090815260409020546001600160a01b031681565b600354610165906001600160a01b031681565b61023c61031d366004611534565b610c62565b61023c610330366004611534565b610cdd565b6101e3610d29565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b9919061159a565b905090565b6005546000906001600160a01b03168015806104475750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061040690339060009036906004016115bd565b602060405180830381865afa158015610423573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044791906115fd565b61046c5760405162461bcd60e51b81526004016104639061161f565b60405180910390fd5b610474610dde565b91505090565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190611642565b60055460009081908190819081906001600160a01b03168015806105875750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061054690339060009036906004016115bd565b602060405180830381865afa158015610563573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058791906115fd565b6105a35760405162461bcd60e51b81526004016104639061161f565b6003546001600160a01b03166105cb5760405162461bcd60e51b81526004016104639061165b565b6105d487610e36565b939b929a50909850965090945092505050565b6005546000906001600160a01b03168015806106705750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061062f90339060009036906004016115bd565b602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906115fd565b61068c5760405162461bcd60e51b81526004016104639061161f565b610474610ef0565b6060600260000160029054906101000a90046001600160a01b03166001600160a01b0316637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b991908101906116a8565b6001546001600160a01b031633146107675760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610463565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6005546000906001600160a01b03168015806108475750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061080690339060009036906004016115bd565b602060405180830381865afa158015610823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906115fd565b6108635760405162461bcd60e51b81526004016104639061161f565b610474610f90565b60055460009081908190819081906001600160a01b03168015806108fc5750604051630d629b5f60e31b81526001600160a01b03821690636b14daf8906108bb90339060009036906004016115bd565b602060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc91906115fd565b6109185760405162461bcd60e51b81526004016104639061161f565b6003546001600160a01b03166109405760405162461bcd60e51b81526004016104639061165b565b610948610fe8565b95509550955095509550509091929394565b6000546001600160a01b031633146109845760405162461bcd60e51b815260040161046390611755565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60055460009081908190819081906001600160a01b0316801580610a375750604051630d629b5f60e31b81526001600160a01b03821690636b14daf8906109f690339060009036906004016115bd565b602060405180830381865afa158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3791906115fd565b610a535760405162461bcd60e51b81526004016104639061161f565b6105d4876110a3565b6000546001600160a01b03163314610a865760405162461bcd60e51b815260040161046390611755565b6003546001600160a01b03828116911614610ae35760405162461bcd60e51b815260206004820152601b60248201527f496e76616c69642070726f706f7365642061676772656761746f7200000000006044820152606401610463565b600380546001600160a01b0319169055610afc8161118d565b50565b6005546000906001600160a01b0316801580610b885750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610b4790339060009036906004016115bd565b602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8891906115fd565b610ba45760405162461bcd60e51b81526004016104639061161f565b610bad83611204565b9392505050565b6005546000906001600160a01b0316801580610c3d5750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610bfc90339060009036906004016115bd565b602060405180830381865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d91906115fd565b610c595760405162461bcd60e51b81526004016104639061161f565b610bad836112e6565b6000546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161046390611755565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000546001600160a01b03163314610d075760405162461bcd60e51b815260040161046390611755565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60055460009081908190819081906001600160a01b0316801580610dba5750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610d7990339060009036906004016115bd565b602060405180830381865afa158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba91906115fd565b610dd65760405162461bcd60e51b81526004016104639061161f565b610948611382565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d6000803e3d6000fd5b60035460009081908190819081906001600160a01b0316610e695760405162461bcd60e51b81526004016104639061165b565b600354604051639a6fc8f560e01b81526001600160501b03881660048201526001600160a01b0390911690639a6fc8f59060240160a060405180830381865afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190611785565b939a9299509097509550909350915050565b60408051808201825260025461ffff8116808352620100009091046001600160a01b031660208084018290528451633345078160e11b81529451600095610f8194939263668a0f02926004808401938290030181865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611642565b611451565b6001600160501b031691505090565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b0316638205bf6a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d6000803e3d6000fd5b60035460009081908190819081906001600160a01b031661101b5760405162461bcd60e51b81526004016104639061165b565b600360009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190611785565b945094509450945094509091929394565b60008060008060008060006110c3886001600160501b0316604081901c91565b61ffff82166000908152600460208190526040808320549051639a6fc8f560e01b815267ffffffffffffffff8516928101929092529395509193509182918291829182916001600160a01b031690639a6fc8f59060240160a060405180830381865afa158015611137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115b9190611785565b9450945094509450945061117385858585858c611475565b9b509b509b509b509b505050505050505091939590929450565b6002546000906111a29061ffff1660016117f3565b60408051808201825261ffff9092168083526001600160a01b039094166020928301819052600280546201000083026001600160b01b031990911687171790556000948552600490925290922080546001600160a01b03191690921790915550565b6000600161121460106040611815565b61121f90600261190c565b6112299190611918565b82111561123857506000919050565b61ffff604083811c91821660009081526004602052205483906001600160a01b03168061126a57506000949350505050565b604051632d6ad63760e21b815267ffffffffffffffff831660048201526001600160a01b0382169063b5ab58dc906024015b602060405180830381865afa1580156112b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dd9190611642565b95945050505050565b600060016112f660106040611815565b61130190600261190c565b61130b9190611918565b82111561131a57506000919050565b61ffff604083811c91821660009081526004602052205483906001600160a01b03168061134c57506000949350505050565b604051632d8cd88360e21b815267ffffffffffffffff831660048201526001600160a01b0382169063b633620c9060240161129c565b60408051808201825260025461ffff811682526201000090046001600160a01b0316602082018190528251633fabe5a360e21b81529251600093849384938493849384928392839283928392909163feaf968c9160048083019260a09291908290030181865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141e9190611785565b9450945094509450945061143a85858585858b60000151611475565b9a509a509a509a509a505050505050509091929394565b69ffff0000000000000000604083901b1667ffffffffffffffff8216175b92915050565b6000806000806000611487868c611451565b8a8a8a6114948a8c611451565b939f929e50909c509a509098509650505050505050565b6001600160501b0381168114610afc57600080fd5b6000602082840312156114d257600080fd5b8135610bad816114ab565b60005b838110156114f85781810151838201526020016114e0565b50506000910152565b60208152600082518060208401526115208160408501602087016114dd565b601f01601f19169190910160400192915050565b60006020828403121561154657600080fd5b81356001600160a01b0381168114610bad57600080fd5b60006020828403121561156f57600080fd5b5035919050565b60006020828403121561158857600080fd5b813561ffff81168114610bad57600080fd5b6000602082840312156115ac57600080fd5b815160ff81168114610bad57600080fd5b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561160f57600080fd5b81518015158114610bad57600080fd5b6020808252600990820152684e6f2061636365737360b81b604082015260600190565b60006020828403121561165457600080fd5b5051919050565b6020808252601e908201527f4e6f2070726f706f7365642061676772656761746f722070726573656e740000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156116ba57600080fd5b815167ffffffffffffffff808211156116d257600080fd5b818401915084601f8301126116e657600080fd5b8151818111156116f8576116f8611692565b604051601f8201601f19908116603f0116810190838211818310171561172057611720611692565b8160405282815287602084870101111561173957600080fd5b61174a8360208301602088016114dd565b979650505050505050565b60208082526016908201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b604082015260600190565b600080600080600060a0868803121561179d57600080fd5b85516117a8816114ab565b8095505060208601519350604086015192506060860151915060808601516117cf816114ab565b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111561180e5761180e6117dd565b5092915050565b8082018082111561146f5761146f6117dd565b600181815b80851115611863578160001904821115611849576118496117dd565b8085161561185657918102915b93841c939080029061182d565b509250929050565b60008261187a5750600161146f565b816118875750600061146f565b816001811461189d57600281146118a7576118c3565b600191505061146f565b60ff8411156118b8576118b86117dd565b50506001821b61146f565b5060208310610133831016604e8410600b84101617156118e6575081810a61146f565b6118f08383611828565b8060001904821115611904576119046117dd565b029392505050565b6000610bad838361186b565b8181038181111561146f5761146f6117dd56fea26469706673582212205172aa012caed3b1e450724f492a510f32f6922b5e6b4b9a3cc6ec0b11f88cb364736f6c634300081200330000000000000000000000006ceddda9a5ebbf987ea7db6bbcf39b23a5d158670000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638f6b4d91116100c3578063bc43cbaf1161007c578063bc43cbaf146102c0578063c1597304146102d3578063e8c4be30146102fc578063f2fde38b1461030f578063f8a2abd314610322578063feaf968c1461033557600080fd5b80638f6b4d911461025957806392eefe9b146102615780639a6fc8f514610274578063a928c09614610287578063b5ab58dc1461029a578063b633620c146102ad57600080fd5b80636001ac53116101155780636001ac53146101d0578063668a0f02146102175780637284e4161461021f57806379ba5097146102345780638205bf6a1461023e5780638da5cb5b1461024657600080fd5b8063245a7bfc14610152578063313ce5671461018257806350d25bcd1461019c57806354fd4d50146101b257806358303b10146101ba575b600080fd5b6002546201000090046001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61018a61033d565b60405160ff9091168152602001610179565b6101a46103be565b604051908152602001610179565b6101a461047a565b60025460405161ffff9091168152602001610179565b6101e36101de3660046114c0565b6104f6565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610179565b6101a46105e7565b610227610694565b6040516101799190611501565b61023c610714565b005b6101a46107be565b600054610165906001600160a01b031681565b6101e361086b565b61023c61026f366004611534565b61095a565b6101e36102823660046114c0565b6109a6565b61023c610295366004611534565b610a5c565b6101a46102a836600461155d565b610aff565b6101a46102bb36600461155d565b610bb4565b600554610165906001600160a01b031681565b6101656102e1366004611576565b6004602052600090815260409020546001600160a01b031681565b600354610165906001600160a01b031681565b61023c61031d366004611534565b610c62565b61023c610330366004611534565b610cdd565b6101e3610d29565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b9919061159a565b905090565b6005546000906001600160a01b03168015806104475750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061040690339060009036906004016115bd565b602060405180830381865afa158015610423573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044791906115fd565b61046c5760405162461bcd60e51b81526004016104639061161f565b60405180910390fd5b610474610dde565b91505090565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190611642565b60055460009081908190819081906001600160a01b03168015806105875750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061054690339060009036906004016115bd565b602060405180830381865afa158015610563573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058791906115fd565b6105a35760405162461bcd60e51b81526004016104639061161f565b6003546001600160a01b03166105cb5760405162461bcd60e51b81526004016104639061165b565b6105d487610e36565b939b929a50909850965090945092505050565b6005546000906001600160a01b03168015806106705750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061062f90339060009036906004016115bd565b602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906115fd565b61068c5760405162461bcd60e51b81526004016104639061161f565b610474610ef0565b6060600260000160029054906101000a90046001600160a01b03166001600160a01b0316637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b991908101906116a8565b6001546001600160a01b031633146107675760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610463565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6005546000906001600160a01b03168015806108475750604051630d629b5f60e31b81526001600160a01b03821690636b14daf89061080690339060009036906004016115bd565b602060405180830381865afa158015610823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906115fd565b6108635760405162461bcd60e51b81526004016104639061161f565b610474610f90565b60055460009081908190819081906001600160a01b03168015806108fc5750604051630d629b5f60e31b81526001600160a01b03821690636b14daf8906108bb90339060009036906004016115bd565b602060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc91906115fd565b6109185760405162461bcd60e51b81526004016104639061161f565b6003546001600160a01b03166109405760405162461bcd60e51b81526004016104639061165b565b610948610fe8565b95509550955095509550509091929394565b6000546001600160a01b031633146109845760405162461bcd60e51b815260040161046390611755565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60055460009081908190819081906001600160a01b0316801580610a375750604051630d629b5f60e31b81526001600160a01b03821690636b14daf8906109f690339060009036906004016115bd565b602060405180830381865afa158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3791906115fd565b610a535760405162461bcd60e51b81526004016104639061161f565b6105d4876110a3565b6000546001600160a01b03163314610a865760405162461bcd60e51b815260040161046390611755565b6003546001600160a01b03828116911614610ae35760405162461bcd60e51b815260206004820152601b60248201527f496e76616c69642070726f706f7365642061676772656761746f7200000000006044820152606401610463565b600380546001600160a01b0319169055610afc8161118d565b50565b6005546000906001600160a01b0316801580610b885750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610b4790339060009036906004016115bd565b602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8891906115fd565b610ba45760405162461bcd60e51b81526004016104639061161f565b610bad83611204565b9392505050565b6005546000906001600160a01b0316801580610c3d5750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610bfc90339060009036906004016115bd565b602060405180830381865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d91906115fd565b610c595760405162461bcd60e51b81526004016104639061161f565b610bad836112e6565b6000546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161046390611755565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000546001600160a01b03163314610d075760405162461bcd60e51b815260040161046390611755565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60055460009081908190819081906001600160a01b0316801580610dba5750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610d7990339060009036906004016115bd565b602060405180830381865afa158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba91906115fd565b610dd65760405162461bcd60e51b81526004016104639061161f565b610948611382565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d6000803e3d6000fd5b60035460009081908190819081906001600160a01b0316610e695760405162461bcd60e51b81526004016104639061165b565b600354604051639a6fc8f560e01b81526001600160501b03881660048201526001600160a01b0390911690639a6fc8f59060240160a060405180830381865afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190611785565b939a9299509097509550909350915050565b60408051808201825260025461ffff8116808352620100009091046001600160a01b031660208084018290528451633345078160e11b81529451600095610f8194939263668a0f02926004808401938290030181865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611642565b611451565b6001600160501b031691505090565b6000600260000160029054906101000a90046001600160a01b03166001600160a01b0316638205bf6a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d6000803e3d6000fd5b60035460009081908190819081906001600160a01b031661101b5760405162461bcd60e51b81526004016104639061165b565b600360009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190611785565b945094509450945094509091929394565b60008060008060008060006110c3886001600160501b0316604081901c91565b61ffff82166000908152600460208190526040808320549051639a6fc8f560e01b815267ffffffffffffffff8516928101929092529395509193509182918291829182916001600160a01b031690639a6fc8f59060240160a060405180830381865afa158015611137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115b9190611785565b9450945094509450945061117385858585858c611475565b9b509b509b509b509b505050505050505091939590929450565b6002546000906111a29061ffff1660016117f3565b60408051808201825261ffff9092168083526001600160a01b039094166020928301819052600280546201000083026001600160b01b031990911687171790556000948552600490925290922080546001600160a01b03191690921790915550565b6000600161121460106040611815565b61121f90600261190c565b6112299190611918565b82111561123857506000919050565b61ffff604083811c91821660009081526004602052205483906001600160a01b03168061126a57506000949350505050565b604051632d6ad63760e21b815267ffffffffffffffff831660048201526001600160a01b0382169063b5ab58dc906024015b602060405180830381865afa1580156112b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dd9190611642565b95945050505050565b600060016112f660106040611815565b61130190600261190c565b61130b9190611918565b82111561131a57506000919050565b61ffff604083811c91821660009081526004602052205483906001600160a01b03168061134c57506000949350505050565b604051632d8cd88360e21b815267ffffffffffffffff831660048201526001600160a01b0382169063b633620c9060240161129c565b60408051808201825260025461ffff811682526201000090046001600160a01b0316602082018190528251633fabe5a360e21b81529251600093849384938493849384928392839283928392909163feaf968c9160048083019260a09291908290030181865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141e9190611785565b9450945094509450945061143a85858585858b60000151611475565b9a509a509a509a509a505050505050509091929394565b69ffff0000000000000000604083901b1667ffffffffffffffff8216175b92915050565b6000806000806000611487868c611451565b8a8a8a6114948a8c611451565b939f929e50909c509a509098509650505050505050565b6001600160501b0381168114610afc57600080fd5b6000602082840312156114d257600080fd5b8135610bad816114ab565b60005b838110156114f85781810151838201526020016114e0565b50506000910152565b60208152600082518060208401526115208160408501602087016114dd565b601f01601f19169190910160400192915050565b60006020828403121561154657600080fd5b81356001600160a01b0381168114610bad57600080fd5b60006020828403121561156f57600080fd5b5035919050565b60006020828403121561158857600080fd5b813561ffff81168114610bad57600080fd5b6000602082840312156115ac57600080fd5b815160ff81168114610bad57600080fd5b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561160f57600080fd5b81518015158114610bad57600080fd5b6020808252600990820152684e6f2061636365737360b81b604082015260600190565b60006020828403121561165457600080fd5b5051919050565b6020808252601e908201527f4e6f2070726f706f7365642061676772656761746f722070726573656e740000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156116ba57600080fd5b815167ffffffffffffffff808211156116d257600080fd5b818401915084601f8301126116e657600080fd5b8151818111156116f8576116f8611692565b604051601f8201601f19908116603f0116810190838211818310171561172057611720611692565b8160405282815287602084870101111561173957600080fd5b61174a8360208301602088016114dd565b979650505050505050565b60208082526016908201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b604082015260600190565b600080600080600060a0868803121561179d57600080fd5b85516117a8816114ab565b8095505060208601519350604086015192506060860151915060808601516117cf816114ab565b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111561180e5761180e6117dd565b5092915050565b8082018082111561146f5761146f6117dd565b600181815b80851115611863578160001904821115611849576118496117dd565b8085161561185657918102915b93841c939080029061182d565b509250929050565b60008261187a5750600161146f565b816118875750600061146f565b816001811461189d57600281146118a7576118c3565b600191505061146f565b60ff8411156118b8576118b86117dd565b50506001821b61146f565b5060208310610133831016604e8410600b84101617156118e6575081810a61146f565b6118f08383611828565b8060001904821115611904576119046117dd565b029392505050565b6000610bad838361186b565b8181038181111561146f5761146f6117dd56fea26469706673582212205172aa012caed3b1e450724f492a510f32f6922b5e6b4b9a3cc6ec0b11f88cb364736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006ceddda9a5ebbf987ea7db6bbcf39b23a5d158670000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _aggregator (address): 0x6CeDDDA9a5EBbF987Ea7dB6BbCF39b23A5D15867
Arg [1] : _accessController (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006ceddda9a5ebbf987ea7db6bbcf39b23a5d15867
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
16975:9316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13169:112;13249:12;:23;;;;-1:-1:-1;;;;;13249:23:0;13169:112;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;13169:112:0;;;;;;;;13558:119;;;:::i;:::-;;;394:4:1;382:17;;;364:36;;352:2;337:18;13558:119:0;222:184:1;18052:120:0;;;:::i;:::-;;;555:25:1;;;543:2;528:18;18052:120:0;411:175:1;13803:119:0;;;:::i;13355:91::-;13423:12;:15;13355:91;;13423:15;;;;917:38:1;;905:2;890:18;13355:91:0;773:188:1;24722:331:0;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1666:15:1;;;1648:34;;1713:2;1698:18;;1691:34;;;;1741:18;;1734:34;;;;1799:2;1784:18;;1777:34;1848:15;;;1842:3;1827:19;;1820:44;1594:3;1579:19;24722:331:0;1354:516:1;20677:119:0;;;:::i;14027:133::-;;;:::i;:::-;;;;;;;:::i;812:278::-;;;:::i;:::-;;18725:127;;;:::i;156:20::-;;;;;-1:-1:-1;;;;;156:20:0;;;25643:298;;;:::i;17425:149::-;;;;;;:::i;:::-;;:::i;22182:294::-;;;;;;:::i;:::-;;:::i;14769:241::-;;;;;;:::i;:::-;;:::i;19362:138::-;;;;;;:::i;:::-;;:::i;20049:145::-;;;;;;:::i;:::-;;:::i;17029:49::-;;;;;-1:-1:-1;;;;;17029:49:0;;;3290:66;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3290:66:0;;;3234:49;;;;;-1:-1:-1;;;;;3234:49:0;;;558:152;;;;;;:::i;:::-;;:::i;14334:143::-;;;;;;:::i;:::-;;:::i;23803:261::-;;;:::i;13558:119::-;13610:5;13635:12;:23;;;;;;;;;;-1:-1:-1;;;;;13635:23:0;-1:-1:-1;;;;;13635:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13628:41;;13558:119;:::o;18052:120::-;26156:16;;18118:6;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;;;;;;;;;18144:20:::1;:18;:20::i;:::-;18137:27;;26114:174:::0;18052:120;:::o;13803:119::-;13854:7;13881:12;:23;;;;;;;;;;-1:-1:-1;;;;;13881:23:0;-1:-1:-1;;;;;13881:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24722:331::-;26156:16;;24893:14;;;;;;;;;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;16297:18:::1;::::0;-1:-1:-1;;;;;16297:18:0::1;16281:84;;;;-1:-1:-1::0;;;16281:84:0::1;;;;;;;:::i;:::-;25009:36:::2;25036:8;25009:26;:36::i;:::-;25002:43:::0;;;;-1:-1:-1;25002:43:0;;-1:-1:-1;25002:43:0;-1:-1:-1;25002:43:0;;-1:-1:-1;24722:331:0;-1:-1:-1;;;24722:331:0:o;20677:119::-;26156:16;;20742:7;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;20769:19:::1;:17;:19::i;14027:133::-:0;14082:13;14115:12;:23;;;;;;;;;;-1:-1:-1;;;;;14115:23:0;-1:-1:-1;;;;;14115:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14115:37:0;;;;;;;;;;;;:::i;812:278::-;881:12;;-1:-1:-1;;;;;881:12:0;867:10;:26;859:61;;;;-1:-1:-1;;;859:61:0;;6935:2:1;859:61:0;;;6917:21:1;6974:2;6954:18;;;6947:30;-1:-1:-1;;;6993:18:1;;;6986:52;7055:18;;859:61:0;6733:346:1;859:61:0;933:16;952:5;;976:10;-1:-1:-1;;;;;;968:18:0;;;;;;;-1:-1:-1;997:25:0;;;;;;;1040:42;;-1:-1:-1;;;;;952:5:0;;;;976:10;;952:5;;1040:42;;;848:242;812:278::o;18725:127::-;26156:16;;18794:7;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;18821:23:::1;:21;:23::i;25643:298::-:0;26156:16;;25786:14;;;;;;;;;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;16297:18:::1;::::0;-1:-1:-1;;;;;16297:18:0::1;16281:84;;;;-1:-1:-1::0;;;16281:84:0::1;;;;;;;:::i;:::-;25902:31:::2;:29;:31::i;:::-;25895:38;;;;;;;;;;26114:174:::0;25643:298;;;;;:::o;17425:149::-;1242:5;;-1:-1:-1;;;;;1242:5:0;1228:10;:19;1220:54;;;;-1:-1:-1;;;1220:54:0;;;;;;;:::i;:::-;17503:16:::1;:63:::0;;-1:-1:-1;;;;;;17503:63:0::1;-1:-1:-1::0;;;;;17503:63:0;;;::::1;::::0;;;::::1;::::0;;17425:149::o;22182:294::-;26156:16;;22324:14;;;;;;;;;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;22440:28:::1;22459:8;22440:18;:28::i;14769:241::-:0;1242:5;;-1:-1:-1;;;;;1242:5:0;1228:10;:19;1220:54;;;;-1:-1:-1;;;1220:54:0;;;;;;;:::i;:::-;14878:18:::1;::::0;-1:-1:-1;;;;;14855:42:0;;::::1;14878:18:::0;::::1;14855:42;14847:82;;;::::0;-1:-1:-1;;;14847:82:0;;7637:2:1;14847:82:0::1;::::0;::::1;7619:21:1::0;7676:2;7656:18;;;7649:30;7715:29;7695:18;;;7688:57;7762:18;;14847:82:0::1;7435:351:1::0;14847:82:0::1;14947:18;14940:25:::0;;-1:-1:-1;;;;;;14940:25:0::1;::::0;;14976:26:::1;14990:11:::0;14976:13:::1;:26::i;:::-;14769:241:::0;:::o;19362:138::-;26156:16;;19441:6;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;19467:25:::1;19483:8;19467:15;:25::i;:::-;19460:32:::0;19362:138;-1:-1:-1;;;19362:138:0:o;20049:145::-;26156:16;;20131:7;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;20158:28:::1;20177:8;20158:18;:28::i;558:152::-:0;1242:5;;-1:-1:-1;;;;;1242:5:0;1228:10;:19;1220:54;;;;-1:-1:-1;;;1220:54:0;;;;;;;:::i;:::-;628:12:::1;:18:::0;;-1:-1:-1;;;;;;628:18:0::1;-1:-1:-1::0;;;;;628:18:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;691:5:0;;664:38:::1;::::0;628:18;;691:5:::1;::::0;664:38:::1;::::0;-1:-1:-1;664:38:0::1;558:152:::0;:::o;14334:143::-;1242:5;;-1:-1:-1;;;;;1242:5:0;1228:10;:19;1220:54;;;;-1:-1:-1;;;1220:54:0;;;;;;;:::i;:::-;14412:18:::1;:57:::0;;-1:-1:-1;;;;;;14412:57:0::1;-1:-1:-1::0;;;;;14412:57:0;;;::::1;::::0;;;::::1;::::0;;14334:143::o;23803:261::-;26156:16;;23917:14;;;;;;;;;;-1:-1:-1;;;;;26156:16:0;26191:25;;;:63;;-1:-1:-1;26220:34:0;;-1:-1:-1;;;26220:34:0;;-1:-1:-1;;;;;26220:12:0;;;;;:34;;26233:10;;26245:8;;;;26220:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26183:85;;;;-1:-1:-1;;;26183:85:0;;;;;;;:::i;:::-;24033:23:::1;:21;:23::i;4044:141::-:0;4106:13;4139:12;:23;;;;;;;;;;-1:-1:-1;;;;;4139:23:0;-1:-1:-1;;;;;4139:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11894:314;16297:18;;12043:14;;;;;;;;;;-1:-1:-1;;;;;16297:18:0;16281:84;;;;-1:-1:-1;;;16281:84:0;;;;;;;:::i;:::-;12159:18:::1;::::0;:41:::1;::::0;-1:-1:-1;;;12159:41:0;;-1:-1:-1;;;;;8141:35:1;;12159:41:0::1;::::0;::::1;8123:54:1::0;-1:-1:-1;;;;;12159:18:0;;::::1;::::0;:31:::1;::::0;8096:18:1;;12159:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12152:48:::0;;;;-1:-1:-1;12152:48:0;;-1:-1:-1;12152:48:0;-1:-1:-1;12152:48:0;;-1:-1:-1;11894:314:0;-1:-1:-1;;11894:314:0:o;7052:229::-;7141:33;;;;;;;;7162:12;7141:33;;;;;;;;;;;-1:-1:-1;;;;;7141:33:0;;;;;;;;7241:30;;-1:-1:-1;;;7241:30:0;;;;-1:-1:-1;;7215:58:0;;7141:33;;7241:28;;:30;;;;;;;;;;7141:33;7241:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7215:8;:58::i;:::-;-1:-1:-1;;;;;7208:65:0;;;;7052:229;:::o;4601:151::-;4666:17;4703:12;:23;;;;;;;;;;-1:-1:-1;;;;;4703:23:0;-1:-1:-1;;;;;4703:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12798:281;16297:18;;12919:14;;;;;;;;;;-1:-1:-1;;;;;16297:18:0;16281:84;;;;-1:-1:-1;;;16281:84:0;;;;;;;:::i;:::-;13035:18:::1;;;;;;;;;-1:-1:-1::0;;;;;13035:18:0::1;-1:-1:-1::0;;;;;13035:34:0::1;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13028:43;;;;;;;;;;12798:281:::0;;;;;:::o;8797:574::-;8935:14;8951:13;8966:17;8985;9004:22;9045:14;9061:24;9089:18;9098:8;-1:-1:-1;;;;;9089:18:0;3405:2;15591:24;;;;15481:245;9089:18;9206:25;;;9121:14;9206:25;;;:16;:25;;;;;;;;;:71;;-1:-1:-1;;;9206:71:0;;8932:18:1;8920:31;;9206:71:0;;;8902:50:1;;;;9206:25:0;;-1:-1:-1;9044:63:0;;-1:-1:-1;9121:14:0;;;;;;;;;-1:-1:-1;;;;;9206:25:0;;:52;;8875:18:1;;9206:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9120:157;;;;;;;;;;9297:66;9309:7;9318:6;9326:9;9337;9348:5;9355:7;9297:11;:66::i;:::-;9290:73;;;;;;;;;;;;;;;;;8797:574;;;;;;;:::o;15054:246::-;15130:12;:15;15118:9;;15130:19;;:15;;;:19;:::i;:::-;15175:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;15175:47:0;;;;;;;;;;15160:12;:62;;;;;-1:-1:-1;;;;;;15160:62:0;;;;;;;;-1:-1:-1;15233:20:0;;;:16;:20;;;;;;:59;;-1:-1:-1;;;;;;15233:59:0;;;;;;;-1:-1:-1;15054:246:0:o;5195:406::-;5270:13;3530:1;3501:25;3452:2;3405;3501:25;:::i;:::-;3495:32;;:1;:32;:::i;:::-;:36;;;;:::i;:::-;5300:8;:17;5296:31;;;-1:-1:-1;5326:1:0;;5195:406;-1:-1:-1;5195:406:0:o;5296:31::-;5451:25;3405:2;15591:24;;;5451:25;;;5341:14;5451:25;;;:16;:25;;;;15591:24;;-1:-1:-1;;;;;5451:25:0;;5487:47;;-1:-1:-1;5533:1:0;;5195:406;-1:-1:-1;;;;5195:406:0:o;5487:47::-;5554:39;;-1:-1:-1;;;5554:39:0;;8932:18:1;8920:31;;5554:39:0;;;8902:50:1;-1:-1:-1;;;;;5554:20:0;;;;;8875:18:1;;5554:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5547:46;5195:406;-1:-1:-1;;;;;5195:406:0:o;6083:416::-;6161:17;3530:1;3501:25;3452:2;3405;3501:25;:::i;:::-;3495:32;;:1;:32;:::i;:::-;:36;;;;:::i;:::-;6195:8;:17;6191:31;;;-1:-1:-1;6221:1:0;;6083:416;-1:-1:-1;6083:416:0:o;6191:31::-;6346:25;3405:2;15591:24;;;6346:25;;;6236:14;6346:25;;;:16;:25;;;;15591:24;;-1:-1:-1;;;;;6346:25:0;;6382:47;;-1:-1:-1;6428:1:0;;6083:416;-1:-1:-1;;;;6083:416:0:o;6382:47::-;6449:42;;-1:-1:-1;;;6449:42:0;;8932:18:1;8920:31;;6449:42:0;;;8902:50:1;-1:-1:-1;;;;;6449:23:0;;;;;8875:18:1;;6449:42:0;8758:200:1;10699:537:0;10918:35;;;;;;;;10941:12;10918:35;;;;;;;;;-1:-1:-1;;;;;10918:35:0;;;;;;;11075:64;;-1:-1:-1;;;11075:64:0;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;10918:35:0;;11075:62;;:64;;;;;;;;;;;;;;10918:35;11075:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10989:150;;;;;;;;;;11159:69;11171:7;11180:6;11188:9;11199;11210:5;11217:7;:10;;;11159:11;:69::i;:::-;11152:76;;;;;;;;;;;;;;;;10699:537;;;;;:::o;15308:165::-;15418:31;3405:2;15418:31;;;;15417:47;;;;15308:165;;;;;:::o;15734:468::-;15948:6;15956;15964:7;15973;15982:6;16023:34;16032:7;16048;16023:8;:34::i;:::-;16072:6;16093:9;16117;16141:42;16150:7;16166:15;16141:8;:42::i;:::-;16001:193;;;;-1:-1:-1;16001:193:0;;-1:-1:-1;16001:193:0;-1:-1:-1;16001:193:0;;-1:-1:-1;15734:468:0;-1:-1:-1;;;;;;;15734:468:0:o;966:133:1:-;-1:-1:-1;;;;;1044:5:1;1040:34;1033:5;1030:45;1020:73;;1089:1;1086;1079:12;1104:245;1162:6;1215:2;1203:9;1194:7;1190:23;1186:32;1183:52;;;1231:1;1228;1221:12;1183:52;1270:9;1257:23;1289:30;1313:5;1289:30;:::i;1875:250::-;1960:1;1970:113;1984:6;1981:1;1978:13;1970:113;;;2060:11;;;2054:18;2041:11;;;2034:39;2006:2;1999:10;1970:113;;;-1:-1:-1;;2117:1:1;2099:16;;2092:27;1875:250::o;2130:396::-;2279:2;2268:9;2261:21;2242:4;2311:6;2305:13;2354:6;2349:2;2338:9;2334:18;2327:34;2370:79;2442:6;2437:2;2426:9;2422:18;2417:2;2409:6;2405:15;2370:79;:::i;:::-;2510:2;2489:15;-1:-1:-1;;2485:29:1;2470:45;;;;2517:2;2466:54;;2130:396;-1:-1:-1;;2130:396:1:o;2531:286::-;2590:6;2643:2;2631:9;2622:7;2618:23;2614:32;2611:52;;;2659:1;2656;2649:12;2611:52;2685:23;;-1:-1:-1;;;;;2737:31:1;;2727:42;;2717:70;;2783:1;2780;2773:12;2822:180;2881:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:52;;;2950:1;2947;2940:12;2902:52;-1:-1:-1;2973:23:1;;2822:180;-1:-1:-1;2822:180:1:o;3248:272::-;3306:6;3359:2;3347:9;3338:7;3334:23;3330:32;3327:52;;;3375:1;3372;3365:12;3327:52;3414:9;3401:23;3464:6;3457:5;3453:18;3446:5;3443:29;3433:57;;3486:1;3483;3476:12;3764:273;3832:6;3885:2;3873:9;3864:7;3860:23;3856:32;3853:52;;;3901:1;3898;3891:12;3853:52;3933:9;3927:16;3983:4;3976:5;3972:16;3965:5;3962:27;3952:55;;4003:1;4000;3993:12;4042:485;-1:-1:-1;;;;;4227:32:1;;4209:51;;4296:2;4291;4276:18;;4269:30;;;4315:18;;4308:34;;;4335:6;4384;4379:2;4364:18;;4351:48;4448:1;4419:22;;;4443:2;4415:31;;;4408:42;;;;4511:2;4490:15;;;-1:-1:-1;;4486:29:1;4471:45;4467:54;;4042:485;-1:-1:-1;;4042:485:1:o;4532:277::-;4599:6;4652:2;4640:9;4631:7;4627:23;4623:32;4620:52;;;4668:1;4665;4658:12;4620:52;4700:9;4694:16;4753:5;4746:13;4739:21;4732:5;4729:32;4719:60;;4775:1;4772;4765:12;4814:332;5016:2;4998:21;;;5055:1;5035:18;;;5028:29;-1:-1:-1;;;5088:2:1;5073:18;;5066:39;5137:2;5122:18;;4814:332::o;5151:184::-;5221:6;5274:2;5262:9;5253:7;5249:23;5245:32;5242:52;;;5290:1;5287;5280:12;5242:52;-1:-1:-1;5313:16:1;;5151:184;-1:-1:-1;5151:184:1:o;5340:354::-;5542:2;5524:21;;;5581:2;5561:18;;;5554:30;5620:32;5615:2;5600:18;;5593:60;5685:2;5670:18;;5340:354::o;5699:127::-;5760:10;5755:3;5751:20;5748:1;5741:31;5791:4;5788:1;5781:15;5815:4;5812:1;5805:15;5831:897;5911:6;5964:2;5952:9;5943:7;5939:23;5935:32;5932:52;;;5980:1;5977;5970:12;5932:52;6013:9;6007:16;6042:18;6083:2;6075:6;6072:14;6069:34;;;6099:1;6096;6089:12;6069:34;6137:6;6126:9;6122:22;6112:32;;6182:7;6175:4;6171:2;6167:13;6163:27;6153:55;;6204:1;6201;6194:12;6153:55;6233:2;6227:9;6255:2;6251;6248:10;6245:36;;;6261:18;;:::i;:::-;6336:2;6330:9;6304:2;6390:13;;-1:-1:-1;;6386:22:1;;;6410:2;6382:31;6378:40;6366:53;;;6434:18;;;6454:22;;;6431:46;6428:72;;;6480:18;;:::i;:::-;6520:10;6516:2;6509:22;6555:2;6547:6;6540:18;6595:7;6590:2;6585;6581;6577:11;6573:20;6570:33;6567:53;;;6616:1;6613;6606:12;6567:53;6629:68;6694:2;6689;6681:6;6677:15;6672:2;6668;6664:11;6629:68;:::i;:::-;6716:6;5831:897;-1:-1:-1;;;;;;;5831:897:1:o;7084:346::-;7286:2;7268:21;;;7325:2;7305:18;;;7298:30;-1:-1:-1;;;7359:2:1;7344:18;;7337:52;7421:2;7406:18;;7084:346::o;8188:565::-;8291:6;8299;8307;8315;8323;8376:3;8364:9;8355:7;8351:23;8347:33;8344:53;;;8393:1;8390;8383:12;8344:53;8425:9;8419:16;8444:30;8468:5;8444:30;:::i;:::-;8493:5;8483:15;;;8538:2;8527:9;8523:18;8517:25;8507:35;;8582:2;8571:9;8567:18;8561:25;8551:35;;8626:2;8615:9;8611:18;8605:25;8595:35;;8675:3;8664:9;8660:19;8654:26;8689:32;8713:7;8689:32;:::i;:::-;8740:7;8730:17;;;8188:565;;;;;;;;:::o;8963:127::-;9024:10;9019:3;9015:20;9012:1;9005:31;9055:4;9052:1;9045:15;9079:4;9076:1;9069:15;9095:168;9162:6;9188:10;;;9200;;;9184:27;;9223:11;;;9220:37;;;9237:18;;:::i;:::-;9220:37;9095:168;;;;:::o;9268:125::-;9333:9;;;9354:10;;;9351:36;;;9367:18;;:::i;9398:422::-;9487:1;9530:5;9487:1;9544:270;9565:7;9555:8;9552:21;9544:270;;;9624:4;9620:1;9616:6;9612:17;9606:4;9603:27;9600:53;;;9633:18;;:::i;:::-;9683:7;9673:8;9669:22;9666:55;;;9703:16;;;;9666:55;9782:22;;;;9742:15;;;;9544:270;;;9548:3;9398:422;;;;;:::o;9825:806::-;9874:5;9904:8;9894:80;;-1:-1:-1;9945:1:1;9959:5;;9894:80;9993:4;9983:76;;-1:-1:-1;10030:1:1;10044:5;;9983:76;10075:4;10093:1;10088:59;;;;10161:1;10156:130;;;;10068:218;;10088:59;10118:1;10109:10;;10132:5;;;10156:130;10193:3;10183:8;10180:17;10177:43;;;10200:18;;:::i;:::-;-1:-1:-1;;10256:1:1;10242:16;;10271:5;;10068:218;;10370:2;10360:8;10357:16;10351:3;10345:4;10342:13;10338:36;10332:2;10322:8;10319:16;10314:2;10308:4;10305:12;10301:35;10298:77;10295:159;;;-1:-1:-1;10407:19:1;;;10439:5;;10295:159;10486:34;10511:8;10505:4;10486:34;:::i;:::-;10556:6;10552:1;10548:6;10544:19;10535:7;10532:32;10529:58;;;10567:18;;:::i;:::-;10605:20;;9825:806;-1:-1:-1;;;9825:806:1:o;10636:131::-;10696:5;10725:36;10752:8;10746:4;10725:36;:::i;10772:128::-;10839:9;;;10860:11;;;10857:37;;;10874:18;;:::i
Swarm Source
ipfs://5172aa012caed3b1e450724f492a510f32f6922b5e6b4b9a3cc6ec0b11f88cb3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
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.