Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 34 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Push | 20836172 | 182 days ago | IN | 0 ETH | 0.00470228 | ||||
Push | 20835067 | 182 days ago | IN | 0 ETH | 0.00234812 | ||||
Push | 20833522 | 182 days ago | IN | 0 ETH | 0.00156983 | ||||
Push | 20827010 | 183 days ago | IN | 0 ETH | 0.00166698 | ||||
Push | 20790351 | 188 days ago | IN | 0 ETH | 0.0012233 | ||||
Push | 20788012 | 188 days ago | IN | 0 ETH | 0.00081538 | ||||
Push | 20787989 | 188 days ago | IN | 0 ETH | 0.00104074 | ||||
Push | 20770895 | 191 days ago | IN | 0 ETH | 0.00164632 | ||||
Push | 20747158 | 194 days ago | IN | 0 ETH | 0.00022289 | ||||
Push | 20735156 | 196 days ago | IN | 0 ETH | 0.00087351 | ||||
Push | 20732428 | 196 days ago | IN | 0 ETH | 0.00027331 | ||||
Push | 20727770 | 197 days ago | IN | 0 ETH | 0.00039013 | ||||
Push | 20699741 | 201 days ago | IN | 0 ETH | 0.00023545 | ||||
Push | 20689918 | 202 days ago | IN | 0 ETH | 0.00022623 | ||||
Push | 20117238 | 282 days ago | IN | 0 ETH | 0.00161094 | ||||
Push | 19393442 | 384 days ago | IN | 0 ETH | 0.01267445 | ||||
Push | 19384528 | 385 days ago | IN | 0 ETH | 0.0194249 | ||||
Push | 19376868 | 386 days ago | IN | 0 ETH | 0.02279173 | ||||
Push | 19289033 | 398 days ago | IN | 0 ETH | 0.01272182 | ||||
Push | 19284242 | 399 days ago | IN | 0 ETH | 0.01440788 | ||||
Push | 19178803 | 414 days ago | IN | 0 ETH | 0.01129858 | ||||
Push | 19171413 | 415 days ago | IN | 0 ETH | 0.00785389 | ||||
Push | 19063908 | 430 days ago | IN | 0 ETH | 0.00550698 | ||||
Push | 19046849 | 432 days ago | IN | 0 ETH | 0.0038023 | ||||
Push | 19034465 | 434 days ago | IN | 0 ETH | 0.00698239 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RwaInputConduit3
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: © 2021 Lev Livnev <[email protected]> // SPDX-FileCopyrightText: © 2022 Dai Foundation <www.daifoundation.org> // SPDX-License-Identifier: AGPL-3.0-or-later // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. pragma solidity 0.6.12; import {GemAbstract} from "dss-interfaces/ERC/GemAbstract.sol"; import {DaiAbstract} from "dss-interfaces/dss/DaiAbstract.sol"; import {PsmAbstract} from "dss-interfaces/dss/PsmAbstract.sol"; import {GemJoinAbstract} from "dss-interfaces/dss/GemJoinAbstract.sol"; /** * @author Lev Livnev <[email protected]> * @author Nazar Duchak <[email protected]> * @title An Input Conduit for real-world assets (RWA). * @dev This contract differs from the original [RwaInputConduit](https://github.com/makerdao/MIP21-RWA-Example/blob/fce06885ff89d10bf630710d4f6089c5bba94b4d/src/RwaConduit.sol#L20-L39): * - The caller of `push()` is not required to hold MakerDAO governance tokens. * - The `push()` method is permissioned. * - `push()` permissions are managed by `mate()`/`hate()` methods. * - Requires DAI, GEM and PSM addresses in the constructor. * - DAI and GEM are immutable, PSM can be replaced as long as it uses the same DAI and GEM. * - The `push()` method swaps entire GEM balance to DAI using PSM. * - THe `push(uint256)` method swaps specified amount of GEM to DAI using PSM. * - The `quit()` method allows moving outstanding GEM balance to `quitTo`. It can be called only by `mate`d addresses. * - The `quit(uint256)` method allows moving the specified amount of GEM balance to `quitTo`. It can be called only by `mate`d addresses. * - The `file(bytes32, address)` method allows updating `quitTo`, `to`, `psm` addresses. It can be called only by the admin. */ contract RwaInputConduit3 { /// @notice PSM GEM token contract address. GemAbstract public immutable gem; /// @notice DAI token contract address. DaiAbstract public immutable dai; /// @dev DAI/GEM resolution difference. uint256 private immutable to18ConversionFactor; /// @notice Addresses with admin access on this contract. `wards[usr]` mapping(address => uint256) public wards; /// @notice Addresses with push access on this contract. `may[usr]` mapping(address => uint256) public may; /// @notice PSM contract address. PsmAbstract public psm; /// @notice Recipient address for DAI. address public to; /// @notice Destination address for GEM after calling `quit`. address public quitTo; /** * @notice `usr` was granted admin access. * @param usr The user address. */ event Rely(address indexed usr); /** * @notice `usr` admin access was revoked. * @param usr The user address. */ event Deny(address indexed usr); /** * @notice `usr` was granted push access. * @param usr The user address. */ event Mate(address indexed usr); /** * @notice `usr` push access was revoked. * @param usr The user address. */ event Hate(address indexed usr); /** * @notice `wad` amount of Dai was pushed to `to`. * @param to Recipient address for DAI. * @param wad The amount of DAI. */ event Push(address indexed to, uint256 wad); /** * @notice A contract parameter was updated. * @param what The changed parameter name. Currently the supported values are: "quitTo", "to", "psm". * @param data The new value of the parameter. */ event File(bytes32 indexed what, address data); /** * @notice The conduit outstanding GEM balance was flushed out to `quitTo`. * @param quitTo The quitTo address. * @param wad The amount of GEM flushed out. */ event Quit(address indexed quitTo, uint256 wad); /** * @notice `amt` outstanding `token` balance was flushed out to `usr`. * @param token The token address. * @param usr The destination address. * @param amt The amount of `token` flushed out. */ event Yank(address indexed token, address indexed usr, uint256 amt); modifier auth() { require(wards[msg.sender] == 1, "RwaInputConduit3/not-authorized"); _; } modifier onlyMate() { require(may[msg.sender] == 1, "RwaInputConduit3/not-mate"); _; } /** * @notice Defines addresses and gives `msg.sender` admin access. * @param _psm PSM contract address. * @param _dai DAI contract address. * @param _gem GEM contract address. * @param _to RwaUrn contract address. */ constructor( address _dai, address _gem, address _psm, address _to ) public { require(_to != address(0), "RwaInputConduit3/invalid-to-address"); require(PsmAbstract(_psm).dai() == _dai, "RwaInputConduit3/wrong-dai-for-psm"); require(GemJoinAbstract(PsmAbstract(_psm).gemJoin()).gem() == _gem, "RwaInputConduit3/wrong-gem-for-psm"); // We assume that DAI will alway have 18 decimals to18ConversionFactor = 10**_sub(18, GemAbstract(_gem).decimals()); psm = PsmAbstract(_psm); dai = DaiAbstract(_dai); gem = GemAbstract(_gem); to = _to; // Give unlimited approval to PSM gemjoin GemAbstract(_gem).approve(address(psm.gemJoin()), type(uint256).max); wards[msg.sender] = 1; emit Rely(msg.sender); } /*////////////////////////////////// Authorization //////////////////////////////////*/ /** * @notice Grants `usr` admin access to this contract. * @param usr The user address. */ function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } /** * @notice Revokes `usr` admin access from this contract. * @param usr The user address. */ function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } /** * @notice Grants `usr` push access to this contract. * @param usr The user address. */ function mate(address usr) external auth { may[usr] = 1; emit Mate(usr); } /** * @notice Revokes `usr` push access from this contract. * @param usr The user address. */ function hate(address usr) external auth { may[usr] = 0; emit Hate(usr); } /*////////////////////////////////// Administration //////////////////////////////////*/ /** * @notice Updates a contract parameter. * @param what The changed parameter name. `"to", "quitTo", "psm"` * @param data The new value of the parameter. */ function file(bytes32 what, address data) external auth { if (what == "quitTo") { quitTo = data; } else if (what == "to") { to = data; } else if (what == "psm") { require(PsmAbstract(data).dai() == address(dai), "RwaInputConduit3/wrong-dai-for-psm"); require( GemJoinAbstract(PsmAbstract(data).gemJoin()).gem() == address(gem), "RwaInputConduit3/wrong-gem-for-psm" ); // Revoke approval for the old PSM gemjoin gem.approve(address(psm.gemJoin()), 0); // Give unlimited approval to the new PSM gemjoin gem.approve(address(PsmAbstract(data).gemJoin()), type(uint256).max); psm = PsmAbstract(data); } else { revert("RwaInputConduit3/unrecognised-param"); } emit File(what, data); } /*////////////////////////////////// Operations //////////////////////////////////*/ /** * @notice Swaps the GEM balance of this contract into DAI through the PSM and push it into the recipient address. * @dev `msg.sender` must have received push access through `mate()`. */ function push() external onlyMate { _doPush(gem.balanceOf(address(this))); } /** * @notice Swaps the specified amount of GEM into DAI through the PSM and push it into the recipient address. * @dev `msg.sender` must have received push access through `mate()`. * @param amt Gem amount. */ function push(uint256 amt) external onlyMate { _doPush(amt); } /** * @notice Flushes out any GEM balance to `quitTo` address. * @dev `msg.sender` must have received push access through `mate()`. */ function quit() external onlyMate { _doQuit(gem.balanceOf(address(this))); } /** * @notice Flushes out the specified amount of GEM balance to `quitTo` address. * @dev `msg.sender` must have received push access through `mate()`. * @param amt Gem amount. */ function quit(uint256 amt) external onlyMate { _doQuit(amt); } /** * @notice Flushes out `amt` of `token` sitting in this contract to `usr` address. * @dev Can only be called by the admin. * @param token Token address. * @param usr Destination address. * @param amt Token amount. */ function yank( address token, address usr, uint256 amt ) external auth { GemAbstract(token).transfer(usr, amt); emit Yank(token, usr, amt); } /** * @notice Calculates the amount of DAI received for swapping `amt` of GEM. * @param amt GEM amount. * @return wad Expected DAI amount. */ function expectedDaiWad(uint256 amt) public view returns (uint256 wad) { uint256 amt18 = _mul(amt, to18ConversionFactor); uint256 fee = _mul(amt18, psm.tin()) / WAD; return _sub(amt18, fee); } /** * @notice Calculates the required amount of GEM to get `wad` amount of DAI. * @param wad DAI amount. * @return amt Required GEM amount. */ function requiredGemAmt(uint256 wad) external view returns (uint256 amt) { return _mul(wad, WAD) / _mul(_sub(WAD, psm.tin()), to18ConversionFactor); } /** * @notice Swaps the specified amount of GEM into DAI through the PSM and push it into the recipient address. * @param amt GEM amount. */ function _doPush(uint256 amt) internal { require(to != address(0), "RwaInputConduit3/invalid-to-address"); psm.sellGem(to, amt); emit Push(to, expectedDaiWad(amt)); } /** * @notice Flushes out the specified amount of GEM to the `quitTo` address. * @param amt GEM amount. */ function _doQuit(uint256 amt) internal { require(quitTo != address(0), "RwaInputConduit3/invalid-quit-to-address"); gem.transfer(quitTo, amt); emit Quit(quitTo, amt); } /*////////////////////////////////// Math //////////////////////////////////*/ uint256 internal constant WAD = 10**18; function _sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "Math/sub-overflow"); } function _mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, "Math/mul-overflow"); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // A base ERC-20 abstract class // https://eips.ethereum.org/EIPS/eip-20 interface GemAbstract { function totalSupply() external view returns (uint256); function balanceOf(address) external view returns (uint256); function allowance(address, address) external view returns (uint256); function approve(address, uint256) external returns (bool); function transfer(address, uint256) external returns (bool); function transferFrom(address, address, uint256) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // https://github.com/makerdao/dss/blob/master/src/dai.sol interface DaiAbstract { function wards(address) external view returns (uint256); function rely(address) external; function deny(address) external; function name() external view returns (string memory); function symbol() external view returns (string memory); function version() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address) external view returns (uint256); function allowance(address, address) external view returns (uint256); function nonces(address) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external view returns (bytes32); function transfer(address, uint256) external returns (bool); function transferFrom(address, address, uint256) external returns (bool); function mint(address, uint256) external; function burn(address, uint256) external; function approve(address, uint256) external returns (bool); function push(address, uint256) external; function pull(address, uint256) external; function move(address, address, uint256) external; function permit(address, address, uint256, uint256, bool, uint8, bytes32, bytes32) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // https://github.com/makerdao/dss-psm/blob/master/src/psm.sol interface PsmAbstract { function wards(address) external view returns (uint256); function rely(address) external; function deny(address) external; function vat() external view returns (address); function gemJoin() external view returns (address); function dai() external view returns (address); function daiJoin() external view returns (address); function ilk() external view returns (bytes32); function vow() external view returns (address); function tin() external view returns (uint256); function tout() external view returns (uint256); function file(bytes32 what, uint256 data) external; function hope(address) external; function nope(address) external; function sellGem(address usr, uint256 gemAmt) external; function buyGem(address usr, uint256 gemAmt) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // https://github.com/makerdao/dss/blob/master/src/join.sol interface GemJoinAbstract { function wards(address) external view returns (uint256); function rely(address) external; function deny(address) external; function vat() external view returns (address); function ilk() external view returns (bytes32); function gem() external view returns (address); function dec() external view returns (uint256); function live() external view returns (uint256); function cage() external; function join(address, uint256) external; function exit(address, uint256) external; }
{ "remappings": [ "ds-auth/=lib/ds-token/lib/ds-auth/src/", "ds-math/=lib/ds-math/src/", "ds-note/=lib/ds-value/lib/ds-thing/lib/ds-note/src/", "ds-test/=lib/ds-test/src/", "ds-thing/=lib/ds-value/lib/ds-thing/src/", "ds-token/=lib/ds-token/src/", "ds-value/=lib/ds-value/src/", "dss-exec-lib/=lib/dss-exec-lib/src/", "dss-gem-joins/=lib/dss-gem-joins/src/", "dss-interfaces/=lib/dss-interfaces/src/", "dss/=lib/dss/src/", "forge-std/=lib/forge-std/src/", "forward-proxy/=lib/forward-proxy/src/", "mip21-toolkit/=lib/mip21-toolkit/src/" ], "optimizer": { "enabled": false, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "istanbul", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_dai","type":"address"},{"internalType":"address","name":"_gem","type":"address"},{"internalType":"address","name":"_psm","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Hate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Mate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Push","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"quitTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Quit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"}],"name":"Yank","type":"event"},{"inputs":[],"name":"dai","outputs":[{"internalType":"contract DaiAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"expectedDaiWad","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"hate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"mate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"may","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"psm","outputs":[{"internalType":"contract PsmAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"quit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quitTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"requiredGemAmt","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"to","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"yank","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b5060405162002a6f38038062002a6f833981810160405260808110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062002a2a6023913960400191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200014c57600080fd5b505afa15801562000161573d6000803e3d6000fd5b505050506040513d60208110156200017857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614620001f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062002a4d6022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025557600080fd5b505afa1580156200026a573d6000803e3d6000fd5b505050506040513d60208110156200028157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d857600080fd5b505afa158015620002ed573d6000803e3d6000fd5b505050506040513d60208110156200030457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462000383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062002a086022913960400191505060405180910390fd5b6200041c60128473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d057600080fd5b505afa158015620003e5573d6000803e3d6000fd5b505050506040513d6020811015620003fc57600080fd5b810190808051906020019092919050505060ff166200071c60201b60201c565b600a0a60c0818152505081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059b57600080fd5b505afa158015620005b0573d6000803e3d6000fd5b505050506040513d6020811015620005c757600080fd5b81019080805190602001909291905050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156200064d57600080fd5b505af115801562000662573d6000803e3d6000fd5b505050506040513d60208110156200067957600080fd5b81019080805190602001909291905050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250505050620007a0565b60008282840391508111156200079a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f7375622d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b60805160601c60a05160601c60c05161220d620007fb600039806108065280611a2a5250806110f05280611a71525080610a405280610b1b528061121452806113b852806115285280611b4c5280611cbd525061220d6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063959ac484116100ad578063d663159411610071578063d663159414610478578063daddce52146104ac578063e11746391461051a578063f4b9fa751461055c578063fc2b8cc31461059057610121565b8063959ac4841461031c5780639c52a7f11461034a578063a81de4f81461038e578063bf353dbb146103d2578063d4e8be831461042a57610121565b806359ac371b116100f457806359ac371b1461021457806361e86cad1461025857806365fae35e1461029a5780637bd2bea7146102de5780638035f0ce1461031257610121565b806304bda26214610126578063131519811461015a578063344cbc681461018e578063453638ce146101bc575b600080fd5b61012e61059a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101626105c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ba600480360360208110156101a457600080fd5b81019080803590602001909291905050506105e6565b005b6101fe600480360360208110156101d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a6565b6040518082815260200191505060405180910390f35b6102566004803603602081101561022a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106be565b005b6102846004803603602081101561026e57600080fd5b81019080803590602001909291905050506107fd565b6040518082815260200191505060405180910390f35b6102dc600480360360208110156102b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610900565b005b6102e6610a3e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031a610a62565b005b6103486004803603602081101561033257600080fd5b8101908080359060200190929190505050610be2565b005b61038c6004803603602081101561036057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca2565b005b6103d0600480360360208110156103a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de0565b005b610414600480360360208110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f1e565b6040518082815260200191505060405180910390f35b6104766004803603604081101561044057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f36565b005b61048061177e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610518600480360360608110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a4565b005b6105466004803603602081101561053057600080fd5b810190808035906020019092919050505061196f565b6040518082815260200191505060405180910390f35b610564611a6f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610598611a93565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b6106a381611c13565b50565b60016020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f04942e12b9e2310f85c952df158815306377bb9f797dc3677d03be357427c53b60405160405180910390a250565b60008061082a837f0000000000000000000000000000000000000000000000000000000000000000611e1d565b90506000670de0b6b3a76400006108e383600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568d4b6f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b8101908080519060200190929190505050611e1d565b816108ea57fe5b0490506108f78282611eb2565b92505050919050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b610be07f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d6020811015610bca57600080fd5b8101908080519060200190929190505050611f35565b565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b610c9f81611f35565b50565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fe25de3b40ce055247fe4ef6c00f96c8c3b6530536701ba1c48296b30b4bb0d9560405160405180910390a250565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b7f71756974546f00000000000000000000000000000000000000000000000000008214156110585780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172c565b7f746f0000000000000000000000000000000000000000000000000000000000008214156110c65780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172b565b7f70736d00000000000000000000000000000000000000000000000000000000008214156116d9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121b66022913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561128f57600080fd5b505afa1580156112a3573d6000803e3d6000fd5b505050506040513d60208110156112b957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d602081101561133957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121496022913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561145a57600080fd5b505afa15801561146e573d6000803e3d6000fd5b505050506040513d602081101561148457600080fd5b810190808051906020019092919050505060006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114ea57600080fd5b505af11580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b8101908080519060200190929190505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b38273ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a857600080fd5b505afa1580156115bc573d6000803e3d6000fd5b505050506040513d60208110156115d257600080fd5b81019080805190602001909291905050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b505050506040513d602081101561168157600080fd5b81019080805190602001909291905050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121266023913960400191505060405180910390fd5b5b5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156118c957600080fd5b505af11580156118dd573d6000803e3d6000fd5b505050506040513d60208110156118f357600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3336d8973868f7727fbbf287f4fd9fb0237fe2696b301f8a46c563cb46d7b419836040518082815260200191505060405180910390a3505050565b6000611a4e611a28670de0b6b3a7640000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568d4b6f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e857600080fd5b505afa1580156119fc573d6000803e3d6000fd5b505050506040513d6020811015611a1257600080fd5b8101908080519060200190929190505050611eb2565b7f0000000000000000000000000000000000000000000000000000000000000000611e1d565b611a6083670de0b6b3a7640000611e1d565b81611a6757fe5b049050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b611c117f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bd157600080fd5b505afa158015611be5573d6000803e3d6000fd5b505050506040513d6020811015611bfb57600080fd5b8101908080519060200190929190505050611c13565b565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061218e6028913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b505050506040513d6020811015611d9857600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc81bfec1ac9d038698c3b15fc900dafbff3af4b9f26062f895dd08a676ec78ae826040518082815260200191505060405180910390a250565b600080821480611e3a5750828283850292508281611e3757fe5b04145b611eac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6d756c2d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115611f2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f7375622d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061216b6023913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395991276600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561209257600080fd5b505af11580156120a6573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdf8180823cf670d41db21fa54ef9909b0bd724c931fbd55fe1fcbdc655ea2fb061210d836107fd565b6040518082815260200191505060405180910390a25056fe527761496e707574436f6e64756974332f756e7265636f676e697365642d706172616d527761496e707574436f6e64756974332f77726f6e672d67656d2d666f722d70736d527761496e707574436f6e64756974332f696e76616c69642d746f2d61646472657373527761496e707574436f6e64756974332f696e76616c69642d717569742d746f2d61646472657373527761496e707574436f6e64756974332f77726f6e672d6461692d666f722d70736da2646970667358221220cb1fcba61b09cbb6aa41c9386343f9ab4832a129f3a123db3a2fee602228f12064736f6c634300060c0033527761496e707574436f6e64756974332f77726f6e672d67656d2d666f722d70736d527761496e707574436f6e64756974332f696e76616c69642d746f2d61646472657373527761496e707574436f6e64756974332f77726f6e672d6461692d666f722d70736d0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089b78cfa322f6c5de0abceecab66aee45393cc5a000000000000000000000000481ba2d2e86a1c41427893899b5b0ceae41c6726
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063959ac484116100ad578063d663159411610071578063d663159414610478578063daddce52146104ac578063e11746391461051a578063f4b9fa751461055c578063fc2b8cc31461059057610121565b8063959ac4841461031c5780639c52a7f11461034a578063a81de4f81461038e578063bf353dbb146103d2578063d4e8be831461042a57610121565b806359ac371b116100f457806359ac371b1461021457806361e86cad1461025857806365fae35e1461029a5780637bd2bea7146102de5780638035f0ce1461031257610121565b806304bda26214610126578063131519811461015a578063344cbc681461018e578063453638ce146101bc575b600080fd5b61012e61059a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101626105c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ba600480360360208110156101a457600080fd5b81019080803590602001909291905050506105e6565b005b6101fe600480360360208110156101d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a6565b6040518082815260200191505060405180910390f35b6102566004803603602081101561022a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106be565b005b6102846004803603602081101561026e57600080fd5b81019080803590602001909291905050506107fd565b6040518082815260200191505060405180910390f35b6102dc600480360360208110156102b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610900565b005b6102e6610a3e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031a610a62565b005b6103486004803603602081101561033257600080fd5b8101908080359060200190929190505050610be2565b005b61038c6004803603602081101561036057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca2565b005b6103d0600480360360208110156103a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de0565b005b610414600480360360208110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f1e565b6040518082815260200191505060405180910390f35b6104766004803603604081101561044057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f36565b005b61048061177e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610518600480360360608110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a4565b005b6105466004803603602081101561053057600080fd5b810190808035906020019092919050505061196f565b6040518082815260200191505060405180910390f35b610564611a6f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610598611a93565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b6106a381611c13565b50565b60016020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f04942e12b9e2310f85c952df158815306377bb9f797dc3677d03be357427c53b60405160405180910390a250565b60008061082a837f000000000000000000000000000000000000000000000000000000e8d4a51000611e1d565b90506000670de0b6b3a76400006108e383600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568d4b6f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b8101908080519060200190929190505050611e1d565b816108ea57fe5b0490506108f78282611eb2565b92505050919050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b610be07f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d6020811015610bca57600080fd5b8101908080519060200190929190505050611f35565b565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b610c9f81611f35565b50565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fe25de3b40ce055247fe4ef6c00f96c8c3b6530536701ba1c48296b30b4bb0d9560405160405180910390a250565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b7f71756974546f00000000000000000000000000000000000000000000000000008214156110585780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172c565b7f746f0000000000000000000000000000000000000000000000000000000000008214156110c65780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172b565b7f70736d00000000000000000000000000000000000000000000000000000000008214156116d9577f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121b66022913960400191505060405180910390fd5b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561128f57600080fd5b505afa1580156112a3573d6000803e3d6000fd5b505050506040513d60208110156112b957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d602081101561133957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121496022913960400191505060405180910390fd5b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561145a57600080fd5b505afa15801561146e573d6000803e3d6000fd5b505050506040513d602081101561148457600080fd5b810190808051906020019092919050505060006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114ea57600080fd5b505af11580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b8101908080519060200190929190505050507f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663095ea7b38273ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a857600080fd5b505afa1580156115bc573d6000803e3d6000fd5b505050506040513d60208110156115d257600080fd5b81019080805190602001909291905050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b505050506040513d602081101561168157600080fd5b81019080805190602001909291905050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121266023913960400191505060405180910390fd5b5b5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f527761496e707574436f6e64756974332f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156118c957600080fd5b505af11580156118dd573d6000803e3d6000fd5b505050506040513d60208110156118f357600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3336d8973868f7727fbbf287f4fd9fb0237fe2696b301f8a46c563cb46d7b419836040518082815260200191505060405180910390a3505050565b6000611a4e611a28670de0b6b3a7640000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568d4b6f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e857600080fd5b505afa1580156119fc573d6000803e3d6000fd5b505050506040513d6020811015611a1257600080fd5b8101908080519060200190929190505050611eb2565b7f000000000000000000000000000000000000000000000000000000e8d4a51000611e1d565b611a6083670de0b6b3a7640000611e1d565b81611a6757fe5b049050919050565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f527761496e707574436f6e64756974332f6e6f742d6d6174650000000000000081525060200191505060405180910390fd5b611c117f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bd157600080fd5b505afa158015611be5573d6000803e3d6000fd5b505050506040513d6020811015611bfb57600080fd5b8101908080519060200190929190505050611c13565b565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061218e6028913960400191505060405180910390fd5b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b505050506040513d6020811015611d9857600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc81bfec1ac9d038698c3b15fc900dafbff3af4b9f26062f895dd08a676ec78ae826040518082815260200191505060405180910390a250565b600080821480611e3a5750828283850292508281611e3757fe5b04145b611eac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6d756c2d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115611f2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f7375622d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061216b6023913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395991276600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561209257600080fd5b505af11580156120a6573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdf8180823cf670d41db21fa54ef9909b0bd724c931fbd55fe1fcbdc655ea2fb061210d836107fd565b6040518082815260200191505060405180910390a25056fe527761496e707574436f6e64756974332f756e7265636f676e697365642d706172616d527761496e707574436f6e64756974332f77726f6e672d67656d2d666f722d70736d527761496e707574436f6e64756974332f696e76616c69642d746f2d61646472657373527761496e707574436f6e64756974332f696e76616c69642d717569742d746f2d61646472657373527761496e707574436f6e64756974332f77726f6e672d6461692d666f722d70736da2646970667358221220cb1fcba61b09cbb6aa41c9386343f9ab4832a129f3a123db3a2fee602228f12064736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089b78cfa322f6c5de0abceecab66aee45393cc5a000000000000000000000000481ba2d2e86a1c41427893899b5b0ceae41c6726
-----Decoded View---------------
Arg [0] : _dai (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [1] : _gem (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : _psm (address): 0x89B78CfA322F6C5dE0aBcEecab66Aee45393cC5A
Arg [3] : _to (address): 0x481bA2d2e86a1c41427893899B5B0cEae41c6726
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [1] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [2] : 00000000000000000000000089b78cfa322f6c5de0abceecab66aee45393cc5a
Arg [3] : 000000000000000000000000481ba2d2e86a1c41427893899b5b0ceae41c6726
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.