ETH Price: $3,166.63 (+0.98%)

Contract

0xdBdA390fF13caf297Ff95B4301834ba8a35F5f16
 
Transaction Hash
Method
Block
From
To
Withdraw98731642020-04-14 22:08:221671 days ago1586902102IN
0xdBdA390f...8a35F5f16
0 ETH0.000063193
Withdraw98731642020-04-14 22:08:221671 days ago1586902102IN
0xdBdA390f...8a35F5f16
0 ETH0.000063193
Withdraw98731642020-04-14 22:08:221671 days ago1586902102IN
0xdBdA390f...8a35F5f16
0 ETH0.000063193
Withdraw94681972020-02-12 12:45:171733 days ago1581511517IN
0xdBdA390f...8a35F5f16
0 ETH0.000105325
Withdraw94681702020-02-12 12:38:381733 days ago1581511118IN
0xdBdA390f...8a35F5f16
0 ETH0.000105325
Withdraw93201762020-01-20 19:12:081756 days ago1579547528IN
0xdBdA390f...8a35F5f16
0 ETH0.000105325
Withdraw92982492020-01-17 10:40:051759 days ago1579257605IN
0xdBdA390f...8a35F5f16
0 ETH0.000084254
Withdraw92838912020-01-15 5:44:191761 days ago1579067059IN
0xdBdA390f...8a35F5f16
0 ETH0.000042122
Withdraw92838912020-01-15 5:44:191761 days ago1579067059IN
0xdBdA390f...8a35F5f16
0 ETH0.000042122
Withdraw92835832020-01-15 4:38:451761 days ago1579063125IN
0xdBdA390f...8a35F5f16
0 ETH0.000042122
Withdraw92835832020-01-15 4:38:451761 days ago1579063125IN
0xdBdA390f...8a35F5f16
0 ETH0.000042122
Withdraw92835832020-01-15 4:38:451761 days ago1579063125IN
0xdBdA390f...8a35F5f16
0 ETH0.000042122
Retrieve Ether92539932020-01-10 15:56:511766 days ago1578671811IN
0xdBdA390f...8a35F5f16
0 ETH0.00011518
Withdraw92381832020-01-08 5:41:581768 days ago1578462118IN
0xdBdA390f...8a35F5f16
0 ETH0.000077613
Withdraw92347952020-01-07 17:14:571769 days ago1578417297IN
0xdBdA390f...8a35F5f16
0 ETH0.000031261
Withdraw92343252020-01-07 15:34:071769 days ago1578411247IN
0xdBdA390f...8a35F5f16
0 ETH0.000031261
Withdraw92335852020-01-07 12:48:231769 days ago1578401303IN
0xdBdA390f...8a35F5f16
0 ETH0.000031261
Withdraw92325812020-01-07 9:11:071769 days ago1578388267IN
0xdBdA390f...8a35F5f16
0 ETH0.000077613
Withdraw92321972020-01-07 7:45:271769 days ago1578383127IN
0xdBdA390f...8a35F5f16
0 ETH0.000031261
Withdraw92287952020-01-06 19:22:431770 days ago1578338563IN
0xdBdA390f...8a35F5f16
0 ETH0.000031261
Withdraw92282022020-01-06 17:06:511770 days ago1578330411IN
0xdBdA390f...8a35F5f16
0 ETH0.000060722
Withdraw92281382020-01-06 16:52:301770 days ago1578329550IN
0xdBdA390f...8a35F5f16
0 ETH0.000031261
Withdraw91960982020-01-01 13:50:131775 days ago1577886613IN
0xdBdA390f...8a35F5f16
0 ETH0.0005174420
Withdraw91960972020-01-01 13:49:511775 days ago1577886591IN
0xdBdA390f...8a35F5f16
0 ETH0.0006253220
Withdraw91844692019-12-30 5:51:071777 days ago1577685067IN
0xdBdA390f...8a35F5f16
0 ETH0.000025871
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
92539932020-01-10 15:56:511766 days ago1578671811
0xdBdA390f...8a35F5f16
162.14830291 ETH
92347952020-01-07 17:14:571769 days ago1578417297
0xdBdA390f...8a35F5f16
27.61212206 ETH
92343252020-01-07 15:34:071769 days ago1578411247
0xdBdA390f...8a35F5f16
1.01676803 ETH
92335852020-01-07 12:48:231769 days ago1578401303
0xdBdA390f...8a35F5f16
5.67499813 ETH
92321972020-01-07 7:45:271769 days ago1578383127
0xdBdA390f...8a35F5f16
4.63969103 ETH
92287952020-01-06 19:22:431770 days ago1578338563
0xdBdA390f...8a35F5f16
5.94092674 ETH
92282022020-01-06 17:06:511770 days ago1578330411
0xdBdA390f...8a35F5f16
13.30930996 ETH
92281382020-01-06 16:52:301770 days ago1578329550
0xdBdA390f...8a35F5f16
8.32734056 ETH
91960972020-01-01 13:49:511775 days ago1577886591
0xdBdA390f...8a35F5f16
3.60018499 ETH
91823702019-12-29 19:46:181778 days ago1577648778
0xdBdA390f...8a35F5f16
0.60634694 ETH
91804512019-12-29 10:40:501778 days ago1577616050
0xdBdA390f...8a35F5f16
3.03872731 ETH
91752392019-12-28 9:54:451779 days ago1577526885
0xdBdA390f...8a35F5f16
0.70534824 ETH
91727762019-12-27 22:13:551780 days ago1577484835
0xdBdA390f...8a35F5f16
5.08270327 ETH
91672672019-12-26 19:48:431781 days ago1577389723
0xdBdA390f...8a35F5f16
3.61079606 ETH
91173552019-12-16 20:58:251791 days ago1576529905
0xdBdA390f...8a35F5f16
1.47797068 ETH
91145592019-12-16 7:55:321791 days ago1576482932
0xdBdA390f...8a35F5f16
0.72003699 ETH
90997332019-12-13 11:16:551794 days ago1576235815
0xdBdA390f...8a35F5f16
0.12884872 ETH
90986652019-12-13 6:34:321794 days ago1576218872
0xdBdA390f...8a35F5f16
19.63589402 ETH
90907452019-12-11 21:06:431796 days ago1576098403
0xdBdA390f...8a35F5f16
0.83372705 ETH
90874842019-12-11 7:06:011796 days ago1576047961
0xdBdA390f...8a35F5f16
9.0710261 ETH
90840072019-12-10 16:14:191797 days ago1575994459
0xdBdA390f...8a35F5f16
3.45313069 ETH
90820082019-12-10 7:55:461797 days ago1575964546
0xdBdA390f...8a35F5f16
1.6927994 ETH
90702162019-12-08 5:48:131799 days ago1575784093
0xdBdA390f...8a35F5f16
1.28848726 ETH
90686932019-12-07 23:10:501799 days ago1575760250
0xdBdA390f...8a35F5f16
0.82866405 ETH
90633792019-12-07 0:39:591800 days ago1575679199
0xdBdA390f...8a35F5f16
0.8756976 ETH
View All Internal Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x490760f76668feb2e2b48abfd40bb4ff34a3a8233ccd5433e9126ae1363737fd


