[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "osakAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "wrappedAmount", "type": "uint256" } ], "name": "Unwrap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "UnwrapEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "osakAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "wrappedAmount", "type": "uint256" } ], "name": "Wrap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "WrapEnabled", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_wrapEnabled", "type": "bool" }, { "internalType": "bool", "name": "_unwrapEnabled", "type": "bool" } ], "name": "setEnabledState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "wrappedAmount", "type": "uint256" } ], "name": "unwrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unwrapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "osakAmount", "type": "uint256" } ], "name": "wrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "wrapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60806040526006805461ffff60a01b191661010160a01b17905534801562000025575f80fd5b50336040518060400160405280600e81526020016d13dcd85ad848141c9bdd1bd8dbdb60921b815250604051806040016040528060048152602001634f53414b60e01b81525081600390816200007c9190620001dd565b5060046200008b8282620001dd565b5050506001600160a01b038116620000bc57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000c781620000ce565b50620002a5565b600680546001600160a01b0319169055620000e981620000ec565b50565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200016657607f821691505b6020821081036200018557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001d8575f81815260208120601f850160051c81016020861015620001b35750805b601f850160051c820191505b81811015620001d457828155600101620001bf565b5050505b505050565b81516001600160401b03811115620001f957620001f96200013d565b62000211816200020a845462000151565b846200018b565b602080601f83116001811462000247575f84156200022f5750858301515b5f19600386901b1c1916600185901b178555620001d4565b5f85815260208120601f198616915b82811015620002775788860151825594840194600190910190840162000256565b50858210156200029557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610eb880620002b35f395ff3fe608060405234801561000f575f80fd5b506004361061011c575f3560e01c806379ba5097116100a9578063dd62ed3e1161006e578063dd62ed3e14610246578063de0e9a3e1461027e578063e30c397814610291578063ea598cb0146102a2578063f2fde38b146102b5575f80fd5b806379ba5097146101eb5780638da5cb5b146101f35780638ea3efc51461021857806395d89b411461022b578063a9059cbb14610233575f80fd5b806318160ddd116100ef57806318160ddd1461018557806323b872dd14610197578063313ce567146101aa57806370a08231146101b9578063715018a6146101e1575f80fd5b8063066c75921461012057806306fdde0314610149578063095ea7b31461015e5780630caae31014610171575b5f80fd5b60065461013490600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b6101516102c8565b6040516101409190610c3e565b61013461016c366004610ca4565b610358565b60065461013490600160a01b900460ff1681565b6002545b604051908152602001610140565b6101346101a5366004610ccc565b610371565b60405160048152602001610140565b6101896101c7366004610d05565b6001600160a01b03165f9081526020819052604090205490565b6101e9610394565b005b6101e96103a7565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610140565b6101e9610226366004610d32565b6103f0565b6101516104d8565b610134610241366004610ca4565b6104e7565b610189610254366004610d69565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101e961028c366004610d9a565b6104f4565b6006546001600160a01b0316610200565b6101e96102b0366004610d9a565b610666565b6101e96102c3366004610d05565b610812565b6060600380546102d790610db1565b80601f016020809104026020016040519081016040528092919081815260200182805461030390610db1565b801561034e5780601f106103255761010080835404028352916020019161034e565b820191905f5260205f20905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b5f33610365818585610883565b60019150505b92915050565b5f3361037e858285610895565b6103898585856108fd565b506001949350505050565b61039c61095a565b6103a55f610987565b565b60065433906001600160a01b031681146103e45760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6103ed81610987565b50565b6103f861095a565b60065460ff600160a01b909104161515821515146104665760068054831515600160a01b0260ff60a01b199091161790556040517fd75188b6b1214063a71065320768477350073d96d4ab355cc9454f997c301a9b9061045d90841515815260200190565b60405180910390a15b60065460ff600160a81b909104161515811515146104d45760068054821515600160a81b0260ff60a81b199091161790556040517fc76c8844e2517387f1004f869e1658b8872a1997449ec7dc754e72ed8d67aca8906104cb90831515815260200190565b60405180910390a15b5050565b6060600480546102d790610db1565b5f336103658185856108fd565b600654600160a81b900460ff1661054d5760405162461bcd60e51b815260206004820152601d60248201527f556e7772617070696e672063757272656e746c792064697361626c656400000060448201526064016103db565b5f811161059c5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420756e77726170207a65726f20746f6b656e730000000000000060448201526064016103db565b5f6105ad655af3107a400083610dfd565b90506105b933836109a0565b60405163a9059cbb60e01b81523360048201526024810182905273a21af1050f7b26e0cff45ee51548254c41ed6b5c9063a9059cbb906044016020604051808303815f875af115801561060e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106329190610e14565b507fe8e8d3915b94f03b4f3342716334ae94bd6f36775da7b263c908889b93d0574b3382846040516104cb93929190610e2f565b600654600160a01b900460ff166106bf5760405162461bcd60e51b815260206004820152601b60248201527f5772617070696e672063757272656e746c792064697361626c6564000000000060448201526064016103db565b655af3107a40008110156107215760405162461bcd60e51b8152602060048201526024808201527f43616e206f6e6c79207772617020302e30303031204f53414b206f722067726560448201526330ba32b960e11b60648201526084016103db565b5f610732655af3107a400083610e50565b90505f610745655af3107a400083610dfd565b6040516323b872dd60e01b81523360048201523060248201526044810182905290915073a21af1050f7b26e0cff45ee51548254c41ed6b5c906323b872dd906064016020604051808303815f875af11580156107a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c79190610e14565b506107d233836109d4565b7f18a5ed48bb0a697c64a5aef8f28cec1f29ab01da27a45c5f835099781ef1ea4633828460405161080593929190610e2f565b60405180910390a1505050565b61081a61095a565b600680546001600160a01b0383166001600160a01b0319909116811790915561084b6005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6108908383836001610a08565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146108f757818110156108e957828183604051637dc7a0d960e11b81526004016103db93929190610e2f565b6108f784848484035f610a08565b50505050565b6001600160a01b03831661092657604051634b637e8f60e11b81525f60048201526024016103db565b6001600160a01b03821661094f5760405163ec442f0560e01b81525f60048201526024016103db565b610890838383610ada565b6005546001600160a01b031633146103a55760405163118cdaa760e01b81523360048201526024016103db565b600680546001600160a01b03191690556103ed81610bed565b6001600160a01b0382166109c957604051634b637e8f60e11b81525f60048201526024016103db565b6104d4825f83610ada565b6001600160a01b0382166109fd5760405163ec442f0560e01b81525f60048201526024016103db565b6104d45f8383610ada565b6001600160a01b038416610a315760405163e602df0560e01b81525f60048201526024016103db565b6001600160a01b038316610a5a57604051634a1406b160e11b81525f60048201526024016103db565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156108f757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610acc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b04578060025f828254610af99190610e6f565b90915550610b619050565b6001600160a01b0383165f9081526020819052604090205481811015610b435783818360405163391434e360e21b81526004016103db93929190610e2f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610b7d57600280548290039055610b9b565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610be091815260200190565b60405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020808352835180828501525f5b81811015610c6957858101830151858201604001528201610c4d565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c9f575f80fd5b919050565b5f8060408385031215610cb5575f80fd5b610cbe83610c89565b946020939093013593505050565b5f805f60608486031215610cde575f80fd5b610ce784610c89565b9250610cf560208501610c89565b9150604084013590509250925092565b5f60208284031215610d15575f80fd5b610d1e82610c89565b9392505050565b80151581146103ed575f80fd5b5f8060408385031215610d43575f80fd5b8235610d4e81610d25565b91506020830135610d5e81610d25565b809150509250929050565b5f8060408385031215610d7a575f80fd5b610d8383610c89565b9150610d9160208401610c89565b90509250929050565b5f60208284031215610daa575f80fd5b5035919050565b600181811c90821680610dc557607f821691505b602082108103610de357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761036b5761036b610de9565b5f60208284031215610e24575f80fd5b8151610d1e81610d25565b6001600160a01b039390931683526020830191909152604082015260600190565b5f82610e6a57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561036b5761036b610de956fea264697066735822122027a6bb8ac29c2245db72971d0b1c2e8ed18d8763a45b3e137c3f2e09de6c9bdb64736f6c63430008140033