creation_sourcecode: /**
   *Submitted for verification at Etherscan.io on 2019-12-13
  */
  
  pragma solidity ^0.8.20;
  
  interface IUniris  {
      function count() external view returns (uint);
      function increment() external;
  
      function pause() external;
      function unpause() external;
      function addPauser(address account) external;
      function renouncePauser() external;
  }
  
  
  contract Interaction {
      address public contractAddress;
      address payable owner;
  
      uint256 public block_start = block.timestamp;
      uint256 blocks_per_hour = 300;
  
      uint256 reclaim_price = 10 ether;
  
      constructor(address _contract, address payable _owner) {
          contractAddress = _contract;
          owner = _owner;
      }
      
      /**
          Transfer the exact amount as defined by public view reclaim_price()
          The msg.sender will be added as pauser
          This amount increases every 300 blocks +/- ~1h
      **/
      
      function payAndReclaim() external payable {
          uint256 _amount = _reclaim_price();
          require(msg.value == _amount, "Amount does not match reclaim price!");
          IUniris(contractAddress).addPauser(msg.sender);
          owner.transfer((address(this).balance));
      }
  
      function _reclaim_price() public view returns (uint256) {
          uint256 _curr = block.timestamp;
          uint256 _diff = _curr - block_start;
          uint256 _totalHoursPassed = _diff / blocks_per_hour;
          uint256 _added = _totalHoursPassed * 1 ether;
          return reclaim_price + _added;
      }
  
      function pause() internal {
          return IUniris(contractAddress).pause();
      }
  
      function unpause() internal  {
          return IUniris(contractAddress).unpause();
      }
  
  }