Contract Source Code Verified (Exact Match)

Contract Name:
DcorpDissolvementProposal

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
petersburg EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-09-02
*/

/**
 *Submitted for verification at Etherscan.io on 2019-08-09
*/

pragma solidity ^0.5.8;

/**
 * @title ERC20 compatible token interface
 *
 * - Implements ERC 20 Token standard
 * - Implements short address attack fix
 *
 * #created 29/09/2017
 * #author Frank Bonnet
 */
contract IToken { 

    /** 
     * Get the total supply of tokens
     * 
     * @return The total supply
     */
    function totalSupply() external view returns (uint);


    /** 
     * Get balance of `_owner` 
     * 
     * @param _owner The address from which the balance will be retrieved
     * @return The balance
     */
    function balanceOf(address _owner) external view returns (uint);


    /** 
     * Send `_value` token to `_to` from `msg.sender`
     * 
     * @param _to The address of the recipient
     * @param _value The amount of token to be transferred
     * @return Whether the transfer was successful or not
     */
    function transfer(address _to, uint _value) external returns (bool);


    /** 
     * Send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
     * 
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value The amount of token to be transferred
     * @return Whether the transfer was successful or not
     */
    function transferFrom(address _from, address _to, uint _value) external returns (bool);


    /** 
     * `msg.sender` approves `_spender` to spend `_value` tokens
     * 
     * @param _spender The address of the account able to transfer the tokens
     * @param _value The amount of tokens to be approved for transfer
     * @return Whether the approval was successful or not
     */
    function approve(address _spender, uint _value) external returns (bool);


    /** 
     * Get the amount of remaining tokens that `_spender` is allowed to spend from `_owner`
     * 
     * @param _owner The address of the account owning tokens
     * @param _spender The address of the account able to transfer the tokens
     * @return Amount of remaining tokens allowed to spent
     */
    function allowance(address _owner, address _spender) external view returns (uint);
}


/**
 * @title ManagedToken interface
 *
 * Adds the following functionality to the basic ERC20 token
 * - Locking
 * - Issuing
 * - Burning 
 *
 * #created 29/09/2017
 * #author Frank Bonnet
 */
contract IManagedToken is IToken { 

    /** 
     * Returns true if the token is locked
     * 
     * @return Whether the token is locked
     */
    function isLocked() external view returns (bool);


    /**
     * Locks the token so that the transfering of value is disabled 
     *
     * @return Whether the unlocking was successful or not
     */
    function lock() external returns (bool);


    /**
     * Unlocks the token so that the transfering of value is enabled 
     *
     * @return Whether the unlocking was successful or not
     */
    function unlock() external returns (bool);


    /**
     * Issues `_value` new tokens to `_to`
     *
     * @param _to The address to which the tokens will be issued
     * @param _value The amount of new tokens to issue
     * @return Whether the tokens where sucessfully issued or not
     */
    function issue(address _to, uint _value) external returns (bool);


    /**
     * Burns `_value` tokens of `_from`
     *
     * @param _from The address that owns the tokens to be burned
     * @param _value The amount of tokens to be burned
     * @return Whether the tokens where sucessfully burned or not 
     */
    function burn(address _from, uint _value) external returns (bool);
}


/**
 * @title Token observer interface
 *
 * Allows a token smart-contract to notify observers 
 * when tokens are received
 *
 * #created 09/10/2017
 * #author Frank Bonnet
 */
contract ITokenObserver {


    /**
     * Called by the observed token smart-contract in order 
     * to notify the token observer when tokens are received
     *
     * @param _from The address that the tokens where send from
     * @param _value The amount of tokens that was received
     */
    function notifyTokensReceived(address _from, uint _value) external;
}


/**
 * @title Abstract token observer
 *
 * Allows observers to be notified by an observed token smart-contract
 * when tokens are received
 *
 * #created 09/10/2017
 * #author Frank Bonnet
 */
contract TokenObserver is ITokenObserver {


    /**
     * Called by the observed token smart-contract in order 
     * to notify the token observer when tokens are received
     *
     * @param _from The address that the tokens where send from
     * @param _value The amount of tokens that was received
     */
    function notifyTokensReceived(address _from, uint _value) public {
        onTokensReceived(msg.sender, _from, _value);
    }


    /**
     * Event handler
     * 
     * Called by `_token` when a token amount is received
     *
     * @param _token The token contract that received the transaction
     * @param _from The account or contract that send the transaction
     * @param _value The value of tokens that where received
     */
    function onTokensReceived(address _token, address _from, uint _value) internal;
}


/**
 * @title Token retrieve interface
 *
 * Allows tokens to be retrieved from a contract
 *
 * #created 29/09/2017
 * #author Frank Bonnet
 */
contract ITokenRetriever {

    /**
     * Extracts tokens from the contract
     *
     * @param _tokenContract The address of ERC20 compatible token
     */
    function retrieveTokens(address _tokenContract) external;
}


/**
 * @title Token retrieve
 *
 * Allows tokens to be retrieved from a contract
 *
 * #created 18/10/2017
 * #author Frank Bonnet
 */
contract TokenRetriever is ITokenRetriever {

    /**
     * Extracts tokens from the contract
     *
     * @param _tokenContract The address of ERC20 compatible token
     */
    function retrieveTokens(address _tokenContract) public {
        IToken tokenInstance = IToken(_tokenContract);
        uint tokenBalance = tokenInstance.balanceOf(address(this));
        if (tokenBalance > 0) {
            tokenInstance.transfer(msg.sender, tokenBalance);
        }
    }
}


/**
 * @title Observable interface
 *
 * Allows observers to register and unregister with the 
 * implementing smart-contract that is observable
 *
 * #created 09/10/2017
 * #author Frank Bonnet
 */
contract IObservable {


    /**
     * Returns true if `_account` is a registered observer
     * 
     * @param _account The account to test against
     * @return Whether the account is a registered observer
     */
    function isObserver(address _account) external view returns (bool);


    /**
     * Gets the amount of registered observers
     * 
     * @return The amount of registered observers
     */
    function getObserverCount() external view returns (uint);


    /**
     * Gets the observer at `_index`
     * 
     * @param _index The index of the observer
     * @return The observers address
     */
    function getObserverAtIndex(uint _index) external view returns (address);


    /**
     * Register `_observer` as an observer
     * 
     * @param _observer The account to add as an observer
     */
    function registerObserver(address _observer) external;


    /**
     * Unregister `_observer` as an observer
     * 
     * @param _observer The account to remove as an observer
     */
    function unregisterObserver(address _observer) external;
}


/**
 * @title Ownership interface
 *
 * Perminent ownership
 *
 * #created 01/10/2017
 * #author Frank Bonnet
 */
