contract Repeater {
    address owner = msg.sender;
    
/** @dev Call `_target` with `_data`
 *  @param _target The contract to call.
 *  @param _data The data to send to the contract.
 */    
    function repeat(address _target, bytes calldata _data) external {
        require(msg.sender == owner);
        _target.call(_data);
    }

/** @dev Call `_target` with `_data` sending `_value` wei.
 *  @param _target The contract to call.
 *  @param _data The data to send to the contract.
 *  @param _value The amount of wei to send.
 */
    function repeatWithValue(address _target, bytes calldata _data, uint _value) external {
        require(msg.sender == owner);
        _target.call{value: _value}(_data);
    }
    
    receive() external payable {}
}
/** @title Repeater
 *  This contract repeats calls on the owner request.
 */
function repeatWithValue(address _target, bytes calldata _data, uint _value) external {
    require(msg.sender == owner);
    _target.call{value: _value}(_data);
}

/** @dev Call `_target` with `_data` sending `_value` wei.
 *  @param _target The contract to call.
 *  @param _data The data to send to the contract.
 *  @param _value The amount of wei to send.
 */