Contract 0x47649022380d182DA8010Ae5d257fea4227b21ff 1

 
My Name Tag:
Not Available, login to update

ContractCreator:
GENESIS at txn GENESIS_47649022380d182da8010ae5d257fea4227b21ff
Txn Hash Method
Block
From
To
Value
GENESIS_47649022380d182da8010ae5d257fea4227b21ff0x6080604002021-01-14 15:51:401169 days 15 hrs agoGENESIS IN  Create: FlexibleStorage0 ETH00
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:25242 days 20 hrs ago Synthetix: ExchangerSynthetix: Flexible Storage0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:25242 days 20 hrs ago Synthetix: ExchangerSynthetix: Flexible Storage0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:23242 days 20 hrs ago Synthetix: ExchangerSynthetix: Flexible Storage0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:23242 days 20 hrs ago Synthetix: ExchangerSynthetix: Flexible Storage0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:15242 days 20 hrs ago Synthetix: ExchangerSynthetix: Flexible Storage0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:15242 days 20 hrs ago Synthetix: ExchangerSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Perps V2 Delayed Execution BTCPERPSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Direct Integration ManagerSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Direct Integration ManagerSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Direct Integration ManagerSynthetix: Flexible Storage0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:35242 days 20 hrs ago Synthetix: Direct Integration ManagerSynthetix: Flexible Storage0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Genesis Bytecode Match Only)

Contract Name:
FlexibleStorage

Compiler Version
v0.5.16

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Optimistic.Etherscan.io on 2021-08-25
*/

/*
   ____            __   __        __   _
  / __/__ __ ___  / /_ / /  ___  / /_ (_)__ __
 _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ /
/___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\
     /___/

* Synthetix: FlexibleStorage.sol
*
* Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/FlexibleStorage.sol
* Docs: https://docs.synthetix.io/contracts/FlexibleStorage
*
* Contract Dependencies: 
*	- ContractStorage
*	- IFlexibleStorage
* Libraries: (none)
*
* MIT License
* ===========
*
* Copyright (c) 2021 Synthetix
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/



pragma solidity >=0.4.24;

// https://docs.synthetix.io/contracts/source/interfaces/iaddressresolver
interface IAddressResolver {
    function getAddress(bytes32 name) external view returns (address);

    function getSynth(bytes32 key) external view returns (address);

    function requireAndGetAddress(bytes32 name, string calldata reason) external view returns (address);
}


// Internal References


// https://docs.synthetix.io/contracts/source/contracts/contractstorage
contract ContractStorage {
    IAddressResolver public resolverProxy;

    mapping(bytes32 => bytes32) public hashes;

    constructor(address _resolver) internal {
        // ReadProxyAddressResolver
        resolverProxy = IAddressResolver(_resolver);
    }

    /* ========== INTERNAL FUNCTIONS ========== */

    function _memoizeHash(bytes32 contractName) internal returns (bytes32) {
        bytes32 hashKey = hashes[contractName];
        if (hashKey == bytes32(0)) {
            // set to unique hash at the time of creation
            hashKey = keccak256(abi.encodePacked(msg.sender, contractName, block.number));
            hashes[contractName] = hashKey;
        }
        return hashKey;
    }

    /* ========== VIEWS ========== */

    /* ========== RESTRICTED FUNCTIONS ========== */

    function migrateContractKey(
        bytes32 fromContractName,
        bytes32 toContractName,
        bool removeAccessFromPreviousContract
    ) external onlyContract(fromContractName) {
        require(hashes[fromContractName] != bytes32(0), "Cannot migrate empty contract");

        hashes[toContractName] = hashes[fromContractName];

        if (removeAccessFromPreviousContract) {
            delete hashes[fromContractName];
        }

        emit KeyMigrated(fromContractName, toContractName, removeAccessFromPreviousContract);
    }

    /* ========== MODIFIERS ========== */

    modifier onlyContract(bytes32 contractName) {
        address callingContract =
            resolverProxy.requireAndGetAddress(contractName, "Cannot find contract in Address Resolver");
        require(callingContract == msg.sender, "Can only be invoked by the configured contract");
        _;
    }

    /* ========== EVENTS ========== */

    event KeyMigrated(bytes32 fromContractName, bytes32 toContractName, bool removeAccessFromPreviousContract);
}


// https://docs.synthetix.io/contracts/source/interfaces/iflexiblestorage
interface IFlexibleStorage {
    // Views
    function getUIntValue(bytes32 contractName, bytes32 record) external view returns (uint);

    function getUIntValues(bytes32 contractName, bytes32[] calldata records) external view returns (uint[] memory);

    function getIntValue(bytes32 contractName, bytes32 record) external view returns (int);

    function getIntValues(bytes32 contractName, bytes32[] calldata records) external view returns (int[] memory);

    function getAddressValue(bytes32 contractName, bytes32 record) external view returns (address);

    function getAddressValues(bytes32 contractName, bytes32[] calldata records) external view returns (address[] memory);

    function getBoolValue(bytes32 contractName, bytes32 record) external view returns (bool);

    function getBoolValues(bytes32 contractName, bytes32[] calldata records) external view returns (bool[] memory);

    function getBytes32Value(bytes32 contractName, bytes32 record) external view returns (bytes32);

    function getBytes32Values(bytes32 contractName, bytes32[] calldata records) external view returns (bytes32[] memory);

    // Mutative functions
    function deleteUIntValue(bytes32 contractName, bytes32 record) external;

    function deleteIntValue(bytes32 contractName, bytes32 record) external;

    function deleteAddressValue(bytes32 contractName, bytes32 record) external;

    function deleteBoolValue(bytes32 contractName, bytes32 record) external;

    function deleteBytes32Value(bytes32 contractName, bytes32 record) external;

    function setUIntValue(
        bytes32 contractName,
        bytes32 record,
        uint value
    ) external;

    function setUIntValues(
        bytes32 contractName,
        bytes32[] calldata records,
        uint[] calldata values
    ) external;

    function setIntValue(
        bytes32 contractName,
        bytes32 record,
        int value
    ) external;

    function setIntValues(
        bytes32 contractName,
        bytes32[] calldata records,
        int[] calldata values
    ) external;

    function setAddressValue(
        bytes32 contractName,
        bytes32 record,
        address value
    ) external;

    function setAddressValues(
        bytes32 contractName,
        bytes32[] calldata records,
        address[] calldata values
    ) external;

    function setBoolValue(
        bytes32 contractName,
        bytes32 record,
        bool value
    ) external;

    function setBoolValues(
        bytes32 contractName,
        bytes32[] calldata records,
        bool[] calldata values
    ) external;

    function setBytes32Value(
        bytes32 contractName,
        bytes32 record,
        bytes32 value
    ) external;

    function setBytes32Values(
        bytes32 contractName,
        bytes32[] calldata records,
        bytes32[] calldata values
    ) external;
}


// Inheritance


// Internal References