contract IOwnership {

    /**
     * Returns true if `_account` is the current owner
     *
     * @param _account The address to test against
     */
    function isOwner(address _account) public view returns (bool);


    /**
     * Gets the current owner
     *
     * @return address The current owner
     */
    function getOwner() public view returns (address);
}


/**
 * @title Ownership
 *
 * Perminent ownership
 *
 * #created 01/10/2017
 * #author Frank Bonnet
 */
contract Ownership is IOwnership {

    // Owner
    address internal owner;


    /**
     * The publisher is the inital owner
     */
    constructor() public {
        owner = msg.sender;
    }


    /**
     * Access is restricted to the current owner
     */
    modifier only_owner() {
        require(msg.sender == owner, "m:only_owner");
        _;
    }


    /**
     * Returns true if `_account` is the current owner
     *
     * @param _account The address to test against
     */
    function isOwner(address _account) public view returns (bool) {
        return _account == owner;
    }


    /**
     * Gets the current owner
     *
     * @return address The current owner
     */
    function getOwner() public view returns (address) {
        return owner;
    }
}

/**
 * @title Transferable ownership interface
 *
 * Enhances ownership by allowing the current owner to 
 * transfer ownership to a new owner
 *
 * #created 01/10/2017
 * #author Frank Bonnet
 */
contract ITransferableOwnership {
    

    /**
     * Transfer ownership to `_newOwner`
     *
     * @param _newOwner The address of the account that will become the new owner 
     */
    function transferOwnership(address _newOwner) external;
}


/**
 * @title Transferable ownership
 *
 * Enhances ownership by allowing the current owner to 
 * transfer ownership to a new owner
 *
 * #created 01/10/2017
 * #author Frank Bonnet
 */
contract TransferableOwnership is ITransferableOwnership, Ownership {


    /**
     * Transfer ownership to `_newOwner`
     *
     * @param _newOwner The address of the account that will become the new owner 
     */
    function transferOwnership(address _newOwner) public only_owner {
        owner = _newOwner;
    }
}

/**
 * @title Multi-owned interface
 *
 * Interface that allows multiple owners
 *
 * #created 09/10/2017
 * #author Frank Bonnet
 */
contract IMultiOwned {

    /**
     * Returns true if `_account` is an owner
     *
     * @param _account The address to test against
     */
    function isOwner(address _account) public view returns (bool);


    /**
     * Returns the amount of owners
     *
     * @return The amount of owners
     */
    function getOwnerCount() public view returns (uint);


    /**
     * Gets the owner at `_index`
     *
     * @param _index The index of the owner
     * @return The address of the owner found at `_index`
     */
    function getOwnerAt(uint _index) public view returns (address);


     /**
     * Adds `_account` as a new owner
     *
     * @param _account The account to add as an owner
     */
    function addOwner(address _account) public;


    /**
     * Removes `_account` as an owner
     *
     * @param _account The account to remove as an owner
     */
    function removeOwner(address _account) public;
}

/**
 * @title IAuthenticator 
 *
 * Authenticator interface
 *
 * #created 15/10/2017
 * #author Frank Bonnet
 */
contract IAuthenticator {
    

    /**
     * Authenticate 
     *
     * Returns whether `_account` is authenticated or not
     *
     * @param _account The account to authenticate
     * @return whether `_account` is successfully authenticated
     */
    function authenticate(address _account) public view returns (bool);
}


/**
 * @title Dcorp Dissolvement Proposal
 *
 * Serves as a placeholder for the Dcorp funds, allowing the community the ability 
 * to claim their part of the ether. 
 *
 * This contact is deployed upon receiving the Ether that is currently held by the previous proxy contract.
 *
 * #created 18/7/2019
 * #author Frank Bonnet
 */
