pragma solidity ^0.5.17; import "../lib/os/DelegateProxy.sol"; import "../lib/os/UnstructuredStorage.sol"; contract ThinProxy is DelegateProxy { using UnstructuredStorage for bytes32; constructor(address _implementation) public { _implementationSlot().setStorageAddress(_implementation); } function () external { delegatedFwd(implementation(), msg.data); } function proxyType() public pure returns (uint256) { return FORWARDING; } function implementation() public view returns (address) { return _implementationSlot().getStorageAddress(); } function _implementationSlot() internal pure returns (bytes32); }