// https://docs.synthetix.io/contracts/source/contracts/flexiblestorage
contract FlexibleStorage is ContractStorage, IFlexibleStorage {
    mapping(bytes32 => mapping(bytes32 => uint)) internal uintStorage;
    mapping(bytes32 => mapping(bytes32 => int)) internal intStorage;
    mapping(bytes32 => mapping(bytes32 => address)) internal addressStorage;
    mapping(bytes32 => mapping(bytes32 => bool)) internal boolStorage;
    mapping(bytes32 => mapping(bytes32 => bytes32)) internal bytes32Storage;

    constructor(address _resolver) public ContractStorage(_resolver) {}

    /* ========== INTERNAL FUNCTIONS ========== */

    function _setUIntValue(
        bytes32 contractName,
        bytes32 record,
        uint value
    ) internal {
        uintStorage[_memoizeHash(contractName)][record] = value;
        emit ValueSetUInt(contractName, record, value);
    }

    function _setIntValue(
        bytes32 contractName,
        bytes32 record,
        int value
    ) internal {
        intStorage[_memoizeHash(contractName)][record] = value;
        emit ValueSetInt(contractName, record, value);
    }

    function _setAddressValue(
        bytes32 contractName,
        bytes32 record,
        address value
    ) internal {
        addressStorage[_memoizeHash(contractName)][record] = value;
        emit ValueSetAddress(contractName, record, value);
    }

    function _setBoolValue(
        bytes32 contractName,
        bytes32 record,
        bool value
    ) internal {
        boolStorage[_memoizeHash(contractName)][record] = value;
        emit ValueSetBool(contractName, record, value);
    }

    function _setBytes32Value(
        bytes32 contractName,
        bytes32 record,
        bytes32 value
    ) internal {
        bytes32Storage[_memoizeHash(contractName)][record] = value;
        emit ValueSetBytes32(contractName, record, value);
    }

    /* ========== VIEWS ========== */

    function getUIntValue(bytes32 contractName, bytes32 record) external view returns (uint) {
        return uintStorage[hashes[contractName]][record];
    }

    function getUIntValues(bytes32 contractName, bytes32[] calldata records) external view returns (uint[] memory) {
        uint[] memory results = new uint[](records.length);

        mapping(bytes32 => uint) storage data = uintStorage[hashes[contractName]];
        for (uint i = 0; i < records.length; i++) {
            results[i] = data[records[i]];
        }
        return results;
    }

    function getIntValue(bytes32 contractName, bytes32 record) external view returns (int) {
        return intStorage[hashes[contractName]][record];
    }

    function getIntValues(bytes32 contractName, bytes32[] calldata records) external view returns (int[] memory) {
        int[] memory results = new int[](records.length);

        mapping(bytes32 => int) storage data = intStorage[hashes[contractName]];
        for (uint i = 0; i < records.length; i++) {
            results[i] = data[records[i]];
        }
        return results;
    }

    function getAddressValue(bytes32 contractName, bytes32 record) external view returns (address) {
        return addressStorage[hashes[contractName]][record];
    }

    function getAddressValues(bytes32 contractName, bytes32[] calldata records) external view returns (address[] memory) {
        address[] memory results = new address[](records.length);

        mapping(bytes32 => address) storage data = addressStorage[hashes[contractName]];
        for (uint i = 0; i < records.length; i++) {
            results[i] = data[records[i]];
        }
        return results;
    }

    function getBoolValue(bytes32 contractName, bytes32 record) external view returns (bool) {
        return boolStorage[hashes[contractName]][record];
    }

    function getBoolValues(bytes32 contractName, bytes32[] calldata records) external view returns (bool[] memory) {
        bool[] memory results = new bool[](records.length);

        mapping(bytes32 => bool) storage data = boolStorage[hashes[contractName]];
        for (uint i = 0; i < records.length; i++) {
            results[i] = data[records[i]];
        }
        return results;
    }

    function getBytes32Value(bytes32 contractName, bytes32 record) external view returns (bytes32) {
        return bytes32Storage[hashes[contractName]][record];
    }

    function getBytes32Values(bytes32 contractName, bytes32[] calldata records) external view returns (bytes32[] memory) {
        bytes32[] memory results = new bytes32[](records.length);

        mapping(bytes32 => bytes32) storage data = bytes32Storage[hashes[contractName]];
        for (uint i = 0; i < records.length; i++) {
            results[i] = data[records[i]];
        }
        return results;
    }

    /* ========== RESTRICTED FUNCTIONS ========== */
    function setUIntValue(
        bytes32 contractName,
        bytes32 record,
        uint value
    ) external onlyContract(contractName) {
        _setUIntValue(contractName, record, value);
    }

    function setUIntValues(
        bytes32 contractName,
        bytes32[] calldata records,
        uint[] calldata values
    ) external onlyContract(contractName) {
        require(records.length == values.length, "Input lengths must match");

        for (uint i = 0; i < records.length; i++) {
            _setUIntValue(contractName, records[i], values[i]);
        }
    }

    function deleteUIntValue(bytes32 contractName, bytes32 record) external onlyContract(contractName) {
        uint value = uintStorage[hashes[contractName]][record];
        emit ValueDeletedUInt(contractName, record, value);
        delete uintStorage[hashes[contractName]][record];
    }

    function setIntValue(
        bytes32 contractName,
        bytes32 record,
        int value
    ) external onlyContract(contractName) {
        _setIntValue(contractName, record, value);
    }

    function setIntValues(
        bytes32 contractName,
        bytes32[] calldata records,
        int[] calldata values
    ) external onlyContract(contractName) {
        require(records.length == values.length, "Input lengths must match");

        for (uint i = 0; i < records.length; i++) {
            _setIntValue(contractName, records[i], values[i]);
        }
    }

    function deleteIntValue(bytes32 contractName, bytes32 record) external onlyContract(contractName) {
        int value = intStorage[hashes[contractName]][record];
        emit ValueDeletedInt(contractName, record, value);
        delete intStorage[hashes[contractName]][record];
    }

    function setAddressValue(
        bytes32 contractName,
        bytes32 record,
        address value
    ) external onlyContract(contractName) {
        _setAddressValue(contractName, record, value);
    }

    function setAddressValues(
        bytes32 contractName,
        bytes32[] calldata records,
        address[] calldata values
    ) external onlyContract(contractName) {
        require(records.length == values.length, "Input lengths must match");

        for (uint i = 0; i < records.length; i++) {
            _setAddressValue(contractName, records[i], values[i]);
        }
    }

    function deleteAddressValue(bytes32 contractName, bytes32 record) external onlyContract(contractName) {
        address value = addressStorage[hashes[contractName]][record];
        emit ValueDeletedAddress(contractName, record, value);
        delete addressStorage[hashes[contractName]][record];
    }

    function setBoolValue(
        bytes32 contractName,
        bytes32 record,
        bool value
    ) external onlyContract(contractName) {
        _setBoolValue(contractName, record, value);
    }

    function setBoolValues(
        bytes32 contractName,
        bytes32[] calldata records,
        bool[] calldata values
    ) external onlyContract(contractName) {
        require(records.length == values.length, "Input lengths must match");

        for (uint i = 0; i < records.length; i++) {
            _setBoolValue(contractName, records[i], values[i]);
        }
    }

    function deleteBoolValue(bytes32 contractName, bytes32 record) external onlyContract(contractName) {
        bool value = boolStorage[hashes[contractName]][record];
        emit ValueDeletedBool(contractName, record, value);
        delete boolStorage[hashes[contractName]][record];
    }

    function setBytes32Value(
        bytes32 contractName,
        bytes32 record,
        bytes32 value
    ) external onlyContract(contractName) {
        _setBytes32Value(contractName, record, value);
    }

    function setBytes32Values(
        bytes32 contractName,
        bytes32[] calldata records,
        bytes32[] calldata values
    ) external onlyContract(contractName) {
        require(records.length == values.length, "Input lengths must match");

        for (uint i = 0; i < records.length; i++) {
            _setBytes32Value(contractName, records[i], values[i]);
        }
    }

    function deleteBytes32Value(bytes32 contractName, bytes32 record) external onlyContract(contractName) {
        bytes32 value = bytes32Storage[hashes[contractName]][record];
        emit ValueDeletedBytes32(contractName, record, value);
        delete bytes32Storage[hashes[contractName]][record];
    }

    /* ========== EVENTS ========== */

    event ValueSetUInt(bytes32 contractName, bytes32 record, uint value);
    event ValueDeletedUInt(bytes32 contractName, bytes32 record, uint value);

    event ValueSetInt(bytes32 contractName, bytes32 record, int value);
    event ValueDeletedInt(bytes32 contractName, bytes32 record, int value);

    event ValueSetAddress(bytes32 contractName, bytes32 record, address value);
    event ValueDeletedAddress(bytes32 contractName, bytes32 record, address value);

    event ValueSetBool(bytes32 contractName, bytes32 record, bool value);
    event ValueDeletedBool(bytes32 contractName, bytes32 record, bool value);

    event ValueSetBytes32(bytes32 contractName, bytes32 record, bytes32 value);
    event ValueDeletedBytes32(bytes32 contractName, bytes32 record, bytes32 value);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_resolver","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"fromContractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"toContractName","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"removeAccessFromPreviousContract","type":"bool"}],"name":"KeyMigrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"ValueDeletedAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"ValueDeletedBool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"value","type":"bytes32"}],"name":"ValueDeletedBytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"int256","name":"value","type":"int256"}],"name":"ValueDeletedInt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ValueDeletedUInt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"ValueSetAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"ValueSetBool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"value","type":"bytes32"}],"name":"ValueSetBytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"int256","name":"value","type":"int256"}],"name":"ValueSetInt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"record","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ValueSetUInt","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"deleteAddressValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"deleteBoolValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"deleteBytes32Value","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"deleteIntValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"deleteUIntValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"getAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"}],"name":"getAddressValues","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"getBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"}],"name":"getBoolValues","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"getBytes32Value","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"}],"name":"getBytes32Values","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"getIntValue","outputs":[{"internalType":"int256","name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"}],"name":"getIntValues","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"}],"name":"getUIntValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"}],"name":"getUIntValues","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"hashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"fromContractName","type":"bytes32"},{"internalType":"bytes32","name":"toContractName","type":"bytes32"},{"internalType":"bool","name":"removeAccessFromPreviousContract","type":"bool"}],"name":"migrateContractKey","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"resolverProxy","outputs":[{"internalType":"contract IAddressResolver","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"setAddressValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"},{"internalType":"address[]","name":"values","type":"address[]"}],"name":"setAddressValues","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBoolValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"name":"setBoolValues","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"name":"setBytes32Value","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"name":"setBytes32Values","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"},{"internalType":"int256","name":"value","type":"int256"}],"name":"setIntValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"name":"setIntValues","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32","name":"record","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setUIntValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"contractName","type":"bytes32"},{"internalType":"bytes32[]","name":"records","type":"bytes32[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"setUIntValues","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

8060405234801561001957600080610016613231565b50505b50600436106101cc5760003560e01c80638ca0adaf11610102578063c89eb562116100a0578063d994502d1161007a578063d994502d14610c05578063f7833c5d14610c45578063f9c39d2f14610c71578063fdfc4c1314610d75576101cc565b8063c89eb56214610aa9578063d658d2e914610bad578063d71a9b0114610bd3576101cc565b8063ab15985d116100dc578063ab15985d14610847578063b67fa7ed1461094b578063c13a2b0c146109e4578063c4f610ed14610a7d576101cc565b80638ca0adaf146107565780638f6b95a3146107ef5780639ee5955a1461081b576101cc565b806335ab27081161016f5780634dca0978116101495780634dca09781461062a5780635bda91e2146106655780636a59e495146106995780638408a5e5146106bd576101cc565b806335ab2708146104c65780633bd6ad89146104f25780633f28a6fc146105f6576101cc565b80631625e3ef116101ab5780631625e3ef146103fe57806318f662ed1461042a5780631d5b277f1461045657806323257c2b14610488576101cc565b80624b62d6146101da57806303cdc0171461020e578063142a391e14610312575b6000806101d7613231565b50505b61020c600480360360608110156101f9576000806101f6613231565b50505b5080359060208101359060400135610da1565b005b61020c6004803603606081101561022d5760008061022a613231565b50505b81359190810190604081016020820135600160201b81111561025757600080610254613231565b50505b8201836020820111156102725760008061026f613231565b50505b803590602001918460208302840111600160201b8311171561029c57600080610299613231565b50505b919390929091602081019035600160201b8111156102c2576000806102bf613231565b50505b8201836020820111156102dd576000806102da613231565b50505b803590602001918460208302840111600160201b8311171561030757600080610304613231565b50505b509092509050610ef3565b6103ab600480360360408110156103315760008061032e613231565b50505b81359190810190604081016020820135600160201b81111561035b57600080610358613231565b50505b82018360208201111561037657600080610373613231565b50505b803590602001918460208302840111600160201b831117156103a05760008061039d613231565b50505b5090925090506110c9565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156103ea5780820151838201526020016103d2565b505050509050019250505060405180910390f35b61020c6004803603604081101561041d5760008061041a613231565b50505b5080359060200135611184565b61020c6004803603604081101561044957600080610446613231565b50505b50803590602001356113b3565b61020c6004803603606081101561047557600080610472613231565b50505b50803590602081013590604001356115bb565b6104b4600480360360408110156104a7576000806104a4613231565b50505b5080359060200135611706565b60405190815260200160405180910390f35b61020c600480360360408110156104e5576000806104e2613231565b50505b508035906020013561174d565b61020c600480360360608110156105115760008061050e613231565b50505b81359190810190604081016020820135600160201b81111561053b57600080610538613231565b50505b82018360208201111561055657600080610553613231565b50505b803590602001918460208302840111600160201b831117156105805760008061057d613231565b50505b919390929091602081019035600160201b8111156105a6576000806105a3613231565b50505b8201836020820111156105c1576000806105be613231565b50505b803590602001918460208302840111600160201b831117156105eb576000806105e8613231565b50505b50909250905061192d565b61020c6004803603606081101561061557600080610612613231565b50505b50803590602081013590604001351515611b02565b61020c6004803603606081101561064957600080610646613231565b50505b50803590602081013590604001356001600160a01b0316611c4d565b61020c6004803603606081101561068457600080610681613231565b50505b50803590602081013590604001351515611d98565b6106a1611fec565b6040516001600160a01b03909116815260200160405180910390f35b6103ab600480360360408110156106dc576000806106d9613231565b50505b81359190810190604081016020820135600160201b81111561070657600080610703613231565b50505b8201836020820111156107215760008061071e613231565b50505b803590602001918460208302840111600160201b8311171561074b57600080610748613231565b50505b50909250905061200a565b6103ab6004803603604081101561077557600080610772613231565b50505b81359190810190604081016020820135600160201b81111561079f5760008061079c613231565b50505b8201836020820111156107ba576000806107b7613231565b50505b803590602001918460208302840111600160201b831117156107e4576000806107e1613231565b50505b5090925090506120ba565b61020c6004803603604081101561080e5760008061080b613231565b50505b508035906020013561218a565b6106a16004803603604081101561083a57600080610837613231565b50505b50803590602001356123c3565b61020c6004803603606081101561086657600080610863613231565b50505b81359190810190604081016020820135600160201b8111156108905760008061088d613231565b50505b8201836020820111156108ab576000806108a8613231565b50505b803590602001918460208302840111600160201b831117156108d5576000806108d2613231565b50505b919390929091602081019035600160201b8111156108fb576000806108f8613231565b50505b82018360208201111561091657600080610913613231565b50505b803590602001918460208302840111600160201b831117156109405760008061093d613231565b50505b50909250905061241c565b6103ab6004803603604081101561096a57600080610967613231565b50505b81359190810190604081016020820135600160201b81111561099457600080610991613231565b50505b8201836020820111156109af576000806109ac613231565b50505b803590602001918460208302840111600160201b831117156109d9576000806109d6613231565b50505b5090925090506125e8565b6103ab60048036036040811015610a0357600080610a00613231565b50505b81359190810190604081016020820135600160201b811115610a2d57600080610a2a613231565b50505b820183602082011115610a4857600080610a45613231565b50505b803590602001918460208302840111600160201b83111715610a7257600080610a6f613231565b50505b509092509050612698565b6104b460048036036040811015610a9c57600080610a99613231565b50505b508035906020013561275a565b61020c60048036036060811015610ac857600080610ac5613231565b50505b81359190810190604081016020820135600160201b811115610af257600080610aef613231565b50505b820183602082011115610b0d57600080610b0a613231565b50505b803590602001918460208302840111600160201b83111715610b3757600080610b34613231565b50505b919390929091602081019035600160201b811115610b5d57600080610b5a613231565b50505b820183602082011115610b7857600080610b75613231565b50505b803590602001918460208302840111600160201b83111715610ba257600080610b9f613231565b50505b509092509050612773565b6104b460048036036020811015610bcc57600080610bc9613231565b50505b503561293f565b61020c60048036036060811015610bf257600080610bef613231565b50505b508035906020810135906040013561295a565b610c3160048036036040811015610c2457600080610c21613231565b50505b5080359060200135612aa5565b604051901515815260200160405180910390f35b6104b460048036036040811015610c6457600080610c61613231565b50505b5080359060200135612af8565b61020c60048036036060811015610c9057600080610c8d613231565b50505b81359190810190604081016020820135600160201b811115610cba57600080610cb7613231565b50505b820183602082011115610cd557600080610cd2613231565b50505b803590602001918460208302840111600160201b83111715610cff57600080610cfc613231565b50505b919390929091602081019035600160201b811115610d2557600080610d22613231565b50505b820183602082011115610d4057600080610d3d613231565b50505b803590602001918460208302840111600160201b83111715610d6a57600080610d67613231565b50505b509092509050612b11565b61020c60048036036040811015610d9457600080610d91613231565b50505b5080359060200135612cdf565b8260008080610dae61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680610e186132fc565b158015610e2d57600080610e2a613231565b50505b505a610e37613348565b5050505050158015610e56573d6000803e3d6000610e53613231565b50505b505050506040513d6020811015610e7557600080610e72613231565b50505b81019080805193505050505a610e89613433565b6001600160a01b0316816001600160a01b031614610ee15760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390610ede613231565b50505b610eec858585612ebf565b5050505050565b8460008080610f0061329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680610f6a6132fc565b158015610f7f57600080610f7c613231565b50505b505a610f89613348565b5050505050158015610fa8573d6000803e3d6000610fa5613231565b50505b505050506040513d6020811015610fc757600080610fc4613231565b50505b81019080805193505050505a610fdb613433565b6001600160a01b0316816001600160a01b0316146110335760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390611030613231565b50505b84831461107d5760405162461bcd60e51b8152602060048201526018602482015260008051602061356483398151915260448201526064016040518091039061107a613231565b50505b60005b858110156110bf576110b78888888481811061109857fe5b905060200201358787858181106110ab57fe5b90506020020135612f43565b600101611080565b5050505050505050565b606080826040519080825280602002602001820160405280156110f6578160200160208202803883390190505b50600086815260016020529091506003816040812061111361329c565b8152602001908152602001600020905060005b848110156111795781600087878481811061113d57fe5b90506020020135815260200190815260200160002061115a61329c565b83828151811061116657fe5b6020908102919091010152600101611126565b509095945050505050565b816000808061119161329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806111fb6132fc565b1580156112105760008061120d613231565b50505b505a61121a613348565b5050505050158015611239573d6000803e3d6000611236613231565b50505b505050506040513d602081101561125857600080611255613231565b50505b81019080805193505050505a61126c613433565b6001600160a01b0316816001600160a01b0316146112c45760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e9139604001915050604051809103906112c1613231565b50505b60008481526001602052600581604081206112dd61329c565b815260200190815260200160002060008581526020919091526040902060009061130561329c565b906101000a900460ff1690507f321123223c2c7bffd7484ae8fb80c6eb45aa5537df0a621c47833ab9376a4a9c858583604051928352602083019190915215156040808301919091526060909101905180910390a1600085815260016020526005906040812061137361329c565b815260200190815260200160002060008581526020919091526040902060018161139b61329c565b9060ff021916906113aa613479565b50505050505050565b81600080806113c061329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e6028913960400192505050602060405180830381868061142a6132fc565b15801561143f5760008061143c613231565b50505b505a611449613348565b5050505050158015611468573d6000803e3d6000611465613231565b50505b505050506040513d602081101561148757600080611484613231565b50505b81019080805193505050505a61149b613433565b6001600160a01b0316816001600160a01b0316146114f35760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e9139604001915050604051809103906114f0613231565b50505b600084815260016020526002816040812061150c61329c565b815260200190815260200160002060008581526020919091526040902061153161329c565b90507f8a6b612c1a1e056bc504f34fe56106a878fca2d1a50be35360d02ac39d4d466285858360405180848152602001838152602001828152602001935050505060405180910390a1600085815260016020526002906040812061159361329c565b81526020019081526020016000206000858152602091909152604090206000906113aa613479565b82600080806115c861329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806116326132fc565b15801561164757600080611644613231565b50505b505a611651613348565b5050505050158015611670573d6000803e3d600061166d613231565b50505b505050506040513d602081101561168f5760008061168c613231565b50505b81019080805193505050505a6116a3613433565b6001600160a01b0316816001600160a01b0316146116fb5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e9139604001915050604051809103906116f8613231565b50505b610eec858585612f43565b600082815260016020526002816040812061171f61329c565b815260200190815260200160002060008381526020919091526040902061174461329c565b90505b92915050565b816000808061175a61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806117c46132fc565b1580156117d9576000806117d6613231565b50505b505a6117e3613348565b5050505050158015611802573d6000803e3d60006117ff613231565b50505b505050506040513d60208110156118215760008061181e613231565b50505b81019080805193505050505a611835613433565b6001600160a01b0316816001600160a01b03161461188d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e91396040019150506040518091039061188a613231565b50505b60008481526001602052600681604081206118a661329c565b81526020019081526020016000206000858152602091909152604090206118cb61329c565b90507f1f751825a531bf2a176e42d5cb792bb7228163cf53e36b033509ccbe869cfd9385858360405180848152602001838152602001828152602001935050505060405180910390a1600085815260016020526006906040812061159361329c565b846000808061193a61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806119a46132fc565b1580156119b9576000806119b6613231565b50505b505a6119c3613348565b50505050501580156119e2573d6000803e3d60006119df613231565b50505b505050506040513d6020811015611a01576000806119fe613231565b50505b81019080805193505050505a611a15613433565b6001600160a01b0316816001600160a01b031614611a6d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390611a6a613231565b50505b848314611ab75760405162461bcd60e51b81526020600482015260186024820152600080516020613564833981519152604482015260640160405180910390611ab4613231565b50505b60005b858110156110bf57611afa88888884818110611ad257fe5b90506020020135878785818110611ae557fe5b905060200201356001600160a01b0316612fc7565b600101611aba565b8260008080611b0f61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680611b796132fc565b158015611b8e57600080611b8b613231565b50505b505a611b98613348565b5050505050158015611bb7573d6000803e3d6000611bb4613231565b50505b505050506040513d6020811015611bd657600080611bd3613231565b50505b81019080805193505050505a611bea613433565b6001600160a01b0316816001600160a01b031614611c425760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390611c3f613231565b50505b610eec858585613077565b8260008080611c5a61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680611cc46132fc565b158015611cd957600080611cd6613231565b50505b505a611ce3613348565b5050505050158015611d02573d6000803e3d6000611cff613231565b50505b505050506040513d6020811015611d2157600080611d1e613231565b50505b81019080805193505050505a611d35613433565b6001600160a01b0316816001600160a01b031614611d8d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390611d8a613231565b50505b610eec858585612fc7565b8260008080611da561329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680611e0f6132fc565b158015611e2457600080611e21613231565b50505b505a611e2e613348565b5050505050158015611e4d573d6000803e3d6000611e4a613231565b50505b505050506040513d6020811015611e6c57600080611e69613231565b50505b81019080805193505050505a611e80613433565b6001600160a01b0316816001600160a01b031614611ed85760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390611ed5613231565b50505b6000858152600160205260408120611eee61329c565b1415611f495760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74206d69677261746520656d70747920636f6e7472616374000000604482015260640160405180910390611f46613231565b50505b6000858152600160205260409020611f5f61329c565b60008581526001602052604090208190611f77613479565b5050508215611f9c576000858152600160205260409020600090611f99613479565b50505b7fa3db9c909daa141b61562c797dae4dc4b3d7751686068c98111db87b2a8c374c858585604051928352602083019190915215156040808301919091526060909101905180910390a15050505050565b600080611ff761329c565b906101000a90046001600160a01b031681565b60608082604051908082528060200260200182016040528015612037578160200160208202803883390190505b50600086815260016020529091506006816040812061205461329c565b8152602001908152602001600020905060005b848110156111795781600087878481811061207e57fe5b90506020020135815260200190815260200160002061209b61329c565b8382815181106120a757fe5b6020908102919091010152600101612067565b606080826040519080825280602002602001820160405280156120e7578160200160208202803883390190505b50600086815260016020529091506004816040812061210461329c565b8152602001908152602001600020905060005b848110156111795781600087878481811061212e57fe5b90506020020135815260200190815260200160002060009061214e61329c565b906101000a90046001600160a01b031683828151811061216a57fe5b6001600160a01b0390921660209283029190910190910152600101612117565b816000808061219761329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806122016132fc565b15801561221657600080612213613231565b50505b505a612220613348565b505050505015801561223f573d6000803e3d600061223c613231565b50505b505050506040513d602081101561225e5760008061225b613231565b50505b81019080805193505050505a612272613433565b6001600160a01b0316816001600160a01b0316146122ca5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e9139604001915050604051809103906122c7613231565b50505b60008481526001602052600481604081206122e361329c565b815260200190815260200160002060008581526020919091526040902060009061230b61329c565b906101000a90046001600160a01b031690507fec1140277b8f20820dc76b92216489238a207d5f22c964099303820fbd2bdf6685858360405192835260208301919091526001600160a01b03166040808301919091526060909101905180910390a1600085815260016020526004906040812061238661329c565b81526020019081526020016000206000858152602091909152604090206001816123ae61329c565b906001600160a01b03021916906113aa613479565b60008281526001602052600481604081206123dc61329c565b815260200190815260200160002060008381526020919091526040902060009061240461329c565b906101000a90046001600160a01b0316905092915050565b846000808061242961329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806124936132fc565b1580156124a8576000806124a5613231565b50505b505a6124b2613348565b50505050501580156124d1573d6000803e3d60006124ce613231565b50505b505050506040513d60208110156124f0576000806124ed613231565b50505b81019080805193505050505a612504613433565b6001600160a01b0316816001600160a01b03161461255c5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390612559613231565b50505b8483146125a65760405162461bcd60e51b815260206004820152601860248201526000805160206135648339815191526044820152606401604051809103906125a3613231565b50505b60005b858110156110bf576125e0888888848181106125c157fe5b905060200201358787858181106125d457fe5b90506020020135613113565b6001016125a9565b60608082604051908082528060200260200182016040528015612615578160200160208202803883390190505b50600086815260016020529091506002816040812061263261329c565b8152602001908152602001600020905060005b848110156111795781600087878481811061265c57fe5b90506020020135815260200190815260200160002061267961329c565b83828151811061268557fe5b6020908102919091010152600101612645565b606080826040519080825280602002602001820160405280156126c5578160200160208202803883390190505b5060008681526001602052909150600581604081206126e261329c565b8152602001908152602001600020905060005b848110156111795781600087878481811061270c57fe5b90506020020135815260200190815260200160002060009061272c61329c565b906101000a900460ff1683828151811061274257fe5b911515602092830291909101909101526001016126f5565b600082815260016020526003816040812061171f61329c565b846000808061278061329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806127ea6132fc565b1580156127ff576000806127fc613231565b50505b505a612809613348565b5050505050158015612828573d6000803e3d6000612825613231565b50505b505050506040513d602081101561284757600080612844613231565b50505b81019080805193505050505a61285b613433565b6001600160a01b0316816001600160a01b0316146128b35760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e9139604001915050604051809103906128b0613231565b50505b8483146128fd5760405162461bcd60e51b815260206004820152601860248201526000805160206135648339815191526044820152606401604051809103906128fa613231565b50505b60005b858110156110bf576129378888888481811061291857fe5b9050602002013587878581811061292b57fe5b90506020020135612ebf565b600101612900565b6001602052806000526040600020905061295761329c565b81565b826000808061296761329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e602891396040019250505060206040518083038186806129d16132fc565b1580156129e6576000806129e3613231565b50505b505a6129f0613348565b5050505050158015612a0f573d6000803e3d6000612a0c613231565b50505b505050506040513d6020811015612a2e57600080612a2b613231565b50505b81019080805193505050505a612a42613433565b6001600160a01b0316816001600160a01b031614612a9a5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390612a97613231565b50505b610eec858585613113565b6000828152600160205260058160408120612abe61329c565b8152602001908152602001600020600083815260209190915260409020600090612ae661329c565b906101000a900460ff16905092915050565b600082815260016020526006816040812061171f61329c565b8460008080612b1e61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680612b886132fc565b158015612b9d57600080612b9a613231565b50505b505a612ba7613348565b5050505050158015612bc6573d6000803e3d6000612bc3613231565b50505b505050506040513d6020811015612be557600080612be2613231565b50505b81019080805193505050505a612bf9613433565b6001600160a01b0316816001600160a01b031614612c515760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390612c4e613231565b50505b848314612c9b5760405162461bcd60e51b81526020600482015260186024820152600080516020613564833981519152604482015260640160405180910390612c98613231565b50505b60005b858110156110bf57612cd788888884818110612cb657fe5b90506020020135878785818110612cc957fe5b905060200201351515613077565b600101612c9e565b8160008080612cec61329c565b906101000a90046001600160a01b03166001600160a01b031663dacb2d01836040518263ffffffff1660e01b815260040180828152602001806020018281038252602881526020018061350e60289139604001925050506020604051808303818680612d566132fc565b158015612d6b57600080612d68613231565b50505b505a612d75613348565b5050505050158015612d94573d6000803e3d6000612d91613231565b50505b505050506040513d6020811015612db357600080612db0613231565b50505b81019080805193505050505a612dc7613433565b6001600160a01b0316816001600160a01b031614612e1f5760405162461bcd60e51b815260040180806020018281038252602e815260200180613536602e913960400191505060405180910390612e1c613231565b50505b6000848152600160205260038160408120612e3861329c565b8152602001908152602001600020600085815260209190915260409020612e5d61329c565b90507f78962c711b5655608c554689ba42e4890d9e5d3f590b99842612ad39cd7ae0ae85858360405180848152602001838152602001828152602001935050505060405180910390a1600085815260016020526003906040812061159361329c565b8060066000612ecd86613197565b81526020019081526020016000206000848152602091909152604090208190612ef4613479565b5050507f961abb018d8a303304c9f1ff1f306c7493a8b68b381bbe4e9a3abf9588a9528083838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b8060026000612f5186613197565b81526020019081526020016000206000848152602091909152604090208190612f78613479565b5050507f60738523f766167cfd2310c61593dc795bc9d77de9276ed7e0c514df55e0a2c983838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b8060046000612fd586613197565b8152602001908152602001600020600084815260209190915260409020600181612ffd61329c565b816001600160a01b0302191690836001600160a01b031602179061301f613479565b5050507f524fb430ecbfd4606a947f9ae445dbf7c9703944cf928789b86f3a8aad63936583838360405192835260208301919091526001600160a01b03166040808301919091526060909101905180910390a1505050565b806005600061308586613197565b81526020019081526020016000206000848152602091909152604090206001816130ad61329c565b8160ff021916908315150217906130c2613479565b5050507f9c94ad4cfff55907724cb65340f342d3897dd884e6cd3c2d3777087191d5eb7b838383604051928352602083019190915215156040808301919091526060909101905180910390a1505050565b806003600061312186613197565b81526020019081526020016000206000848152602091909152604090208190613148613479565b5050507f0d8877f604dfe262a8ac3904781814f022156c9341af779608a2ae0beef1906c83838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b6000818152600160205280604081206131ae61329c565b905080611747575a6131be613433565b835a6131c86134c7565b60405160609390931b6bffffffffffffffffffffffff191660208401526034830191909152605482015260740160405160208183030381529060405280519060200120600084815260016020529091508190604090208190613228613479565b50505092915050565b632a2a7adb598160e01b8152600481016020815285602082015260005b8681101561326957808601518282016040015260200161324e565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b60408110156132f7576000828201526020016132e0565b505050565b638435035b598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b805160008252935060206132e0565b638540661f598160e01b8152613379565b8080831115611747575090919050565b8080831015611747575090919050565b836004820152846024820152606060448201528660648201526084810160005b888110156133b1578088015182820152602001613399565b506060828960a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8b8b82606087013350600060045af150596134068d3d613369565b8c016134128187613359565b5b828110156134275760008152602001613413565b50929c50505050505050565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b805160008252935060206132e0565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b6000815260206132e0565b635a98c361598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b805160008252935060206132e056fe43616e6e6f742066696e6420636f6e747261637420696e2041646472657373205265736f6c76657243616e206f6e6c7920626520696e766f6b65642062792074686520636f6e6669677572656420636f6e7472616374496e707574206c656e67746873206d757374206d617463680000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c35760003560e01c80638ca0adaf116100f9578063c89eb56211610097578063d994502d11610071578063d994502d146109c2578063f7833c5d146109f9578063f9c39d2f14610a1c578063fdfc4c1314610ae1576101c3565b8063c89eb562146108b7578063d658d2e91461097c578063d71a9b0114610999576101c3565b8063ab15985d116100d3578063ab15985d146106e5578063b67fa7ed146107aa578063c13a2b0c1461081f578063c4f610ed14610894576101c3565b80638ca0adaf1461062a5780638f6b95a31461069f5780639ee5955a146106c2576101c3565b806335ab2708116101665780634dca0978116101405780634dca0978146105345780635bda91e2146105665780636a59e495146105915780638408a5e5146105b5576101c3565b806335ab2708146104215780633bd6ad89146104445780633f28a6fc14610509576101c3565b80631625e3ef116101a25780631625e3ef1461037d57806318f662ed146103a05780631d5b277f146103c357806323257c2b146103ec576101c3565b80624b62d6146101c857806303cdc017146101f3578063142a391e146102b8575b600080fd5b6101f1600480360360608110156101de57600080fd5b5080359060208101359060400135610b04565b005b6101f16004803603606081101561020957600080fd5b81359190810190604081016020820135600160201b81111561022a57600080fd5b82018360208201111561023c57600080fd5b803590602001918460208302840111600160201b8311171561025d57600080fd5b919390929091602081019035600160201b81111561027a57600080fd5b82018360208201111561028c57600080fd5b803590602001918460208302840111600160201b831117156102ad57600080fd5b509092509050610bf4565b61032d600480360360408110156102ce57600080fd5b81359190810190604081016020820135600160201b8111156102ef57600080fd5b82018360208201111561030157600080fd5b803590602001918460208302840111600160201b8311171561032257600080fd5b509092509050610d60565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610369578181015183820152602001610351565b505050509050019250505060405180910390f35b6101f16004803603604081101561039357600080fd5b5080359060200135610e07565b6101f1600480360360408110156103b657600080fd5b5080359060200135610f7b565b6101f1600480360360608110156103d957600080fd5b50803590602081013590604001356110e4565b61040f6004803603604081101561040257600080fd5b50803590602001356111cd565b60408051918252519081900360200190f35b6101f16004803603604081101561043757600080fd5b50803590602001356111f4565b6101f16004803603606081101561045a57600080fd5b81359190810190604081016020820135600160201b81111561047b57600080fd5b82018360208201111561048d57600080fd5b803590602001918460208302840111600160201b831117156104ae57600080fd5b919390929091602081019035600160201b8111156104cb57600080fd5b8201836020820111156104dd57600080fd5b803590602001918460208302840111600160201b831117156104fe57600080fd5b50909250905061135d565b6101f16004803603606081101561051f57600080fd5b508035906020810135906040013515156114c8565b6101f16004803603606081101561054a57600080fd5b50803590602081013590604001356001600160a01b03166115b1565b6101f16004803603606081101561057c57600080fd5b5080359060208101359060400135151561169a565b61059961184c565b604080516001600160a01b039092168252519081900360200190f35b61032d600480360360408110156105cb57600080fd5b81359190810190604081016020820135600160201b8111156105ec57600080fd5b8201836020820111156105fe57600080fd5b803590602001918460208302840111600160201b8311171561061f57600080fd5b50909250905061185b565b61032d6004803603604081101561064057600080fd5b81359190810190604081016020820135600160201b81111561066157600080fd5b82018360208201111561067357600080fd5b803590602001918460208302840111600160201b8311171561069457600080fd5b5090925090506118f7565b6101f1600480360360408110156106b557600080fd5b50803590602001356119b3565b610599600480360360408110156106d857600080fd5b5080359060200135611b32565b6101f1600480360360608110156106fb57600080fd5b81359190810190604081016020820135600160201b81111561071c57600080fd5b82018360208201111561072e57600080fd5b803590602001918460208302840111600160201b8311171561074f57600080fd5b919390929091602081019035600160201b81111561076c57600080fd5b82018360208201111561077e57600080fd5b803590602001918460208302840111600160201b8311171561079f57600080fd5b509092509050611b62565b61032d600480360360408110156107c057600080fd5b81359190810190604081016020820135600160201b8111156107e157600080fd5b8201836020820111156107f357600080fd5b803590602001918460208302840111600160201b8311171561081457600080fd5b509092509050611cc4565b61032d6004803603604081101561083557600080fd5b81359190810190604081016020820135600160201b81111561085657600080fd5b82018360208201111561086857600080fd5b803590602001918460208302840111600160201b8311171561088957600080fd5b509092509050611d60565b61040f600480360360408110156108aa57600080fd5b5080359060200135611e0e565b6101f1600480360360608110156108cd57600080fd5b81359190810190604081016020820135600160201b8111156108ee57600080fd5b82018360208201111561090057600080fd5b803590602001918460208302840111600160201b8311171561092157600080fd5b919390929091602081019035600160201b81111561093e57600080fd5b82018360208201111561095057600080fd5b803590602001918460208302840111600160201b8311171561097157600080fd5b509092509050611e35565b61040f6004803603602081101561099257600080fd5b5035611f97565b6101f1600480360360608110156109af57600080fd5b5080359060208101359060400135611fa9565b6109e5600480360360408110156109d857600080fd5b5080359060200135612092565b604080519115158252519081900360200190f35b61040f60048036036040811015610a0f57600080fd5b50803590602001356120bc565b6101f160048036036060811015610a3257600080fd5b81359190810190604081016020820135600160201b811115610a5357600080fd5b820183602082011115610a6557600080fd5b803590602001918460208302840111600160201b83111715610a8657600080fd5b919390929091602081019035600160201b811115610aa357600080fd5b820183602082011115610ab557600080fd5b803590602001918460208302840111600160201b83111715610ad657600080fd5b5090925090506120e3565b6101f160048036036040811015610af757600080fd5b5080359060200135612247565b600080546040805163dacb2d0160e01b815260048101878152602482019283526028604483018190528895946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015610b6d57600080fd5b505afa158015610b81573d6000803e3d6000fd5b505050506040513d6020811015610b9757600080fd5b505190506001600160a01b0381163314610be25760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b610bed8585856123b0565b5050505050565b600080546040805163dacb2d0160e01b815260048101898152602482019283526028604483018190528a95946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015610c5d57600080fd5b505afa158015610c71573d6000803e3d6000fd5b505050506040513d6020811015610c8757600080fd5b505190506001600160a01b0381163314610cd25760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b848314610d14576040805162461bcd60e51b815260206004820152601860248201526000805160206126ca833981519152604482015290519081900360640190fd5b60005b85811015610d5657610d4e88888884818110610d2f57fe5b90506020020135878785818110610d4257fe5b90506020020135612421565b600101610d17565b5050505050505050565b60608083839050604051908082528060200260200182016040528015610d90578160200160208202803883390190505b506000868152600160209081526040808320548352600390915281209192505b84811015610dfc57816000878784818110610dc757fe5b90506020020135815260200190815260200160002054838281518110610de957fe5b6020908102919091010152600101610db0565b509095945050505050565b600080546040805163dacb2d0160e01b815260048101868152602482019283526028604483018190528795946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015610e7057600080fd5b505afa158015610e84573d6000803e3d6000fd5b505050506040513d6020811015610e9a57600080fd5b505190506001600160a01b0381163314610ee55760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b60008481526001602090815260408083205483526005825280832086845282529182902054825187815291820186905260ff168015158284015291517f321123223c2c7bffd7484ae8fb80c6eb45aa5537df0a621c47833ab9376a4a9c9181900360600190a15050506000918252600160209081526040808420548452600582528084209284529190529020805460ff19169055565b600080546040805163dacb2d0160e01b815260048101868152602482019283526028604483018190528795946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015610fe457600080fd5b505afa158015610ff8573d6000803e3d6000fd5b505050506040513d602081101561100e57600080fd5b505190506001600160a01b03811633146110595760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b60008481526001602090815260408083205483526002825280832086845282529182902054825187815291820186905281830181905291517f8a6b612c1a1e056bc504f34fe56106a878fca2d1a50be35360d02ac39d4d46629181900360600190a1505050600091825260016020908152604080842054845260028252808420928452919052812055565b600080546040805163dacb2d0160e01b815260048101878152602482019283526028604483018190528895946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561114d57600080fd5b505afa158015611161573d6000803e3d6000fd5b505050506040513d602081101561117757600080fd5b505190506001600160a01b03811633146111c25760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b610bed858585612421565b60009182526001602090815260408084205484526002825280842092845291905290205490565b600080546040805163dacb2d0160e01b815260048101868152602482019283526028604483018190528795946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d602081101561128757600080fd5b505190506001600160a01b03811633146112d25760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b60008481526001602090815260408083205483526006825280832086845282529182902054825187815291820186905281830181905291517f1f751825a531bf2a176e42d5cb792bb7228163cf53e36b033509ccbe869cfd939181900360600190a1505050600091825260016020908152604080842054845260068252808420928452919052812055565b600080546040805163dacb2d0160e01b815260048101898152602482019283526028604483018190528a95946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b1580156113c657600080fd5b505afa1580156113da573d6000803e3d6000fd5b505050506040513d60208110156113f057600080fd5b505190506001600160a01b038116331461143b5760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b84831461147d576040805162461bcd60e51b815260206004820152601860248201526000805160206126ca833981519152604482015290519081900360640190fd5b60005b85811015610d56576114c08888888481811061149857fe5b905060200201358787858181106114ab57fe5b905060200201356001600160a01b0316612492565b600101611480565b600080546040805163dacb2d0160e01b815260048101878152602482019283526028604483018190528895946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561153157600080fd5b505afa158015611545573d6000803e3d6000fd5b505050506040513d602081101561155b57600080fd5b505190506001600160a01b03811633146115a65760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b610bed85858561251b565b600080546040805163dacb2d0160e01b815260048101878152602482019283526028604483018190528895946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561161a57600080fd5b505afa15801561162e573d6000803e3d6000fd5b505050506040513d602081101561164457600080fd5b505190506001600160a01b038116331461168f5760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b610bed858585612492565b600080546040805163dacb2d0160e01b815260048101878152602482019283526028604483018190528895946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561170357600080fd5b505afa158015611717573d6000803e3d6000fd5b505050506040513d602081101561172d57600080fd5b505190506001600160a01b03811633146117785760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b6000858152600160205260409020546117d8576040805162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74206d69677261746520656d70747920636f6e7472616374000000604482015290519081900360640190fd5b600085815260016020526040808220548683529120558215611804576000858152600160205260408120555b60408051868152602081018690528415158183015290517fa3db9c909daa141b61562c797dae4dc4b3d7751686068c98111db87b2a8c374c9181900360600190a15050505050565b6000546001600160a01b031681565b6060808383905060405190808252806020026020018201604052801561188b578160200160208202803883390190505b506000868152600160209081526040808320548352600690915281209192505b84811015610dfc578160008787848181106118c257fe5b905060200201358152602001908152602001600020548382815181106118e457fe5b60209081029190910101526001016118ab565b60608083839050604051908082528060200260200182016040528015611927578160200160208202803883390190505b506000868152600160209081526040808320548352600490915281209192505b84811015610dfc5781600087878481811061195e57fe5b90506020020135815260200190815260200160002060009054906101000a90046001600160a01b031683828151811061199357fe5b6001600160a01b0390921660209283029190910190910152600101611947565b600080546040805163dacb2d0160e01b815260048101868152602482019283526028604483018190528795946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015611a1c57600080fd5b505afa158015611a30573d6000803e3d6000fd5b505050506040513d6020811015611a4657600080fd5b505190506001600160a01b0381163314611a915760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b6000848152600160209081526040808320548352600482528083208684528252918290205482518781529182018690526001600160a01b031681830181905291517fec1140277b8f20820dc76b92216489238a207d5f22c964099303820fbd2bdf669181900360600190a1505050600091825260016020908152604080842054845260048252808420928452919052902080546001600160a01b0319169055565b6000918252600160209081526040808420548452600482528084209284529190529020546001600160a01b031690565b600080546040805163dacb2d0160e01b815260048101898152602482019283526028604483018190528a95946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015611bcb57600080fd5b505afa158015611bdf573d6000803e3d6000fd5b505050506040513d6020811015611bf557600080fd5b505190506001600160a01b0381163314611c405760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b848314611c82576040805162461bcd60e51b815260206004820152601860248201526000805160206126ca833981519152604482015290519081900360640190fd5b60005b85811015610d5657611cbc88888884818110611c9d57fe5b90506020020135878785818110611cb057fe5b9050602002013561259a565b600101611c85565b60608083839050604051908082528060200260200182016040528015611cf4578160200160208202803883390190505b506000868152600160209081526040808320548352600290915281209192505b84811015610dfc57816000878784818110611d2b57fe5b90506020020135815260200190815260200160002054838281518110611d4d57fe5b6020908102919091010152600101611d14565b60608083839050604051908082528060200260200182016040528015611d90578160200160208202803883390190505b506000868152600160209081526040808320548352600590915281209192505b84811015610dfc57816000878784818110611dc757fe5b90506020020135815260200190815260200160002060009054906101000a900460ff16838281518110611df657fe5b91151560209283029190910190910152600101611db0565b60009182526001602090815260408084205484526003825280842092845291905290205490565b600080546040805163dacb2d0160e01b815260048101898152602482019283526028604483018190528a95946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b158015611e9e57600080fd5b505afa158015611eb2573d6000803e3d6000fd5b505050506040513d6020811015611ec857600080fd5b505190506001600160a01b0381163314611f135760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b848314611f55576040805162461bcd60e51b815260206004820152601860248201526000805160206126ca833981519152604482015290519081900360640190fd5b60005b85811015610d5657611f8f88888884818110611f7057fe5b90506020020135878785818110611f8357fe5b905060200201356123b0565b600101611f58565b60016020526000908152604090205481565b600080546040805163dacb2d0160e01b815260048101878152602482019283526028604483018190528895946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561201257600080fd5b505afa158015612026573d6000803e3d6000fd5b505050506040513d602081101561203c57600080fd5b505190506001600160a01b03811633146120875760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b610bed85858561259a565b60009182526001602090815260408084205484526005825280842092845291905290205460ff1690565b60009182526001602090815260408084205484526006825280842092845291905290205490565b600080546040805163dacb2d0160e01b815260048101898152602482019283526028604483018190528a95946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b15801561214c57600080fd5b505afa158015612160573d6000803e3d6000fd5b505050506040513d602081101561217657600080fd5b505190506001600160a01b03811633146121c15760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b848314612203576040805162461bcd60e51b815260206004820152601860248201526000805160206126ca833981519152604482015290519081900360640190fd5b60005b85811015610d565761223f8888888481811061221e57fe5b9050602002013587878581811061223157fe5b90506020020135151561251b565b600101612206565b600080546040805163dacb2d0160e01b815260048101868152602482019283526028604483018190528795946001600160a01b03169363dacb2d019387939260649091019061267482396040019250505060206040518083038186803b1580156122b057600080fd5b505afa1580156122c4573d6000803e3d6000fd5b505050506040513d60208110156122da57600080fd5b505190506001600160a01b03811633146123255760405162461bcd60e51b815260040180806020018281038252602e81526020018061269c602e913960400191505060405180910390fd5b60008481526001602090815260408083205483526003825280832086845282529182902054825187815291820186905281830181905291517f78962c711b5655608c554689ba42e4890d9e5d3f590b99842612ad39cd7ae0ae9181900360600190a1505050600091825260016020908152604080842054845260038252808420928452919052812055565b80600660006123be8661260b565b815260208082019290925260409081016000908120868252835281902092909255815185815290810184905280820183905290517f961abb018d8a303304c9f1ff1f306c7493a8b68b381bbe4e9a3abf9588a952809181900360600190a1505050565b806002600061242f8661260b565b815260208082019290925260409081016000908120868252835281902092909255815185815290810184905280820183905290517f60738523f766167cfd2310c61593dc795bc9d77de9276ed7e0c514df55e0a2c99181900360600190a1505050565b80600460006124a08661260b565b815260208082019290925260409081016000908120868252835281902080546001600160a01b0319166001600160a01b0394851617905580518681529182018590529183168183015290517f524fb430ecbfd4606a947f9ae445dbf7c9703944cf928789b86f3a8aad639365916060908290030190a1505050565b80600560006125298661260b565b8152602080820192909252604090810160009081208682528352819020805460ff19169315159390931790925581518581529081018490528215158183015290517f9c94ad4cfff55907724cb65340f342d3897dd884e6cd3c2d3777087191d5eb7b916060908290030190a1505050565b80600360006125a88661260b565b815260208082019290925260409081016000908120868252835281902092909255815185815290810184905280820183905290517f0d8877f604dfe262a8ac3904781814f022156c9341af779608a2ae0beef1906c9181900360600190a1505050565b6000818152600160205260408120548061266d5750604080513360601b60208083019190915260348201859052436054808401919091528351808403909101815260749092018352815191810191909120600085815260019092529190208190555b9291505056fe43616e6e6f742066696e6420636f6e747261637420696e2041646472657373205265736f6c76657243616e206f6e6c7920626520696e766f6b65642062792074686520636f6e6669677572656420636f6e7472616374496e707574206c656e67746873206d757374206d617463680000000000000000a265627a7a723158202a2a3d4e260aacb77fdc759d8da358d0d895da39b8739ea8b722a9a4fc1b630c64736f6c63430005100032

Library Used

SafeDecimalMath : 0x0142f40c25ce1f1177ed131101fa19217396cb88

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.