contract DcorpDissolvementProposal is TokenObserver, TransferableOwnership, TokenRetriever {

    enum Stages {
        Deploying,
        Deployed,
        Executed
    }

    struct Balance {
        uint drps;
        uint drpu;
        uint index;
    }

    // State
    Stages private stage;

    // Settings
    uint public constant CLAIMING_DURATION = 60 days;
    uint public constant WITHDRAW_DURATION = 60 days;
    uint public constant DISSOLVEMENT_AMOUNT = 948 ether; // +- 150000 euro

    // Alocated balances
    mapping (address => Balance) private allocated;
    address[] private allocatedIndex;

    // Whitelist
    IAuthenticator public authenticator;

    // Tokens
    IToken public drpsToken;
    IToken public drpuToken;

    // Previous proxy
    address public prevProxy;
    uint public prevProxyRecordedBalance;

    // Dissolvement
    address payable public dissolvementFund;

    uint public claimTotalWeight;
    uint public claimTotalEther;
    uint public claimDeadline;
    uint public withdrawDeadline;
    

    /**
     * Require that the sender is authentcated
     */
    modifier only_authenticated() {
        require(authenticator.authenticate(msg.sender), "m:only_authenticated");
        _;
    }


    /**
     * Require that the contract is in `_stage` 
     */
    modifier only_at_stage(Stages _stage) {
        require(stage == _stage, "m:only_at_stage");
        _;
    }


    /**
     * Require `_token` to be one of the drp tokens
     *
     * @param _token The address to test against
     */
    modifier only_accepted_token(address _token) {
        require(_token == address(drpsToken) || _token == address(drpuToken), "m:only_accepted_token");
        _;
    }


    /**
     * Require that `_token` is not one of the drp tokens
     *
     * @param _token The address to test against
     */
    modifier not_accepted_token(address _token) {
        require(_token != address(drpsToken) && _token != address(drpuToken), "m:not_accepted_token");
        _;
    }


    /**
     * Require that sender has more than zero tokens 
     */
    modifier only_token_holder() {
        require(allocated[msg.sender].drps > 0 || allocated[msg.sender].drpu > 0, "m:only_token_holder");
        _;
    }


    /**
     * Require that the claiming period for the proposal has
     * not yet ended
     */
    modifier only_during_claiming_period() {
        require(claimDeadline > 0 && now <= claimDeadline, "m:only_during_claiming_period");
        _;
    }


    /**
     * Require that the claiming period for the proposal has ended
     */
    modifier only_after_claiming_period() {
        require(claimDeadline > 0 && now > claimDeadline, "m:only_after_claiming_period");
        _;
    }


    /**
     * Require that the withdraw period for the proposal has
     * not yet ended
     */
    modifier only_during_withdraw_period() {
        require(withdrawDeadline > 0 && now <= withdrawDeadline, "m:only_during_withdraw_period");
        _;
    }


    /**
     * Require that the withdraw period for the proposal has ended
     */
    modifier only_after_withdraw_period() {
        require(withdrawDeadline > 0 && now > withdrawDeadline, "m:only_after_withdraw_period");
        _;
    }
    

    /**
     * Construct the proxy
     *
     * @param _authenticator Whitelist
     * @param _drpsToken The new security token
     * @param _drpuToken The new utility token
     * @param _prevProxy Proxy accepts and requires ether from the prev proxy
     * @param _dissolvementFund Ether to be used for the dissolvement of DCORP
     */
    constructor(address _authenticator, address _drpsToken, address _drpuToken, address _prevProxy, address payable _dissolvementFund) public {
        authenticator = IAuthenticator(_authenticator);
        drpsToken = IToken(_drpsToken);
        drpuToken = IToken(_drpuToken);
        prevProxy = _prevProxy;
        prevProxyRecordedBalance = _prevProxy.balance;
        dissolvementFund = _dissolvementFund;
        stage = Stages.Deploying;
    }


    /**
     * Returns whether the proposal is being deployed
     *
     * @return Whether the proposal is in the deploying stage
     */
    function isDeploying() public view returns (bool) {
        return stage == Stages.Deploying;
    }


    /**
     * Returns whether the proposal is deployed. The proposal is deployed 
     * when it receives Ether from the prev proxy contract
     *
     * @return Whether the proposal is deployed
     */
    function isDeployed() public view returns (bool) {
        return stage == Stages.Deployed;
    }


    /**
     * Returns whether the proposal is executed
     *
     * @return Whether the proposal is deployed
     */
    function isExecuted() public view returns (bool) {
        return stage == Stages.Executed;
    }


    /**
     * Accept eth from the prev proxy while deploying
     */
    function () external payable only_at_stage(Stages.Deploying) {
        require(msg.sender == address(prevProxy), "f:fallback;e:invalid_sender");
    }


    /**
     * Deploy the proposal
     */
    function deploy() public only_owner only_at_stage(Stages.Deploying) {
        require(address(this).balance >= prevProxyRecordedBalance, "f:deploy;e:invalid_balance");

        // Mark deployed
        stage = Stages.Deployed;
        
        // Start claiming period
        claimDeadline = now + CLAIMING_DURATION;

        // Remove prev proxy as observer
        IObservable(address(drpsToken)).unregisterObserver(prevProxy);
        IObservable(address(drpuToken)).unregisterObserver(prevProxy);

        // Register this proxy as observer
        IObservable(address(drpsToken)).registerObserver(address(this));
        IObservable(address(drpuToken)).registerObserver(address(this));

        // Transfer dissolvement funds
        uint amountToTransfer = DISSOLVEMENT_AMOUNT;
        if (amountToTransfer > address(this).balance) {
            amountToTransfer = address(this).balance;
        }

        dissolvementFund.transfer(amountToTransfer);
    }


    /**
     * Returns the combined total supply of all drp tokens
     *
     * @return The combined total drp supply
     */
    function getTotalSupply() public view returns (uint) {
        uint sum = 0; 
        sum += drpsToken.totalSupply();
        sum += drpuToken.totalSupply();
        return sum;
    }


    /**
     * Returns true if `_owner` has a balance allocated
     *
     * @param _owner The account that the balance is allocated for
     * @return True if there is a balance that belongs to `_owner`
     */
    function hasBalance(address _owner) public view returns (bool) {
        return allocatedIndex.length > 0 && _owner == allocatedIndex[allocated[_owner].index];
    }


    /** 
     * Get the allocated drps or drpu token balance of `_owner`
     * 
     * @param _token The address to test against
     * @param _owner The address from which the allocated token balance will be retrieved
     * @return The allocated drps token balance
     */
    function balanceOf(address _token, address _owner) public view returns (uint) {
        uint balance = 0;
        if (address(drpsToken) == _token) {
            balance = allocated[_owner].drps;
        } 
        
        else if (address(drpuToken) == _token) {
            balance = allocated[_owner].drpu;
        }

        return balance;
    }


    /**
     * Executes the proposal
     *
     * Dissolves DCORP Decentralized and allows the ether to be withdrawn
     *
     * Should only be called after the claiming period
     */
    function execute() public only_at_stage(Stages.Deployed) only_after_claiming_period {
        
        // Mark as executed
        stage = Stages.Executed;
        withdrawDeadline = now + WITHDRAW_DURATION;

        // Remaining balance is claimable
        claimTotalEther = address(this).balance;

        // Disable tokens
        IManagedToken(address(drpsToken)).lock();
        IManagedToken(address(drpuToken)).lock();

        // Remove self token as owner
        IMultiOwned(address(drpsToken)).removeOwner(address(this));
        IMultiOwned(address(drpuToken)).removeOwner(address(this));
    }


    /**
     * Allows an account to claim ether during the claiming period
     */
    function withdraw() public only_at_stage(Stages.Executed) only_during_withdraw_period only_token_holder only_authenticated {
        Balance storage b = allocated[msg.sender];
        uint weight = b.drpu + _convertDrpsWeight(b.drps);

        // Mark claimed
        b.drpu = 0;
        b.drps = 0;

        // Transfer amount
        uint amountToTransfer = weight * claimTotalEther / claimTotalWeight;
        msg.sender.transfer(amountToTransfer);
    }


    /**
     * Event handler that initializes the token conversion
     * 
     * Called by `_token` when a token amount is received on 
     * the address of this token changer
     *
     * @param _token The token contract that received the transaction
     * @param _from The account or contract that send the transaction
     * @param _value The value of tokens that where received
     */
    function onTokensReceived(address _token, address _from, uint _value) internal only_during_claiming_period only_accepted_token(_token) {
        require(_token == msg.sender, "f:onTokensReceived;e:only_receiving_token");

        // Allocate tokens
        if (!hasBalance(_from)) {
            allocated[_from] = Balance(
                0, 0, allocatedIndex.push(_from) - 1);
        }

        Balance storage b = allocated[_from];
        if (_token == address(drpsToken)) {
            b.drps += _value;
            claimTotalWeight += _convertDrpsWeight(_value);
        } else {
            b.drpu += _value;
            claimTotalWeight += _value;
        }
    }


    /**
     * Failsafe mechanism
     * 
     * Allows the owner to retrieve ether from the contract that was not claimed 
     * within the claiming period.
     */
    function retrieveEther() public only_owner only_after_withdraw_period {
        selfdestruct(msg.sender);
    }


    /**
     * Failsafe mechanism
     * 
     * Allows the owner to retrieve tokens (other than DRPS and DRPU tokens) from the contract that 
     * might have been send there by accident
     *
     * @param _tokenContract The address of ERC20 compatible token
     */
    function retrieveTokens(address _tokenContract) public only_owner not_accepted_token(_tokenContract) {
        super.retrieveTokens(_tokenContract);
    }


    /**
     * Converts the weight for DRPS tokens
     * 
     * @param _value The amount of tokens to convert
     */
    function _convertDrpsWeight(uint _value) private pure returns (uint) {
        return _value * 2;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"claimTotalWeight","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"prevProxyRecordedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isExecuted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"retrieveEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"hasBalance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authenticator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"drpsToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"claimDeadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CLAIMING_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"prevProxy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"execute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deploy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WITHDRAW_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"notifyTokensReceived","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"claimTotalEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"drpuToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DISSOLVEMENT_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"retrieveTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dissolvementFund","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isDeployed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawDeadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isDeploying","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"},{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_authenticator","type":"address"},{"name":"_drpsToken","type":"address"},{"name":"_drpuToken","type":"address"},{"name":"_prevProxy","type":"address"},{"name":"_dissolvementFund","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

608060405234801561001057600080fd5b5060405160a080612a65833981018060405260a081101561003057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163160078190555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060146101000a81548160ff0219169083600281111561022a57fe5b02179055505050505050612822806102436000396000f3fe6080604052600436106101b75760003560e01c806377913322116100ec578063c3d92fac1161008a578063cd031d3d11610064578063cd031d3d146108b3578063f2fde38b146108de578063f6444bcc1461092f578063f7888aec1461095e576101b7565b8063c3d92fac14610802578063c4e41b2214610859578063c52046de14610884576101b7565b8063922b5a62116100c6578063922b5a6214610704578063a29d48591461072f578063a5096b0c14610786578063ac4ddd9f146107b1576101b7565b806377913322146106275780637cf5d66f14610652578063893d20e8146106ad576101b7565b80633905cab8116101595780634b0e890e116101335780634b0e890e146105775780634b9b4658146105a257806361461954146105f9578063775c300c14610610576101b7565b80633905cab8146104de5780633ba86c44146105355780633ccfd60b14610560576101b7565b8063224ee04f11610195578063224ee04f1461039e57806322b2678a146103b55780632335c76b1461041e5780632f54bf6e14610475576101b7565b8063103f765c146103195780631bece0ae146103445780631c9feaa51461036f575b60008060028111156101c557fe5b600060149054906101000a900460ff1660028111156101e057fe5b14610253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f663a66616c6c6261636b3b653a696e76616c69645f73656e646572000000000081525060200191505060405180910390fd5b50005b34801561032557600080fd5b5061032e6109e3565b6040518082815260200191505060405180910390f35b34801561035057600080fd5b506103596109e9565b6040518082815260200191505060405180910390f35b34801561037b57600080fd5b506103846109ef565b604051808215151515815260200191505060405180910390f35b3480156103aa57600080fd5b506103b3610a1e565b005b3480156103c157600080fd5b50610404600480360360208110156103d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b7e565b604051808215151515815260200191505060405180910390f35b34801561042a57600080fd5b50610433610c3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048157600080fd5b506104c46004803603602081101561049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c65565b604051808215151515815260200191505060405180910390f35b3480156104ea57600080fd5b506104f3610cbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054157600080fd5b5061054a610ce4565b6040518082815260200191505060405180910390f35b34801561056c57600080fd5b50610575610cea565b005b34801561058357600080fd5b5061058c61112c565b6040518082815260200191505060405180910390f35b3480156105ae57600080fd5b506105b7611133565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060557600080fd5b5061060e611159565b005b34801561061c57600080fd5b50610625611589565b005b34801561063357600080fd5b5061063c611b83565b6040518082815260200191505060405180910390f35b34801561065e57600080fd5b506106ab6004803603604081101561067557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b8a565b005b3480156106b957600080fd5b506106c2611b99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561071057600080fd5b50610719611bc2565b6040518082815260200191505060405180910390f35b34801561073b57600080fd5b50610744611bc8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079257600080fd5b5061079b611bee565b6040518082815260200191505060405180910390f35b3480156107bd57600080fd5b50610800600480360360208110156107d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bfb565b005b34801561080e57600080fd5b50610817611de9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086557600080fd5b5061086e611e0f565b6040518082815260200191505060405180910390f35b34801561089057600080fd5b50610899611f6b565b604051808215151515815260200191505060405180910390f35b3480156108bf57600080fd5b506108c8611f9b565b6040518082815260200191505060405180910390f35b3480156108ea57600080fd5b5061092d6004803603602081101561090157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa1565b005b34801561093b57600080fd5b506109446120a6565b604051808215151515815260200191505060405180910390f35b34801561096a57600080fd5b506109cd6004803603604081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d5565b6040518082815260200191505060405180910390f35b60095481565b60075481565b60006002808111156109fd57fe5b600060149054906101000a900460ff166002811115610a1857fe5b14905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c54118015610af35750600c5442115b610b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6d3a6f6e6c795f61667465725f77697468647261775f706572696f640000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b600080600280549050118015610c3857506002600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015481548110610bde57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6002806002811115610cf857fe5b600060149054906101000a900460ff166002811115610d1357fe5b14610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c54118015610d9a5750600c544211155b610e0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d3a6f6e6c795f647572696e675f77697468647261775f706572696f6400000081525060200191505060405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541180610e9f57506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154115b610f11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6d3a6f6e6c795f746f6b656e5f686f6c6465720000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166308e0d29d336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b810190808051906020019092919050505061105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6d3a6f6e6c795f61757468656e7469636174656400000000000000000000000081525060200191505060405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006110af8260000154612223565b826001015401905060008260010181905550600082600001819055506000600954600a548302816110dc57fe5b0490503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611125573d6000803e3d6000fd5b5050505050565b624f1a0081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180600281111561116757fe5b600060149054906101000a900460ff16600281111561118257fe5b146111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b541180156112085750600b5442115b61127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6d3a6f6e6c795f61667465725f636c61696d696e675f706572696f640000000081525060200191505060405180910390fd5b6002600060146101000a81548160ff0219169083600281111561129957fe5b0217905550624f1a004201600c819055503073ffffffffffffffffffffffffffffffffffffffff1631600a81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f83d08ba6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b505050506040513d602081101561135c57600080fd5b810190808051906020019092919050505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f83d08ba6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113d857600080fd5b505af11580156113ec573d6000803e3d6000fd5b505050506040513d602081101561140257600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663173825d9306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156114b557600080fd5b505af11580156114c9573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663173825d9306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600281111561165957fe5b600060149054906101000a900460ff16600281111561167457fe5b146116e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b6007543073ffffffffffffffffffffffffffffffffffffffff16311015611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f663a6465706c6f793b653a696e76616c69645f62616c616e636500000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083600281111561179557fe5b0217905550624f1a004201600b81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f94d71a0600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f94d71a0600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c07398d306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156119fd57600080fd5b505af1158015611a11573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c07398d306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050506000683364249147de50000090503073ffffffffffffffffffffffffffffffffffffffff1631811115611b16573073ffffffffffffffffffffffffffffffffffffffff163190505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b7e573d6000803e3d6000fd5b505050565b624f1a0081565b611b95338383612230565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b683364249147de50000081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611d6a5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611ddc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6d3a6e6f745f61636365707465645f746f6b656e00000000000000000000000081525060200191505060405180910390fd5b611de58261263a565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b810190808051906020019092919050505081019050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2557600080fd5b505afa158015611f39573d6000803e3d6000fd5b505050506040513d6020811015611f4f57600080fd5b8101908080519060200190929190505050810190508091505090565b600060016002811115611f7a57fe5b600060149054906101000a900460ff166002811115611f9557fe5b14905090565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060028111156120b457fe5b600060149054906101000a900460ff1660028111156120cf57fe5b14905090565b600080600090508373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561217c57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050612219565b8373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561221857600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490505b5b8091505092915050565b6000600282029050919050565b6000600b541180156122445750600b544211155b6122b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d3a6f6e6c795f647572696e675f636c61696d696e675f706572696f6400000081525060200191505060405180910390fd5b82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123605750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d3a6f6e6c795f61636365707465645f746f6b656e000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806127ce6029913960400191505060405180910390fd5b61245f83610b7e565b6125485760405180606001604052806000815260200160008152602001600160028690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050505b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612610578281600001600082825401925050819055506125fc83612223565b600960008282540192505081905550612633565b828160010160008282540192505081905550826009600082825401925050819055505b5050505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126be57600080fd5b505afa1580156126d2573d6000803e3d6000fd5b505050506040513d60208110156126e857600080fd5b8101908080519060200190929190505050905060008111156127c8578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b505050506040513d60208110156127b557600080fd5b8101908080519060200190929190505050505b50505056fe663a6f6e546f6b656e7352656365697665643b653a6f6e6c795f726563656976696e675f746f6b656ea165627a7a72305820e2af9f115031dd6c5be6819cec1b430768ab0a2b92155d5fdf6b56f4da7fc83d0029000000000000000000000000dd5cec9019ec8449a5d01d0d8175e6519530d2760000000000000000000000003e250a4f78410c29cfc39463a81f14a226690eb4000000000000000000000000e30e02f049957e2a5907589e06ba646fb2c321ba00000000000000000000000001d5d0108589f3c52fcce6e65503bb6515e66698000000000000000000000000a96fd4994168bf4a15aef72142ac605cf45b6d8e

Deployed Bytecode

0x6080604052600436106101b75760003560e01c806377913322116100ec578063c3d92fac1161008a578063cd031d3d11610064578063cd031d3d146108b3578063f2fde38b146108de578063f6444bcc1461092f578063f7888aec1461095e576101b7565b8063c3d92fac14610802578063c4e41b2214610859578063c52046de14610884576101b7565b8063922b5a62116100c6578063922b5a6214610704578063a29d48591461072f578063a5096b0c14610786578063ac4ddd9f146107b1576101b7565b806377913322146106275780637cf5d66f14610652578063893d20e8146106ad576101b7565b80633905cab8116101595780634b0e890e116101335780634b0e890e146105775780634b9b4658146105a257806361461954146105f9578063775c300c14610610576101b7565b80633905cab8146104de5780633ba86c44146105355780633ccfd60b14610560576101b7565b8063224ee04f11610195578063224ee04f1461039e57806322b2678a146103b55780632335c76b1461041e5780632f54bf6e14610475576101b7565b8063103f765c146103195780631bece0ae146103445780631c9feaa51461036f575b60008060028111156101c557fe5b600060149054906101000a900460ff1660028111156101e057fe5b14610253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f663a66616c6c6261636b3b653a696e76616c69645f73656e646572000000000081525060200191505060405180910390fd5b50005b34801561032557600080fd5b5061032e6109e3565b6040518082815260200191505060405180910390f35b34801561035057600080fd5b506103596109e9565b6040518082815260200191505060405180910390f35b34801561037b57600080fd5b506103846109ef565b604051808215151515815260200191505060405180910390f35b3480156103aa57600080fd5b506103b3610a1e565b005b3480156103c157600080fd5b50610404600480360360208110156103d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b7e565b604051808215151515815260200191505060405180910390f35b34801561042a57600080fd5b50610433610c3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048157600080fd5b506104c46004803603602081101561049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c65565b604051808215151515815260200191505060405180910390f35b3480156104ea57600080fd5b506104f3610cbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054157600080fd5b5061054a610ce4565b6040518082815260200191505060405180910390f35b34801561056c57600080fd5b50610575610cea565b005b34801561058357600080fd5b5061058c61112c565b6040518082815260200191505060405180910390f35b3480156105ae57600080fd5b506105b7611133565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060557600080fd5b5061060e611159565b005b34801561061c57600080fd5b50610625611589565b005b34801561063357600080fd5b5061063c611b83565b6040518082815260200191505060405180910390f35b34801561065e57600080fd5b506106ab6004803603604081101561067557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b8a565b005b3480156106b957600080fd5b506106c2611b99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561071057600080fd5b50610719611bc2565b6040518082815260200191505060405180910390f35b34801561073b57600080fd5b50610744611bc8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079257600080fd5b5061079b611bee565b6040518082815260200191505060405180910390f35b3480156107bd57600080fd5b50610800600480360360208110156107d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bfb565b005b34801561080e57600080fd5b50610817611de9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086557600080fd5b5061086e611e0f565b6040518082815260200191505060405180910390f35b34801561089057600080fd5b50610899611f6b565b604051808215151515815260200191505060405180910390f35b3480156108bf57600080fd5b506108c8611f9b565b6040518082815260200191505060405180910390f35b3480156108ea57600080fd5b5061092d6004803603602081101561090157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa1565b005b34801561093b57600080fd5b506109446120a6565b604051808215151515815260200191505060405180910390f35b34801561096a57600080fd5b506109cd6004803603604081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d5565b6040518082815260200191505060405180910390f35b60095481565b60075481565b60006002808111156109fd57fe5b600060149054906101000a900460ff166002811115610a1857fe5b14905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c54118015610af35750600c5442115b610b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6d3a6f6e6c795f61667465725f77697468647261775f706572696f640000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b600080600280549050118015610c3857506002600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015481548110610bde57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6002806002811115610cf857fe5b600060149054906101000a900460ff166002811115610d1357fe5b14610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c54118015610d9a5750600c544211155b610e0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d3a6f6e6c795f647572696e675f77697468647261775f706572696f6400000081525060200191505060405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541180610e9f57506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154115b610f11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6d3a6f6e6c795f746f6b656e5f686f6c6465720000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166308e0d29d336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b810190808051906020019092919050505061105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6d3a6f6e6c795f61757468656e7469636174656400000000000000000000000081525060200191505060405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006110af8260000154612223565b826001015401905060008260010181905550600082600001819055506000600954600a548302816110dc57fe5b0490503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611125573d6000803e3d6000fd5b5050505050565b624f1a0081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180600281111561116757fe5b600060149054906101000a900460ff16600281111561118257fe5b146111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b541180156112085750600b5442115b61127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6d3a6f6e6c795f61667465725f636c61696d696e675f706572696f640000000081525060200191505060405180910390fd5b6002600060146101000a81548160ff0219169083600281111561129957fe5b0217905550624f1a004201600c819055503073ffffffffffffffffffffffffffffffffffffffff1631600a81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f83d08ba6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b505050506040513d602081101561135c57600080fd5b810190808051906020019092919050505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f83d08ba6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113d857600080fd5b505af11580156113ec573d6000803e3d6000fd5b505050506040513d602081101561140257600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663173825d9306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156114b557600080fd5b505af11580156114c9573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663173825d9306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600281111561165957fe5b600060149054906101000a900460ff16600281111561167457fe5b146116e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d3a6f6e6c795f61745f7374616765000000000000000000000000000000000081525060200191505060405180910390fd5b6007543073ffffffffffffffffffffffffffffffffffffffff16311015611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f663a6465706c6f793b653a696e76616c69645f62616c616e636500000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083600281111561179557fe5b0217905550624f1a004201600b81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f94d71a0600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f94d71a0600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c07398d306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156119fd57600080fd5b505af1158015611a11573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c07398d306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050506000683364249147de50000090503073ffffffffffffffffffffffffffffffffffffffff1631811115611b16573073ffffffffffffffffffffffffffffffffffffffff163190505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b7e573d6000803e3d6000fd5b505050565b624f1a0081565b611b95338383612230565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b683364249147de50000081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611d6a5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611ddc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6d3a6e6f745f61636365707465645f746f6b656e00000000000000000000000081525060200191505060405180910390fd5b611de58261263a565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b810190808051906020019092919050505081019050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2557600080fd5b505afa158015611f39573d6000803e3d6000fd5b505050506040513d6020811015611f4f57600080fd5b8101908080519060200190929190505050810190508091505090565b600060016002811115611f7a57fe5b600060149054906101000a900460ff166002811115611f9557fe5b14905090565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d3a6f6e6c795f6f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060028111156120b457fe5b600060149054906101000a900460ff1660028111156120cf57fe5b14905090565b600080600090508373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561217c57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050612219565b8373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561221857600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490505b5b8091505092915050565b6000600282029050919050565b6000600b541180156122445750600b544211155b6122b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d3a6f6e6c795f647572696e675f636c61696d696e675f706572696f6400000081525060200191505060405180910390fd5b82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123605750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d3a6f6e6c795f61636365707465645f746f6b656e000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806127ce6029913960400191505060405180910390fd5b61245f83610b7e565b6125485760405180606001604052806000815260200160008152602001600160028690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050505b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612610578281600001600082825401925050819055506125fc83612223565b600960008282540192505081905550612633565b828160010160008282540192505081905550826009600082825401925050819055505b5050505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126be57600080fd5b505afa1580156126d2573d6000803e3d6000fd5b505050506040513d60208110156126e857600080fd5b8101908080519060200190929190505050905060008111156127c8578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b505050506040513d60208110156127b557600080fd5b8101908080519060200190929190505050505b50505056fe663a6f6e546f6b656e7352656365697665643b653a6f6e6c795f726563656976696e675f746f6b656ea165627a7a72305820e2af9f115031dd6c5be6819cec1b430768ab0a2b92155d5fdf6b56f4da7fc83d0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dd5cec9019ec8449a5d01d0d8175e6519530d2760000000000000000000000003e250a4f78410c29cfc39463a81f14a226690eb4000000000000000000000000e30e02f049957e2a5907589e06ba646fb2c321ba00000000000000000000000001d5d0108589f3c52fcce6e65503bb6515e66698000000000000000000000000a96fd4994168bf4a15aef72142ac605cf45b6d8e

-----Decoded View---------------
Arg [0] : _authenticator (address): 0xDD5cec9019ec8449A5d01d0d8175e6519530D276
Arg [1] : _drpsToken (address): 0x3E250A4f78410c29cfC39463a81f14a226690eB4
Arg [2] : _drpuToken (address): 0xe30e02f049957e2A5907589e06Ba646fB2c321bA
Arg [3] : _prevProxy (address): 0x01D5d0108589f3C52FCce6e65503BB6515e66698
Arg [4] : _dissolvementFund (address): 0xA96Fd4994168bF4A15aeF72142ac605cF45b6d8e

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000dd5cec9019ec8449a5d01d0d8175e6519530d276
Arg [1] : 0000000000000000000000003e250a4f78410c29cfc39463a81f14a226690eb4
Arg [2] : 000000000000000000000000e30e02f049957e2a5907589e06ba646fb2c321ba
Arg [3] : 00000000000000000000000001d5d0108589f3c52fcce6e65503bb6515e66698
Arg [4] : 000000000000000000000000a96fd4994168bf4a15aef72142ac605cf45b6d8e


Deployed Bytecode Sourcemap

12181:11146:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17315:16;13620:6;13611:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;13603:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17374:9;;;;;;;;;;;17352:32;;:10;:32;;;17344:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17272:152;12181:11146;13134:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13134:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13020:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13020:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17090:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17090:99:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22526:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22526:113:0;;;:::i;:::-;;19027:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19027:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19027:167:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12845:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12845:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8946:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8946:105:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8946:105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12904:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12904:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13203:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13203:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20773:468;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20773:468:0;;;:::i;:::-;;12518:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12518:48:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12989:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12989:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20054:623;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20054:623:0;;;:::i;:::-;;17480:988;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17480:988:0;;;:::i;:::-;;12573:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12573:48:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4886:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4886:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4886:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9160:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9160:81:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13169:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13169:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12934:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12934:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12628:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12628:52:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22928:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22928:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22928:156:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13086:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13086:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18610:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18610:188:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16857:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16857:99:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13235:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13235:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10144:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10144:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10144:100:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16535:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16535:101:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19487:362;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19487:362:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19487:362:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13134:28;;;;:::o;13020:36::-;;;;:::o;17090:99::-;17133:4;17166:15;17157:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;17150:31;;17090:99;:::o;22526:113::-;8760:5;;;;;;;;;;;8746:19;;:10;:19;;;8738:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15481:1;15462:16;;:20;:46;;;;;15492:16;;15486:3;:22;15462:46;15454:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22620:10;22607:24;;;19027:167;19084:4;19132:1;19108:14;:21;;;;:25;:78;;;;;19147:14;19162:9;:17;19172:6;19162:17;;;;;;;;;;;;;;;:23;;;19147:39;;;;;;;;;;;;;;;;;;;;;;;;;19137:49;;:6;:49;;;19108:78;19101:85;;19027:167;;;:::o;12845:35::-;;;;;;;;;;;;;:::o;8946:105::-;9002:4;9038:5;;;;;;;;;;;9026:17;;:8;:17;;;9019:24;;8946:105;;;:::o;12904:23::-;;;;;;;;;;;;;:::o;13203:25::-;;;;:::o;20773:468::-;20814:15;13620:6;13611:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;13603:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15227:1;15208:16;;:20;:47;;;;;15239:16;;15232:3;:23;;15208:47;15200:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14448:1;14419:9;:21;14429:10;14419:21;;;;;;;;;;;;;;;:26;;;:30;:64;;;;14482:1;14453:9;:21;14463:10;14453:21;;;;;;;;;;;;;;;:26;;;:30;14419:64;14411:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13393:13;;;;;;;;;;;:26;;;13420:10;13393:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13393:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13393:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13393:38:0;;;;;;;;;;;;;;;;13385:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20907:17;20927:9;:21;20937:10;20927:21;;;;;;;;;;;;;;;20907:41;;20959:11;20982:26;21001:1;:6;;;20982:18;:26::i;:::-;20973:1;:6;;;:35;20959:49;;21055:1;21046;:6;;:10;;;;21076:1;21067;:6;;:10;;;;21118:21;21169:16;;21151:15;;21142:6;:24;:43;;;;;;21118:67;;21196:10;:19;;:37;21216:16;21196:37;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21196:37:0;13467:1;;;20773:468;:::o;12518:48::-;12559:7;12518:48;:::o;12989:24::-;;;;;;;;;;;;;:::o;20054:623::-;20094:15;13620:6;13611:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;13603:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14961:1;14945:13;;:17;:40;;;;;14972:13;;14966:3;:19;14945:40;14937:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20196:15;20188:5;;:23;;;;;;;;;;;;;;;;;;;;;;;;12614:7;20241:3;:23;20222:16;:42;;;;20346:4;20338:21;;;20320:15;:39;;;;20421:9;;;;;;;;;;;20399:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20399:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20399:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20399:40:0;;;;;;;;;;;;;;;;;20472:9;;;;;;;;;;;20450:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20450:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20450:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20450:40:0;;;;;;;;;;;;;;;;;20562:9;;;;;;;;;;;20542:43;;;20594:4;20542:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20542:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20542:58:0;;;;20631:9;;;;;;;;;;;20611:43;;;20663:4;20611:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20611:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20611:58:0;;;;20054:623;:::o;17480:988::-;8760:5;;;;;;;;;;;8746:19;;:10;:19;;;8738:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17530:16;13620:6;13611:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;13603:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17592:24;;17575:4;17567:21;;;:49;;17559:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17694:15;17686:5;;:23;;;;;;;;;;;;;;;;;;;;;;;;12559:7;17780:3;:23;17764:13;:39;;;;17878:9;;;;;;;;;;;17858:50;;;17909:9;;;;;;;;;;;17858:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17858:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17858:61:0;;;;17950:9;;;;;;;;;;;17930:50;;;17981:9;;;;;;;;;;;17930:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17930:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17930:61:0;;;;18068:9;;;;;;;;;;;18048:48;;;18105:4;18048:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18048:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18048:63:0;;;;18142:9;;;;;;;;;;;18122:48;;;18179:4;18122:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18122:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18122:63:0;;;;18238:21;12671:9;18238:43;;18323:4;18315:21;;;18296:16;:40;18292:113;;;18380:4;18372:21;;;18353:40;;18292:113;18417:16;;;;;;;;;;;:25;;:43;18443:16;18417:43;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18417:43:0;13657:1;8793;17480:988::o;12573:48::-;12614:7;12573:48;:::o;4886:127::-;4962:43;4979:10;4991:5;4998:6;4962:16;:43::i;:::-;4886:127;;:::o;9160:81::-;9201:7;9228:5;;;;;;;;;;;9221:12;;9160:81;:::o;13169:27::-;;;;:::o;12934:23::-;;;;;;;;;;;;;:::o;12628:52::-;12671:9;12628:52;:::o;22928:156::-;8760:5;;;;;;;;;;;8746:19;;:10;:19;;;8738:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23013:14;14201:9;;;;;;;;;;;14183:28;;:6;:28;;;;:60;;;;;14233:9;;;;;;;;;;;14215:28;;:6;:28;;;;14183:60;14175:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23040:36;23061:14;23040:20;:36::i;:::-;8793:1;22928:156;:::o;13086:39::-;;;;;;;;;;;;;:::o;18610:188::-;18657:4;18674:8;18685:1;18674:12;;18705:9;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18705:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18705:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18705:23:0;;;;;;;;;;;;;;;;18698:30;;;;18746:9;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18746:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18746:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18746:23:0;;;;;;;;;;;;;;;;18739:30;;;;18787:3;18780:10;;;18610:188;:::o;16857:99::-;16900:4;16933:15;16924:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;16917:31;;16857:99;:::o;13235:28::-;;;;:::o;10144:100::-;8760:5;;;;;;;;;;;8746:19;;:10;:19;;;8738:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10227:9;10219:5;;:17;;;;;;;;;;;;;;;;;;10144:100;:::o;16535:101::-;16579:4;16612:16;16603:25;;;;;;;;:5;;;;;;;;;;;:25;;;;;;;;;16596:32;;16535:101;:::o;19487:362::-;19559:4;19576:12;19591:1;19576:16;;19629:6;19607:28;;19615:9;;;;;;;;;;;19607:28;;;19603:212;;;19662:9;:17;19672:6;19662:17;;;;;;;;;;;;;;;:22;;;19652:32;;19603:212;;;19748:6;19726:28;;19734:9;;;;;;;;;;;19726:28;;;19722:93;;;19781:9;:17;19791:6;19781:17;;;;;;;;;;;;;;;:22;;;19771:32;;19722:93;19603:212;19834:7;19827:14;;;19487:362;;;;:::o;23219:105::-;23282:4;23315:1;23306:6;:10;23299:17;;23219:105;;;:::o;21655:688::-;14713:1;14697:13;;:17;:41;;;;;14725:13;;14718:3;:20;;14697:41;14689:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21782:6;13887:9;;;;;;;;;;;13869:28;;:6;:28;;;:60;;;;13919:9;;;;;;;;;;;13901:28;;:6;:28;;;13869:60;13861:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21819:10;21809:20;;:6;:20;;;21801:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21921:17;21932:5;21921:10;:17::i;:::-;21916:133;;21974:63;;;;;;;;22000:1;21974:63;;;;22003:1;21974:63;;;;22035:1;22006:14;22026:5;22006:26;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;22006:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;21974:63;;;21955:9;:16;21965:5;21955:16;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;21916:133;22061:17;22081:9;:16;22091:5;22081:16;;;;;;;;;;;;;;;22061:36;;22130:9;;;;;;;;;;;22112:28;;:6;:28;;;22108:228;;;22167:6;22157:1;:6;;;:16;;;;;;;;;;;22208:26;22227:6;22208:18;:26::i;:::-;22188:16;;:46;;;;;;;;;;;22108:228;;;22277:6;22267:1;:6;;;:16;;;;;;;;;;;22318:6;22298:16;;:26;;;;;;;;;;;22108:228;13966:1;14783;21655:688;;;:::o;6151:295::-;6217:20;6247:14;6217:45;;6273:17;6293:13;:23;;;6325:4;6293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6293:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6293:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6293:38:0;;;;;;;;;;;;;;;;6273:58;;6361:1;6346:12;:16;6342:97;;;6379:13;:22;;;6402:10;6414:12;6379:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6379:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6379:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6379:48:0;;;;;;;;;;;;;;;;;6342:97;6151:295;;;:::o

Swarm Source

bzzr://e2af9f115031dd6c5be6819cec1b430768ab0a2b92155d5fdf6b56f4da7fc83d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.