Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- PayoutStrategy
- Optimization enabled
- false
- Compiler version
- v0.8.19+commit.7dd6d404
- EVM Version
- default
- Verified at
- 2024-05-23T10:35:38.704410Z
contracts/PayoutStrategy.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "./IPayoutStrategy.sol"; contract PayoutStrategy is Ownable, IPayoutStrategy { Payout[] public payoutStructure; receive() external payable {} fallback() external payable {} constructor() { } function setPayoutStructure(uint256[] calldata payoutStructure_) external onlyOwner() { require(0 == payoutStructure.length, "PayoutStrategy: Payout structure already set"); require(0 != payoutStructure_.length, "PayoutStrategy: Length of payout structure cannot be 0"); require(0 == payoutStructure_.length % 3, "PayoutStrategy: length % 3 should be 0"); require(0 == payoutStructure_[0], "PayoutStrategy: Invalid payout structure"); require(payoutStructure_[0] < payoutStructure_[1], "PayoutStrategy: Invalid payout structure"); payoutStructure.push(Payout({ from: payoutStructure_[0], to: payoutStructure_[1], amount: payoutStructure_[2] })); for (uint256 i = 3; i < payoutStructure_.length; i += 3) { require(payoutStructure_[i] == payoutStructure[payoutStructure.length - 1].to, "PayoutStrategy: Invalid payout structure"); require(payoutStructure_[i] < payoutStructure_[i + 1], "PayoutStrategy: Invalid payout structure"); payoutStructure.push(Payout({ from: payoutStructure_[i], to: payoutStructure_[i + 1], amount: payoutStructure_[i + 2] })); } } function getPayoutStructure() external view returns (Payout[] memory) { return payoutStructure; } }
@openzeppelin/contracts/access/Ownable.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
@openzeppelin/contracts/utils/Context.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
contracts/IPayoutStrategy.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IPayoutStrategy { struct Payout { uint256 from; uint256 to; uint256 amount; } function setPayoutStructure(uint256[] calldata) external; function getPayoutStructure() external view returns (Payout[] memory); }
Compiler Settings
{"outputSelection":{"*":{"*":["*"],"":["*"]}},"optimizer":{"runs":200,"enabled":false},"libraries":{}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"fallback","stateMutability":"payable"},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple[]","name":"","internalType":"struct IPayoutStrategy.Payout[]","components":[{"type":"uint256","name":"from","internalType":"uint256"},{"type":"uint256","name":"to","internalType":"uint256"},{"type":"uint256","name":"amount","internalType":"uint256"}]}],"name":"getPayoutStructure","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"from","internalType":"uint256"},{"type":"uint256","name":"to","internalType":"uint256"},{"type":"uint256","name":"amount","internalType":"uint256"}],"name":"payoutStructure","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setPayoutStructure","inputs":[{"type":"uint256[]","name":"payoutStructure_","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6110828061010d6000396000f3fe6080604052600436106100595760003560e01c8063715018a6146100625780638da5cb5b146100795780639494582d146100a45780639c2d2d8e146100cd578063f289eaa5146100f8578063f2fde38b1461013757610060565b3661006057005b005b34801561006e57600080fd5b50610077610160565b005b34801561008557600080fd5b5061008e610174565b60405161009b91906108d4565b60405180910390f35b3480156100b057600080fd5b506100cb60048036038101906100c6919061095e565b61019d565b005b3480156100d957600080fd5b506100e261060f565b6040516100ef9190610ab5565b60405180910390f35b34801561010457600080fd5b5061011f600480360381019061011a9190610b03565b61068c565b60405161012e93929190610b3f565b60405180910390f35b34801561014357600080fd5b5061015e60048036038101906101599190610ba2565b6106c6565b005b610168610749565b61017260006107c7565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101a5610749565b6001805490506000146101ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e490610c52565b60405180910390fd5b81819050600003610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a90610ce4565b60405180910390fd5b6003828290506102439190610d33565b600014610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c90610dd6565b60405180910390fd5b8181600081811061029957610298610df6565b5b905060200201356000146102e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d990610e97565b60405180910390fd5b818160018181106102f6576102f5610df6565b5b905060200201358282600081811061031157610310610df6565b5b9050602002013510610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f90610e97565b60405180910390fd5b600160405180606001604052808484600081811061037957610378610df6565b5b9050602002013581526020018484600181811061039957610398610df6565b5b905060200201358152602001848460028181106103b9576103b8610df6565b5b90506020020135815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550506000600390505b8282905081101561060a5760018080805490506104309190610ee6565b8154811061044157610440610df6565b5b90600052602060002090600302016001015483838381811061046657610465610df6565b5b90506020020135146104ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a490610e97565b60405180910390fd5b82826001836104bc9190610f1a565b8181106104cc576104cb610df6565b5b905060200201358383838181106104e6576104e5610df6565b5b905060200201351061052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052490610e97565b60405180910390fd5b6001604051806060016040528085858581811061054d5761054c610df6565b5b90506020020135815260200185856001866105689190610f1a565b81811061057857610577610df6565b5b90506020020135815260200185856002866105939190610f1a565b8181106105a3576105a2610df6565b5b90506020020135815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550506003816106039190610f1a565b9050610413565b505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156106835783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610633565b50505050905090565b6001818154811061069c57600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b6106ce610749565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073490610fc0565b60405180910390fd5b610746816107c7565b50565b61075161088b565b73ffffffffffffffffffffffffffffffffffffffff1661076f610174565b73ffffffffffffffffffffffffffffffffffffffff16146107c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bc9061102c565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108be82610893565b9050919050565b6108ce816108b3565b82525050565b60006020820190506108e960008301846108c5565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261091e5761091d6108f9565b5b8235905067ffffffffffffffff81111561093b5761093a6108fe565b5b60208301915083602082028301111561095757610956610903565b5b9250929050565b60008060208385031215610975576109746108ef565b5b600083013567ffffffffffffffff811115610993576109926108f4565b5b61099f85828601610908565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6109ea816109d7565b82525050565b606082016000820151610a0660008501826109e1565b506020820151610a1960208501826109e1565b506040820151610a2c60408501826109e1565b50505050565b6000610a3e83836109f0565b60608301905092915050565b6000602082019050919050565b6000610a62826109ab565b610a6c81856109b6565b9350610a77836109c7565b8060005b83811015610aa8578151610a8f8882610a32565b9750610a9a83610a4a565b925050600181019050610a7b565b5085935050505092915050565b60006020820190508181036000830152610acf8184610a57565b905092915050565b610ae0816109d7565b8114610aeb57600080fd5b50565b600081359050610afd81610ad7565b92915050565b600060208284031215610b1957610b186108ef565b5b6000610b2784828501610aee565b91505092915050565b610b39816109d7565b82525050565b6000606082019050610b546000830186610b30565b610b616020830185610b30565b610b6e6040830184610b30565b949350505050565b610b7f816108b3565b8114610b8a57600080fd5b50565b600081359050610b9c81610b76565b92915050565b600060208284031215610bb857610bb76108ef565b5b6000610bc684828501610b8d565b91505092915050565b600082825260208201905092915050565b7f5061796f757453747261746567793a205061796f75742073747275637475726560008201527f20616c7265616479207365740000000000000000000000000000000000000000602082015250565b6000610c3c602c83610bcf565b9150610c4782610be0565b604082019050919050565b60006020820190508181036000830152610c6b81610c2f565b9050919050565b7f5061796f757453747261746567793a204c656e677468206f66207061796f757460008201527f207374727563747572652063616e6e6f74206265203000000000000000000000602082015250565b6000610cce603683610bcf565b9150610cd982610c72565b604082019050919050565b60006020820190508181036000830152610cfd81610cc1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d3e826109d7565b9150610d49836109d7565b925082610d5957610d58610d04565b5b828206905092915050565b7f5061796f757453747261746567793a206c656e677468202520332073686f756c60008201527f6420626520300000000000000000000000000000000000000000000000000000602082015250565b6000610dc0602683610bcf565b9150610dcb82610d64565b604082019050919050565b60006020820190508181036000830152610def81610db3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5061796f757453747261746567793a20496e76616c6964207061796f7574207360008201527f7472756374757265000000000000000000000000000000000000000000000000602082015250565b6000610e81602883610bcf565b9150610e8c82610e25565b604082019050919050565b60006020820190508181036000830152610eb081610e74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ef1826109d7565b9150610efc836109d7565b9250828203905081811115610f1457610f13610eb7565b5b92915050565b6000610f25826109d7565b9150610f30836109d7565b9250828201905080821115610f4857610f47610eb7565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610faa602683610bcf565b9150610fb582610f4e565b604082019050919050565b60006020820190508181036000830152610fd981610f9d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611016602083610bcf565b915061102182610fe0565b602082019050919050565b6000602082019050818103600083015261104581611009565b905091905056fea2646970667358221220f4207619992bda0403903de175cf7b6fbafebf3b0ee899adc47f78980184a70664736f6c63430008130033
Deployed ByteCode
0x6080604052600436106100595760003560e01c8063715018a6146100625780638da5cb5b146100795780639494582d146100a45780639c2d2d8e146100cd578063f289eaa5146100f8578063f2fde38b1461013757610060565b3661006057005b005b34801561006e57600080fd5b50610077610160565b005b34801561008557600080fd5b5061008e610174565b60405161009b91906108d4565b60405180910390f35b3480156100b057600080fd5b506100cb60048036038101906100c6919061095e565b61019d565b005b3480156100d957600080fd5b506100e261060f565b6040516100ef9190610ab5565b60405180910390f35b34801561010457600080fd5b5061011f600480360381019061011a9190610b03565b61068c565b60405161012e93929190610b3f565b60405180910390f35b34801561014357600080fd5b5061015e60048036038101906101599190610ba2565b6106c6565b005b610168610749565b61017260006107c7565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101a5610749565b6001805490506000146101ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e490610c52565b60405180910390fd5b81819050600003610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a90610ce4565b60405180910390fd5b6003828290506102439190610d33565b600014610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c90610dd6565b60405180910390fd5b8181600081811061029957610298610df6565b5b905060200201356000146102e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d990610e97565b60405180910390fd5b818160018181106102f6576102f5610df6565b5b905060200201358282600081811061031157610310610df6565b5b9050602002013510610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f90610e97565b60405180910390fd5b600160405180606001604052808484600081811061037957610378610df6565b5b9050602002013581526020018484600181811061039957610398610df6565b5b905060200201358152602001848460028181106103b9576103b8610df6565b5b90506020020135815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550506000600390505b8282905081101561060a5760018080805490506104309190610ee6565b8154811061044157610440610df6565b5b90600052602060002090600302016001015483838381811061046657610465610df6565b5b90506020020135146104ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a490610e97565b60405180910390fd5b82826001836104bc9190610f1a565b8181106104cc576104cb610df6565b5b905060200201358383838181106104e6576104e5610df6565b5b905060200201351061052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052490610e97565b60405180910390fd5b6001604051806060016040528085858581811061054d5761054c610df6565b5b90506020020135815260200185856001866105689190610f1a565b81811061057857610577610df6565b5b90506020020135815260200185856002866105939190610f1a565b8181106105a3576105a2610df6565b5b90506020020135815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550506003816106039190610f1a565b9050610413565b505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156106835783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610633565b50505050905090565b6001818154811061069c57600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b6106ce610749565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073490610fc0565b60405180910390fd5b610746816107c7565b50565b61075161088b565b73ffffffffffffffffffffffffffffffffffffffff1661076f610174565b73ffffffffffffffffffffffffffffffffffffffff16146107c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bc9061102c565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108be82610893565b9050919050565b6108ce816108b3565b82525050565b60006020820190506108e960008301846108c5565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261091e5761091d6108f9565b5b8235905067ffffffffffffffff81111561093b5761093a6108fe565b5b60208301915083602082028301111561095757610956610903565b5b9250929050565b60008060208385031215610975576109746108ef565b5b600083013567ffffffffffffffff811115610993576109926108f4565b5b61099f85828601610908565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6109ea816109d7565b82525050565b606082016000820151610a0660008501826109e1565b506020820151610a1960208501826109e1565b506040820151610a2c60408501826109e1565b50505050565b6000610a3e83836109f0565b60608301905092915050565b6000602082019050919050565b6000610a62826109ab565b610a6c81856109b6565b9350610a77836109c7565b8060005b83811015610aa8578151610a8f8882610a32565b9750610a9a83610a4a565b925050600181019050610a7b565b5085935050505092915050565b60006020820190508181036000830152610acf8184610a57565b905092915050565b610ae0816109d7565b8114610aeb57600080fd5b50565b600081359050610afd81610ad7565b92915050565b600060208284031215610b1957610b186108ef565b5b6000610b2784828501610aee565b91505092915050565b610b39816109d7565b82525050565b6000606082019050610b546000830186610b30565b610b616020830185610b30565b610b6e6040830184610b30565b949350505050565b610b7f816108b3565b8114610b8a57600080fd5b50565b600081359050610b9c81610b76565b92915050565b600060208284031215610bb857610bb76108ef565b5b6000610bc684828501610b8d565b91505092915050565b600082825260208201905092915050565b7f5061796f757453747261746567793a205061796f75742073747275637475726560008201527f20616c7265616479207365740000000000000000000000000000000000000000602082015250565b6000610c3c602c83610bcf565b9150610c4782610be0565b604082019050919050565b60006020820190508181036000830152610c6b81610c2f565b9050919050565b7f5061796f757453747261746567793a204c656e677468206f66207061796f757460008201527f207374727563747572652063616e6e6f74206265203000000000000000000000602082015250565b6000610cce603683610bcf565b9150610cd982610c72565b604082019050919050565b60006020820190508181036000830152610cfd81610cc1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d3e826109d7565b9150610d49836109d7565b925082610d5957610d58610d04565b5b828206905092915050565b7f5061796f757453747261746567793a206c656e677468202520332073686f756c60008201527f6420626520300000000000000000000000000000000000000000000000000000602082015250565b6000610dc0602683610bcf565b9150610dcb82610d64565b604082019050919050565b60006020820190508181036000830152610def81610db3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5061796f757453747261746567793a20496e76616c6964207061796f7574207360008201527f7472756374757265000000000000000000000000000000000000000000000000602082015250565b6000610e81602883610bcf565b9150610e8c82610e25565b604082019050919050565b60006020820190508181036000830152610eb081610e74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ef1826109d7565b9150610efc836109d7565b9250828203905081811115610f1457610f13610eb7565b5b92915050565b6000610f25826109d7565b9150610f30836109d7565b9250828201905080821115610f4857610f47610eb7565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610faa602683610bcf565b9150610fb582610f4e565b604082019050919050565b60006020820190508181036000830152610fd981610f9d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611016602083610bcf565b915061102182610fe0565b602082019050919050565b6000602082019050818103600083015261104581611009565b905091905056fea2646970667358221220f4207619992bda0403903de175cf7b6fbafebf3b0ee899adc47f78980184a70664736f6c63430008130033