Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- OlympusAuthority
- Optimization enabled
- false
- Compiler version
- v0.7.5+commit.eb77ed08
- EVM Version
- istanbul
- Verified at
- 2026-02-25T19:20:16.894203Z
Constructor Arguments
000000000000000000000000245cc372c84b3645bf0ffe6538620b04a217988b000000000000000000000000245cc372c84b3645bf0ffe6538620b04a217988b0000000000000000000000000cf30dc0d48604a301df8010cdc028c055336b2e000000000000000000000000245cc372c84b3645bf0ffe6538620b04a217988b
Arg [0] (address) : 0x245cc372c84b3645bf0ffe6538620b04a217988b
Arg [1] (address) : 0x245cc372c84b3645bf0ffe6538620b04a217988b
Arg [2] (address) : 0x0cf30dc0d48604a301df8010cdc028c055336b2e
Arg [3] (address) : 0x245cc372c84b3645bf0ffe6538620b04a217988b
authority_flat.sol
// SPDX-License-Identifier: AGPL-3.0-only
// File: interfaces/IOlympusAuthority.sol
pragma solidity =0.7.5;
interface IOlympusAuthority {
/* ========== EVENTS ========== */
event GovernorPushed(address indexed from, address indexed to, bool _effectiveImmediately);
event GuardianPushed(address indexed from, address indexed to, bool _effectiveImmediately);
event PolicyPushed(address indexed from, address indexed to, bool _effectiveImmediately);
event VaultPushed(address indexed from, address indexed to, bool _effectiveImmediately);
event GovernorPulled(address indexed from, address indexed to);
event GuardianPulled(address indexed from, address indexed to);
event PolicyPulled(address indexed from, address indexed to);
event VaultPulled(address indexed from, address indexed to);
/* ========== VIEW ========== */
function governor() external view returns (address);
function guardian() external view returns (address);
function policy() external view returns (address);
function vault() external view returns (address);
}
// File: types/OlympusAccessControlled.sol
pragma solidity >=0.7.5;
abstract contract OlympusAccessControlled {
/* ========== EVENTS ========== */
event AuthorityUpdated(IOlympusAuthority indexed authority);
string UNAUTHORIZED = "UNAUTHORIZED"; // save gas
/* ========== STATE VARIABLES ========== */
IOlympusAuthority public authority;
/* ========== Constructor ========== */
constructor(IOlympusAuthority _authority) {
authority = _authority;
emit AuthorityUpdated(_authority);
}
/* ========== MODIFIERS ========== */
modifier onlyGovernor() {
require(msg.sender == authority.governor(), UNAUTHORIZED);
_;
}
modifier onlyGuardian() {
require(msg.sender == authority.guardian(), UNAUTHORIZED);
_;
}
modifier onlyPolicy() {
require(msg.sender == authority.policy(), UNAUTHORIZED);
_;
}
modifier onlyVault() {
require(msg.sender == authority.vault(), UNAUTHORIZED);
_;
}
/* ========== GOV ONLY ========== */
function setAuthority(IOlympusAuthority _newAuthority) external onlyGovernor {
authority = _newAuthority;
emit AuthorityUpdated(_newAuthority);
}
}
// File: authority.sol
pragma solidity >=0.7.5;
contract OlympusAuthority is IOlympusAuthority, OlympusAccessControlled {
/* ========== STATE VARIABLES ========== */
address public override governor;
address public override guardian;
address public override policy;
address public override vault;
address public newGovernor;
address public newGuardian;
address public newPolicy;
address public newVault;
/* ========== Constructor ========== */
constructor(
address _governor,
address _guardian,
address _policy,
address _vault
) OlympusAccessControlled( IOlympusAuthority(address(this)) ) {
governor = _governor;
emit GovernorPushed(address(0), governor, true);
guardian = _guardian;
emit GuardianPushed(address(0), guardian, true);
policy = _policy;
emit PolicyPushed(address(0), policy, true);
vault = _vault;
emit VaultPushed(address(0), vault, true);
}
/* ========== GOV ONLY ========== */
function pushGovernor(address _newGovernor, bool _effectiveImmediately) external onlyGovernor {
if( _effectiveImmediately ) governor = _newGovernor;
newGovernor = _newGovernor;
emit GovernorPushed(governor, newGovernor, _effectiveImmediately);
}
function pushGuardian(address _newGuardian, bool _effectiveImmediately) external onlyGovernor {
if( _effectiveImmediately ) guardian = _newGuardian;
newGuardian = _newGuardian;
emit GuardianPushed(guardian, newGuardian, _effectiveImmediately);
}
function pushPolicy(address _newPolicy, bool _effectiveImmediately) external onlyGovernor {
if( _effectiveImmediately ) policy = _newPolicy;
newPolicy = _newPolicy;
emit PolicyPushed(policy, newPolicy, _effectiveImmediately);
}
function pushVault(address _newVault, bool _effectiveImmediately) external onlyGovernor {
if( _effectiveImmediately ) vault = _newVault;
newVault = _newVault;
emit VaultPushed(vault, newVault, _effectiveImmediately);
}
/* ========== PENDING ROLE ONLY ========== */
function pullGovernor() external {
require(msg.sender == newGovernor, "!newGovernor");
emit GovernorPulled(governor, newGovernor);
governor = newGovernor;
}
function pullGuardian() external {
require(msg.sender == newGuardian, "!newGuard");
emit GuardianPulled(guardian, newGuardian);
guardian = newGuardian;
}
function pullPolicy() external {
require(msg.sender == newPolicy, "!newPolicy");
emit PolicyPulled(policy, newPolicy);
policy = newPolicy;
}
function pullVault() external {
require(msg.sender == newVault, "!newVault");
emit VaultPulled(vault, newVault);
vault = newVault;
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"authority_flat.sol":"OlympusAuthority"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_governor","internalType":"address"},{"type":"address","name":"_guardian","internalType":"address"},{"type":"address","name":"_policy","internalType":"address"},{"type":"address","name":"_vault","internalType":"address"}]},{"type":"event","name":"AuthorityUpdated","inputs":[{"type":"address","name":"authority","internalType":"contract IOlympusAuthority","indexed":true}],"anonymous":false},{"type":"event","name":"GovernorPulled","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"GovernorPushed","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"bool","name":"_effectiveImmediately","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"GuardianPulled","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"GuardianPushed","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"bool","name":"_effectiveImmediately","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"PolicyPulled","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"PolicyPushed","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"bool","name":"_effectiveImmediately","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"VaultPulled","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"VaultPushed","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"bool","name":"_effectiveImmediately","internalType":"bool","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IOlympusAuthority"}],"name":"authority","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"governor","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"guardian","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"newGovernor","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"newGuardian","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"newPolicy","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"newVault","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"policy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pullGovernor","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pullGuardian","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pullPolicy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pullVault","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pushGovernor","inputs":[{"type":"address","name":"_newGovernor","internalType":"address"},{"type":"bool","name":"_effectiveImmediately","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pushGuardian","inputs":[{"type":"address","name":"_newGuardian","internalType":"address"},{"type":"bool","name":"_effectiveImmediately","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pushPolicy","inputs":[{"type":"address","name":"_newPolicy","internalType":"address"},{"type":"bool","name":"_effectiveImmediately","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pushVault","inputs":[{"type":"address","name":"_newVault","internalType":"address"},{"type":"bool","name":"_effectiveImmediately","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAuthority","inputs":[{"type":"address","name":"_newAuthority","internalType":"contract IOlympusAuthority"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"vault","inputs":[]}]
Contract Creation Code
0x60806040526040518060400160405280600c81526020017f554e415554484f52495a45440000000000000000000000000000000000000000815250600090805190602001906200005192919062000474565b503480156200005f57600080fd5b5060405162001fd338038062001fd3833981810160405260808110156200008557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050503080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad60405160405180910390a25083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f4f337dcbb2512f18373c1f72d990a2f0a6ee5024b04007c52afd01eb73374a89600160405180821515815260200191505060405180910390a382600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fde655975891e8f09671597b37bd4d663bcc5c21dc6d7641b33cdf85fbe15d08b600160405180821515815260200191505060405180910390a381600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f90a5902a45c24aae553d5aff384ca16d6560f08d74c9784a4fbd2796d9e13f2b600160405180821515815260200191505060405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f05a80f5053574d6a62733e1692e8cbcfaf927dc82df0a7267ea2e489a7cc18ff600160405180821515815260200191505060405180910390a3505050506200052a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004ac5760008555620004f8565b82601f10620004c757805160ff1916838001178555620004f8565b82800160010185558215620004f8579182015b82811115620004f7578251825591602001919060010190620004da565b5b5090506200050791906200050b565b5090565b5b80821115620005265760008160009055506001016200050c565b5090565b611a99806200053a6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80635beede08116100a25780638fd20577116100715780638fd20577146103eb578063be11f1dd1461041f578063bf7e214f14610429578063d8a042121461045d578063fbfa77cf1461046757610116565b80635beede08146103195780636fe72c14146103235780637a9e5e4b1461037357806388aaf0c8146103b757610116565b8063215e92bc116100e9578063215e92bc146102075780633bf90c2814610211578063452a932014610245578063527596941461027957806354e3d703146102c957610116565b80630505c8c91461011b5780630c340a241461014f57806319859847146101835780631afe8714146101b7575b600080fd5b61012361049b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101576104c1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018b6104e7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610205600480360360408110156101cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061050d565b005b61020f6107dc565b005b6102196109a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61024d6109c8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c76004803603604081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506109ee565b005b610317600480360360408110156102df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610cbd565b005b610321610f8c565b005b6103716004803603604081101561033957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611152565b005b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611421565b005b6103bf61163f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f3611665565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61042761168b565b005b610431611851565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610465611877565b005b61046f611a3d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561057557600080fd5b505afa158015610589573d6000803e3d6000fd5b505050506040513d602081101561059f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146000906106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156106945780601f1061066957610100808354040283529160200191610694565b820191906000526020600020905b81548152906001019060200180831161067757829003601f168201915b50509250505060405180910390fd5b5080156106ec5781600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fde655975891e8f09671597b37bd4d663bcc5c21dc6d7641b33cdf85fbe15d08b8360405180821515815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f216e65775661756c74000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f3d08e01e3b8340be6ca709db7a9321448661a1f490da4d7f3eb03d84fe73095360405160405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614600090610b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610b755780601f10610b4a57610100808354040283529160200191610b75565b820191906000526020600020905b815481529060010190602001808311610b5857829003601f168201915b50509250505060405180910390fd5b508015610bcd5781600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4f337dcbb2512f18373c1f72d990a2f0a6ee5024b04007c52afd01eb73374a898360405180821515815260200191505060405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614600090610e53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b50509250505060405180910390fd5b508015610e9c5781600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f90a5902a45c24aae553d5aff384ca16d6560f08d74c9784a4fbd2796d9e13f2b8360405180821515815260200191505060405180910390a35050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f216e6577506f6c6963790000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f64d2fa522b403ca222efff0c7ad07d2ef45472a45e5770918bdfa9a2845d29a860405160405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d60208110156111e457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146000906112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112d95780601f106112ae576101008083540402835291602001916112d9565b820191906000526020600020905b8154815290600101906020018083116112bc57829003601f168201915b50509250505060405180910390fd5b5080156113315781600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f05a80f5053574d6a62733e1692e8cbcfaf927dc82df0a7267ea2e489a7cc18ff8360405180821515815260200191505060405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561148957600080fd5b505afa15801561149d573d6000803e3d6000fd5b505050506040513d60208110156114b357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146000906115b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115a85780601f1061157d576101008083540402835291602001916115a8565b820191906000526020600020905b81548152906001019060200180831161158b57829003601f168201915b50509250505060405180910390fd5b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad60405160405180910390a250565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f216e65774775617264000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0960fb9900fb8096216606c4f7fc2fce5d08cc0c82da55cec8619b66b523848160405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f216e6577476f7665726e6f72000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fffd6fed33fe8ec1016718bdd5d04ae6fecd9aba0da6578807daaaa7fc3d1682660405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea2646970667358221220d3e91379c24137f0c88a957929d2f9cb2ab47337f7a1b08a914da008ba4b7ea764736f6c63430007050033000000000000000000000000245cc372c84b3645bf0ffe6538620b04a217988b000000000000000000000000245cc372c84b3645bf0ffe6538620b04a217988b0000000000000000000000000cf30dc0d48604a301df8010cdc028c055336b2e000000000000000000000000245cc372c84b3645bf0ffe6538620b04a217988b
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c80635beede08116100a25780638fd20577116100715780638fd20577146103eb578063be11f1dd1461041f578063bf7e214f14610429578063d8a042121461045d578063fbfa77cf1461046757610116565b80635beede08146103195780636fe72c14146103235780637a9e5e4b1461037357806388aaf0c8146103b757610116565b8063215e92bc116100e9578063215e92bc146102075780633bf90c2814610211578063452a932014610245578063527596941461027957806354e3d703146102c957610116565b80630505c8c91461011b5780630c340a241461014f57806319859847146101835780631afe8714146101b7575b600080fd5b61012361049b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101576104c1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018b6104e7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610205600480360360408110156101cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061050d565b005b61020f6107dc565b005b6102196109a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61024d6109c8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c76004803603604081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506109ee565b005b610317600480360360408110156102df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610cbd565b005b610321610f8c565b005b6103716004803603604081101561033957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611152565b005b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611421565b005b6103bf61163f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f3611665565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61042761168b565b005b610431611851565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610465611877565b005b61046f611a3d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561057557600080fd5b505afa158015610589573d6000803e3d6000fd5b505050506040513d602081101561059f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146000906106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156106945780601f1061066957610100808354040283529160200191610694565b820191906000526020600020905b81548152906001019060200180831161067757829003601f168201915b50509250505060405180910390fd5b5080156106ec5781600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fde655975891e8f09671597b37bd4d663bcc5c21dc6d7641b33cdf85fbe15d08b8360405180821515815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f216e65775661756c74000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f3d08e01e3b8340be6ca709db7a9321448661a1f490da4d7f3eb03d84fe73095360405160405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614600090610b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610b755780601f10610b4a57610100808354040283529160200191610b75565b820191906000526020600020905b815481529060010190602001808311610b5857829003601f168201915b50509250505060405180910390fd5b508015610bcd5781600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4f337dcbb2512f18373c1f72d990a2f0a6ee5024b04007c52afd01eb73374a898360405180821515815260200191505060405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614600090610e53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b50509250505060405180910390fd5b508015610e9c5781600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f90a5902a45c24aae553d5aff384ca16d6560f08d74c9784a4fbd2796d9e13f2b8360405180821515815260200191505060405180910390a35050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f216e6577506f6c6963790000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f64d2fa522b403ca222efff0c7ad07d2ef45472a45e5770918bdfa9a2845d29a860405160405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d60208110156111e457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146000906112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112d95780601f106112ae576101008083540402835291602001916112d9565b820191906000526020600020905b8154815290600101906020018083116112bc57829003601f168201915b50509250505060405180910390fd5b5080156113315781600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f05a80f5053574d6a62733e1692e8cbcfaf927dc82df0a7267ea2e489a7cc18ff8360405180821515815260200191505060405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561148957600080fd5b505afa15801561149d573d6000803e3d6000fd5b505050506040513d60208110156114b357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146000906115b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115a85780601f1061157d576101008083540402835291602001916115a8565b820191906000526020600020905b81548152906001019060200180831161158b57829003601f168201915b50509250505060405180910390fd5b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad60405160405180910390a250565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f216e65774775617264000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0960fb9900fb8096216606c4f7fc2fce5d08cc0c82da55cec8619b66b523848160405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f216e6577476f7665726e6f72000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fffd6fed33fe8ec1016718bdd5d04ae6fecd9aba0da6578807daaaa7fc3d1682660405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea2646970667358221220d3e91379c24137f0c88a957929d2f9cb2ab47337f7a1b08a914da008ba4b7ea764736f6c63430007050033